私はdockerを使ってrabbitmqserverを起動しました。rabbitmqctl を使用して、docker コンテナー内の rabbitmqserver に接続するにはどうすればよいですか?
ポート 5672 が公開されており、ホストの 5672 ポートにマップされています。しかし、私はまだ次のエラーが発生します:
Status of node rabbit@m2 ...
Error: unable to connect to node rabbit@m2: nodedown
私はdockerを使ってrabbitmqserverを起動しました。rabbitmqctl を使用して、docker コンテナー内の rabbitmqserver に接続するにはどうすればよいですか?
ポート 5672 が公開されており、ホストの 5672 ポートにマップされています。しかし、私はまだ次のエラーが発生します:
Status of node rabbit@m2 ...
Error: unable to connect to node rabbit@m2: nodedown
rabbitmqctl
Erlang Distributed Protocol (EDP) を使用して RabbitMQ と通信します。ポート 5672 は AMQP プロトコルを提供します。RabbitMQ インスタンスが使用する EDP ポートを調べることができます。
$ netstat -uptan | grep beam
tcp 0 0 0.0.0.0:55950 0.0.0.0:* LISTEN 31446/beam.smp
tcp 0 0 0.0.0.0:15672 0.0.0.0:* LISTEN 31446/beam.smp
tcp 0 0 0.0.0.0:55672 0.0.0.0:* LISTEN 31446/beam.smp
tcp 0 0 127.0.0.1:55096 127.0.0.1:4369 ESTABLISHED 31446/beam.smp
tcp6 0 0 :::5672 :::* LISTEN 31446/beam.smp
つまり、RabbitMQ:
RabbitMQ に接続できるrabbitmqctl
ようにするには、ポート 55950 を転送し、RabbitMQ インスタンスが 127.0.0.1:4369 に接続できるようにする必要があります。RabbitMQ EDP ポートが動的である可能性があるため、静的にするためにERL_EPMD_PORT
、Erlang 環境変数の変数を使用するかinet_dist_listen_min
、Erlang カーネル構成オプションinet_dist_listen_max
を使用して、 RabbitMQ 環境変数で適用することができます-export RABBITMQ_CONFIG_FILE="/path/to/my_rabbitmq.conf
my_rabbitmq.conf
[{kernel,[{inet_dist_listen_min, 55950},{inet_dist_listen_min, 55950}]}].
または、 RabbitMQ Management Pluginを使用できます。より機能的で、セットアップが簡単です。
ubuntu および fedora マシンのクラスターで RabbitMQ をセットアップしようとすると、次のエラーが発生しました。
el@apollo:/etc/rabbitmq$ sudo rabbitmqctl join_cluster rabbit@192.168.1.8
Clustering node rabbit@apollo with 'rabbit@192.168.1.8' ...
Error: unable to connect to nodes ['rabbit@192.168.1.8']: nodedown
DIAGNOSTICS
===========
attempted to contact: ['rabbit@192.168.1.8']
rabbit@192.168.1.8:
* unable to connect to epmd (port 4369) on 192.168.1.8: address
(cannot connect to host/port)
current node details:
- node name: rabbitmqctl7233@apollo
- home dir: /var/lib/rabbitmq
- cookie hash: g0tS9zEdo7OEDSZaDTGirA==
クラスタのスレーブ ノードの 1 つである 192.168.1.8 マシンで 4369 および 59984 ポートを開くことで、このエラーを解消できました。
el@defiant ~ $ su -
Password:
[root@defiant ~]# iptables -I INPUT -p tcp --dport 4369 --syn -j ACCEPT
[root@defiant ~]# iptables -I INPUT -p tcp --dport 59984 --syn -j ACCEPT