2016-01-20 146 views
0

好日子,端口轉發OpenStack的實例

今天我要求所有傳入和傳出的流量將被重定向從我BareMetal實例向IP私有IP在安裝過程中最初給予DevStack。

OpenStack BareMetal Cloud Setup

如何我來到這個情況呢?我正在使用OpenStack環境,可以部署BareMetal實例(浮動IP:XXX.YYY.88.171,專用IP:10.140.82.189 [在eth0上])。用於旋轉此實例的映像是安裝了DevStack/Master的Ubuntu 14.04。此圖像上安裝了DevStack的快照最初是在本地IP爲10.140.82.125的BareMetal上創建的[在eth0上]。因此,現在無論何時使用此圖像旋轉一個實例,Baremetal OpenStack環境都會爲所有DevStack端點(10.140.82.125)中包含的IP分配一個私有IP(本例中爲10.140.82.189)。

這可以想象給了我們很多問題。

來解決這個問題,我能想到的最好的兩個方法是:

  1. 更改所有DevStack端點從10.140.82.125至10.140.82.189(有很多的問題需要考慮每個更新當遵循此路線時)

  2. 將每個端點的所有通信從10.140.82.189轉發到10.140.82.125。

我的進步:

首先我甚至無法訪問地平線儀表板(偶數儘管它在瀏覽器中鍵入時被顯示),這在本質將遵循:

XXX .YYY.88.171 - > 10.140.82.189:8800 - > 10.140.82.125:8800

出於某種原因,這會顯示實例的Horizo​​n儀表板。當我輸入我的用戶名和密碼時,我將返回

無法建立與keystone端點的連接。

在終端,我ssh到10.140.82.189,如果我要求:

openstack catalog list 
Unable to establish connection to http://10.140.82.125:5000/v2.0/tokens 

如此看來,10.140.82.189是其API在執行調用它的IP,並要求重點對10.140令牌.82.125:5000。由於IP不匹配存在問題,並且不允許我登錄。

我繼續這樣做,以執行小端口轉發如下​​:

sudo ip addr add 10.140.82.125/22 dev eth0 

sudo iptables -t nat -A PREROUTING -d 10.140.82.189 -j DNAT --to-destination 10.140.82.125 

sudo iptables -t nat -A POSTROUTING -s 10.140.82.125 -j SNAT --to-source 10.140.82.189 

現在我能夠登錄到帳戶MI並獲得終端的終端。不幸的是,在地平線內沒有從nova(http://10.140.82.125:8774)或任何其他服務中檢索到信息。試圖旋轉式實例在DevStack環境給了我下面的:

Error: Failed to get network list Connection to neutron failed: HTTPConnectionPool(host='10.140.82.125', port=9696): Max retries exceeded with url: //v2.0/networks.json?shared=False&tenant_id=bec332d4b9e6415cae0f51bb3e0de720 (Caused by NewConnectionError('<requests.packages.urllib3.connection.HTTPConnection object at 0x7fd168377b90>: Failed to establish a new connection: [Errno 111] Connection refused',)) 

名單端點:示於評論

我不斷收到錯誤,所有的地方。作爲一個實例(使用devstack屏幕):

在一瞥的註冊表:

2016-01-20 06:09:23.173 DEBUG eventlet.wsgi.server [-] (8212) accepted ('10.140.82.189', 38273) from (pid=8212) server /usr/local/lib/python2.7/dist-packages/eventlet/wsgi.py:826 

中子-SVC(Q-SVC)

2016-01-20 06:17:30.581 WARNING neutron.db.agents_db [req-48ebcdf0-126c-4dfb-b3b2-f4b48ec9704a None None] Agent healthcheck: found 4 dead agents out of 4: 
      Type  Last heartbeat host 
     DHCP agent 2016-01-13 19:08:16 gonzalo-devstack-ss 
     L3 agent 2016-01-13 19:08:08 gonzalo-devstack-ss 
    Metadata agent 2016-01-13 19:07:51 gonzalo-devstack-ss 
Open vSwitch agent 2016-01-13 19:08:16 gonzalo-devstack-ss 
2016-01-20 06:17:32.319 ERROR oslo.messaging._drivers.impl_rabbit [-] AMQP server 10.140.82.125:5672 closed the connection. Check login credentials: Socket closed 

Q-AGT:

2016-01-20 06:19:14.308 ERROR oslo.messaging._drivers.impl_rabbit [-] AMQP server 10.140.82.125:5672 closed the connection. Check login credentials: Socket closed 

而且我可以繼續下去。推進的建議是什麼?

+0

DevStack端點[鏈接](http://paste.openstack.org/show/484373/) –

回答

0

所提出的方法,除非你創建一個額外的API「誹謗者」,它使用新的IP,並用新的主機名舊主機名取代了舊的IP是不可能的。

解決這個問題是使用新的IP,並用新的主機名以前的主機名完全替代以前的IP。除了包含在mysql數據庫中所有表中的信息之外,這必須在/ etc和/ opt/stack中完成。