2017-01-25 7 views
1

私はSwarm ModeサービスでRabbitMQを実行する3つの複製コンテナを持っています。各コンテナはRabbitMQノードとして動作し、RabbitMQクラスタを作成します。これは、次のようなdocker service createは次のとおりです。私は成功し、その後、スレーブノードのそれぞれにrabbitmqctl <hostname> join_clusterを使用してRabbitMQのクラスタを作成することができるよRabbitMQクラスタはDockerのコンテナの再起動をどのように認識できますか?

docker service create -e RABBITMQ_ERLANG_COOKIE='mysecretcookie' --replicas 4 --network rnet -p 15672:15672 -p 5672:5672 rabbitmq 

私の問題は、スワンノードがダウンすると、Dockerは別のノードで新しいコンテナを開始しますが、コンテナのホスト名は違うことです。

RabbitMQはRabbitMQクラスタノードを識別するためにホスト名を使用するため、新しいコンテナの新しいホスト名を認識しないため、元のノードが無期限にダウンしているとみなされます。

Docker 1.13の新しいテンプレート機能を使用して、--hostname="{{.Node.ID}}-{{.Service.Name}}"docker service createに指定して静的ホスト名を作成できるようにしました。ただし、このカスタムホスト名に基づいてコンテナを現在検出することはできないため、この方法でRabbitMQクラスタを作成することはできません。

Dockerが新しいコンテナの実行を開始した後、RabbitMQがクラスタノードに自動的に再結合するようにしたいと考えています。これは可能ですか?

答えて

0

I want to be able to have RabbitMQ automatically re-join a cluster node after Docker starts running a new container. Is this possible?

私はあなたがre-join a cluster node existing in the newly started docker containerを意味すると仮定します。

答えはありません。定義によって、は再結合しないでしょう。しかし、これは単にrabbitmqの観点から、これは単にネットワーク内の新しいマシン(コンピュータ、VM、Dokcer ...)です。

+0

はい、そうです。謝罪、それは明らかではない。基本的には、Docker swarm replicaとRabbitMQクラスタノードをホスト/ swarmノードの障害の間で同期させたいのですが、失敗したRabbitMQノードはRabbitMQによって「Node not running」と表示されているので、これらをDockerがノードの障害を発見した場合に新しいコンテナを起動する機能と併用してバックアップする – AmazingBergkamp

+0

おそらく、これを行うドッカーコンテナ管理ソフトウェアがあるか、またはスクリプトを作成して再起動することができます。自動的に開始するには、あらかじめ定義されたクラスタに参加する独自のイメージを作成することができます。 – cantSleepNow

関連する問題