美好的一天,
今天我正在寻求将所有传入和传出流量从我的BareMetal实例的私有IP重定向到安装期间最初提供给DevStack的IP。
OpenStack BareMetal Cloud Setup
我是怎么来到这种情况的?我正在使用OpenStack环境,我可以部署BareMetal实例(浮动IP:XXX.YYY.88.171,私有IP:10.140.82.189 [On eth0])。用于旋转此实例的图像是安装了DevStack / Master的Ubuntu 14.04。安装了DevStack的此映像的快照最初是在具有本地IP的BareMetal上创建的:10.140.82.125 [On eth0]。因此,现在无论何时使用此图像启动实例,Baremetal OpenStack环境都会为所有DevStack端点(10.140.82.125)上包含的IP分配一个私有IP(在本例中为10.140.82.189)。
你可以想象这给我们带来了很多问题。
我能想到的解决这个问题的两个最佳方法是:
将所有DevStack端点从10.140.82.125更改为10.140.82.189(遵循此路由时,每次更新都需要考虑很多问题)
为每个端点转发从10.140.82.189到10.140.82.125的所有流量。
我的进步:
首先,我甚至无法访问地平线仪表板(即使它在浏览器中输入时显示),其实质上将遵循:
XXX.YYY.88.171 - > 10.140.82.189:8800 - > 10.140.82.125:8800
出于某种原因,这会显示Instance的Horizon仪表板。当我输入我的用户名和密码时,我将返回
无法建立与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上请求了一个令牌的keystone。由于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上使用屏幕):
on glance-registry:
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
Neutron-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 :(得分:0)
除非您创建额外的API&#34; traducer&#34;否则建议的方法是不可能的。用新IP替换旧IP,用新主机名替换旧主机名。
此问题的解决方案是使用新IP替换先前的IP以及使用新主机名替换先前的主机名。除了mysql数据库中所有表中包含的信息之外,这必须在/ etc和/ opt / stack中完成。