良い一日、
今日、ベアメタル インスタンスのプライベート IP から、インストール中に DevStack に最初に指定された IP にすべての着信および発信トラフィックをリダイレクトしようとしています。
どうやってこの状況になったの?ベアメタル インスタンスをデプロイできる OpenStack 環境で作業しています (フローティング IP:XXX.YYY.88.171、プライベート IP: 10.140.82.189 [eth0 上])。このインスタンスをスピンするために使用されるイメージは、DevStack /Master がインストールされた Ubuntu 14.04 です。DevStack がインストールされたこのイメージのスナップショットは、ローカル IP が 10.140.82.125 [on eth0] の BareMetal で最初に作成されました。したがって、このスピンアップ インスタンスをこのイメージで使用するたびに、Baremetal OpenStack 環境は、すべての DevStack のエンドポイントに含まれる IP (10.140.82.125) とは異なるプライベート IP (この場合は 10.140.82.189) を割り当てます。
ご想像のとおり、これは私たちに多くの問題をもたらします。
私が考えることができるこの問題を解決するための2つの最良のアプローチは次のとおりです。
すべての DevStack エンドポイントを 10.140.82.125 から 10.140.82.189 に変更します (このルートをたどる場合、各更新で考慮すべき多くの問題があります)
各エンドポイントの 10.140.82.189 から 10.140.82.125 へのすべてのトラフィックを転送します。
私の進捗状況:
最初に、Horizon ダッシュボードにアクセスすることさえできませんでした (ブラウザに入力すると表示されましたが)。
XXX.YYY.88.171 --> 10.140.82.189:8800 --> 10.140.82.125:8800
何らかの理由で、インスタンスの Horizon ダッシュボードが表示されます。ユーザー名とパスワードを入力すると、次のように返されます
keystone エンドポイントへの接続を確立できません。
リクエストした場合、10.140.82.189 に ssh するターミナルで:
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 アカウントにログインして、ターミナルでエンドポイントを取得できるようになりました。残念ながら、Horizon 内では 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 で screen を使用):
一目でレジストリ:
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
そして、私は続けることができました。前進するための推奨事項は何ですか?