1

2 つの RabbitMQ をクラスター化しようとしています。

Debian Wheezy を実行している 2 台のマシン (rabbit1 と rabbit2) がありますrabbitmq-server 2.8.4-1。(それが古いことは知っていますが、それが Debian Wheezy に付属しているものです。)

rabbit1 で実行します...

# rabbitmqctl stop_app
Stopping node rabbit@rabbit1 ...
...done.
# rabbitmqctl reset
Resetting node rabbit@rabbit1 ...
...done.
# rabbitmqctl cluster rabbit@rabbit2
Clustering node rabbit@rabbit1 with [rabbit@rabbit2] ...
Error: {no_running_cluster_nodes,[rabbit@rabbit2],[rabbit@rabbit2]}

しかし、私はこのエラーを乗り越えません。私は何が欠けていますか?

私がチェックしたこと:

  • 両方のマシンの /var/lib/rabbitmq/.erlang.cookie で同じ Cookie を使用しています。
  • エントリを追加し/etc/hosts、各マシンを他のマシンから ping できるようにしました (rabbit1、rabbit2 のみを名前として使用)。
  • iptables は空です。

アップデート:

rabbit1 から、rabbit2 の epmd が 4369 でリッスンしていることを nmap で確認しました。

root@rabbit1:~# nmap -p 1- rabbit2
...
PORT      STATE SERVICE
4369/tcp  open  epmd
5672/tcp  open  amqp
51629/tcp open  unknown

解決策:(不正行為)

アーラン Cookie でも、ホスト名でも、ファイアウォールでもありませんでした。実際、それが何だったのかはまだわかりません。しかし、RabbitMQ が提供する Debian パッケージをインストールして、最終的に RabbitMQ 3.5.4 にアップグレードしました。(私はこれが不正行為であることを知っています。) アップグレード後、セットアップをさらに変更することなく、すべてが期待どおりに機能しました。

4

1 に答える 1

0

.erlang.cookie私もこの問題に遭遇しました。両方のマシンで同じ値に設定したと確信していたにもかかわらず、私のものであることが判明しました(常に再確認することをお勧めします)。

.erlang.cookierabbitmq の起動方法によっては、別のものが使用されている可能性があります。init スクリプトで開始されている場合は、/var/lib/rabbitmq/.erlang.cookie正しいはずです。このように rabbitmq を開始した場合rabbitmq-server -detached、それはユーザーのホーム ディレクトリにある可能性があります。

-n実行すると、rabbitmqctl が使用している Cookie ハッシュを確認できます (フラグを指定しない場合に接続できる場合は、rabbitmq-server と同じになります) rabbitmqctl -n notarealnode status

ローカル ノードとリモート ノードの両方がお互いを識別し、同じ名前で自身を識別しなければならないため、ホスト名も注意が必要です。つまりrabbit1

また、これを実行している場所については言及していませんでしたが、私のものは EC2 VPC にあるため、ノード間のトラフィックを許可するようにセキュリティ グループを設定する必要がありました。EC2 にいない場合は、設定が必要な他の種類の外部ファイアウォールがある可能性があります。

于 2015-08-19T00:40:37.857 に答える