2016-01-20 143 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中完成。