0

良い一日、

今日、ベアメタル インスタンスのプライベート IP から、インストール中に DevStack に最初に指定された IP にすべての着信および発信トラフィックをリダイレクトしようとしています。

OpenStack ベアメタル クラウドのセットアップ

どうやってこの状況になったの?ベアメタル インスタンスをデプロイできる 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つの最良のアプローチは次のとおりです。

  1. すべての DevStack エンドポイントを 10.140.82.125 から 10.140.82.189 に変更します (このルートをたどる場合、各更新で考慮すべき多くの問題があります)

  2. 各エンドポイントの 10.140.82.189 から 10.140.82.125 へのすべてのトラフィックを転送します。

私の進捗状況:

最初に、Horizo​​n ダッシュボードにアクセスすることさえできませんでした (ブラウザに入力すると表示されましたが)。

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

何らかの理由で、インスタンスの Horizo​​n ダッシュボードが表示されます。ユーザー名とパスワードを入力すると、次のように返されます

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 アカウントにログインして、ターミナルでエンドポイントを取得できるようになりました。残念ながら、Horizo​​n 内では 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

そして、私は続けることができました。前進するための推奨事項は何ですか?

4

1 に答える 1

0

古い IP を新しい IP に置き換え、古いホスト名を新しいホスト名に置き換える追加の API "traducer" を作成しない限り、提案されたアプローチは不可能です。

この問題の解決策は、以前の IP を新しい IP に、以前のホスト名を新しいホスト名に完全に置き換えることです。これは、mysql データベースのすべてのテーブルに含まれる情報に加えて、/etc および /opt/stack で行う必要があります。

于 2016-02-04T03:22:18.563 に答える