1

個々のマシンごとに Docker を使用して別のマシンにノードを持つ RabbitMQ クラスターを作成しようとしていますが、ノードの接続に問題があります。rabbitMQ ホスト名を取得すると、コンテナーのみが参照されます。そのため、ノードをクラスターに参加させようとすると、ドメインが見つからないために失敗します。RabbitMQ ホスト名に実際のサーバーの IP をどのように伝えることができますか?

あるサーバーのノードを別の外部サーバーのノードに接続しようとしています。どちらも EC2 インスタンスですが、外部から接続できる EC2 インスタンス ホストに関する RabbitMQ ホスト名にはどのような情報が必要ですか?

ip-172-31-12-135.us-west-1.compute.internal を使用すると失敗します...

4

1 に答える 1

3

クラスターを作成するには、クラスターを形成するすべての rabbitmq ノードにノード名 (ホスト名) でアクセスできる必要があります。オプションを使用して各 docker コンテナーのホスト名を指定し--hostname、他のすべてのコンテナーの /etc/host エントリを追加する必要があります。これは、--add-hostオプションを使用するか、/etc/hosts ファイルを手動で編集することによって実行できます。以下は、docker コンテナー (rabbitmq:3-management イメージ) を使用した 3 つの rabbitmq ノード クラスターの例です。

まず、IP を割り当てることができるようにネットワークを作成しますdocker network create --subnet=172.18.0.0/16 mynet1。次のことを行います。

  • rab1con、rab2con、rab3con という名前の 3 つの Docker コンテナ
  • IP はそれぞれ 172.18.0.11 、-12 および -13 になります。
  • それぞれのホスト名は、それぞれ rab1、rab2、および rab3 になります。
  • すべてが同じ erlang cookie を共有する必要があります

最初のものをスピンアップ

docker run -d --net mynet1 --ip 172.18.0.11 --hostname rab1 --add-host rab2:172.18.0.12 --add-host rab3:172.18.0.13 --name rab1con -e RABBITMQ_ERLANG_COOKIE='secret cookie here' rabbitmq:3-management

二つ目

docker run -d --net mynet1 --ip 172.18.0.12 --hostname rab2 --add-host rab1:172.18.0.11 --add-host rab3:172.18.0.13 --name rab2con -e RABBITMQ_ERLANG_COOKIE='secret cookie here' rabbitmq:3-management

最後の一つ

docker run -d --net mynet1 --ip 172.18.0.13 --hostname rab3 --add-host rab2:172.18.0.12 --add-host rab1:172.18.0.11 --name rab3con -e RABBITMQ_ERLANG_COOKIE='secret cookie here' rabbitmq:3-management

contaner rab2con よりも

rabbitmqctl stop_app
rabbitmqctl join_cluster rabbit@rab1
rabbitmqctl start_app

rab3conでも同じで、それだけです。

編集: 質問は milti-host docker ネットワークに関するものなので、オーバーレイ ネットワークを使用する必要があります。

于 2016-02-26T14:00:16.707 に答える