如何使用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_PORTvariables,或者使用Erlang内核configuration选项的 inet_dist_listen_mininet_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防火墙。 一切开始工作。

Interesting Posts