如何使用rabbitmqctl连接到docker容器中的rabbitmqserver?
我用docker来启动我的rabbitmqserver。 如何使用rabbitmqctl连接到docker容器中的rabbitmqserver?
端口5672已被暴露并映射到我的主机的5672端口。 但是我仍然得到以下错误:
Status of node rabbit@m2 ... Error: unable to connect to node rabbit@m2: nodedown
rabbitmqctl
使用Erlang分布式协议 (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:
- 连接到127.0.0.1:4369上的EPMD(Erlang端口映射器守护进程) ,使节点能够看到对方
- 等待端口55950上的传入EDP连接
- 等待端口5672和55672上的AMQP连接
- 等待端口15672上的传入HTTPpipe理连接
要使rabbitmqctl
能够连接到RabbitMQ,还必须转发端口55950,并允许RabbitMQ实例连接到127.0.0.1:4369。 RabbitMQ EDP端口有可能是dynamic的,所以为了使它成为静态,可以尝试使用Erlang环境variables的 ERL_EPMD_PORT
variables,或者使用Erlang内核configuration选项的 inet_dist_listen_min
和inet_dist_listen_max
,并将其应用于RabbitMQ环境variables – export RABBITMQ_CONFIG_FILE="/path/to/my_rabbitmq.conf
my_rabbitmq.conf
[{kernel,[{inet_dist_listen_min, 55950},{inet_dist_listen_min, 55950}]}].
或者你可以使用RabbitMQpipe理插件 。 这是更多的function和简单的设置。
假设您的容器被称为rabbitmq
并正在运行:
docker exec rabbitmq rabbitmqctl start_app
Create a rabbitmq environment variables config file at /etc/rabbitmq/rabbitmq-env.conf Add NODENAME=rabbit@localhost to it (note that just localhost didn't work) sudo service rabbitmq-server start
这个对我有用!!
我得到这个错误试图在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==
我可以通过打开集群的一个从属节点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
端口4369未在防火墙上启用。 当我closures防火墙。 一切开始工作。