1

ウサギをクラスター化する際にサーバーに問題があります。

ec2 で 2 つのノードを起動します。

最初に起動したノードでこれを行います。

rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app

I boot another node.
sudo service rabbitmq-server stop
#Copy cookie from the first server booted
sudo su - -c 'echo -n "cookie" > /var/lib/rabbitmq/.erlang.cookie'
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl cluster rabbit@server1

1) サーバー 1 が実行されている 2) どのポートを開く必要があるか? 私は22、4369、5672を持っています

sudo rabbitmqctl cluster rabbit@aws-rabbit-server-east-development-20121102162143
Clustering node 'rabbit@aws-rabbit-server-east-development-20121103033005' with ['rabbit@aws-rabbit-server-east-development-20121102162143'] ...
Error: {no_running_cluster_nodes,['rabbit@aws-rabbit-server-east-development-20121102162143'],
                                 ['rabbit@aws-rabbit-server-east-development-20121102162143']}

ドキュメントに何が欠けている可能性がありますか、何が欠けていますか?

4

1 に答える 1

6

2 台の Windows マシンを搭載した EC2 でも同様の問題がありました。最終的には機能しましたが、正しい方法で実行したかどうかわからないため、より良い解決策があるかもしれません。

私が見つけた問題は、クラスタ化しようとしたときに 2 つのノードがお互いを認識できないことでした。Rabbit ノードを起動するたびに、ポート番号が動的に割り当てられているように見えました。

これにより、セキュリティグループでどのポートを開くかを知ることが非常に難しくなるため、これを解決するために、Rabbit がポートを割り当てるときに選択するポートの範囲を制限しました。これを各ノードで 1 つのポートの範囲に制限したので、どのポートが割り当てられているかを常に把握できます。

これを行う最も簡単な方法は、sbin\rabbitmq-service.bat ファイルを編集することでした。

行を見つけます-kernel inet_default_connect_options "[{nodelay,true}]" ^

下のファイルに次の 2 行を追加します。

-kernel inet_dist_listen_min ##### ^ -kernel inet_dist_listen_max ##### ^

##### を選択したポート番号に置き換えます。

したがって、次のポートを開く必要があります。

5672 - RabbitMQ のリスニング ポート

4369 - Erlang ポート マッパー デーモン

##### - Erlang ノードが通信するために選択したポート番号

Erlang は FQDN を認識しないため、すべてのサーバーのホスト ファイルを変更して、すべてのサーバーがすべての Erlang ノード名を IP アドレスに解決できるようにする必要がある場合があります。

123.123.123.111 ノード 1

123.123.123.222 ノード 2

これが完了すると、各ノードを他のノードから見ることができるはずです。これを行うには、コマンド ラインから次のように呼び出します (rabbit@NODE2 を表示するノードに置き換えます)。

rabbitmqctl status -n rabbit@NODE2

私は専門家ではありませんが、これでうまくいくことがわかりました。

于 2012-12-07T12:01:35.617 に答える