如何使用rabbitmqctl连接到docker容器中的rabbitmqserver?

 mobiledu2502869617 发布于 2023-02-13 12:00

我用docker来启动我的rabbitmqserver.如何使用rabbitmqctl连接到docker容器中的rabbitmqserver?

端口5672已暴露并映射到我的主机的5672端口.但我仍然收到以下错误:

Status of node rabbit@m2 ...
Error: unable to connect to node rabbit@m2: nodedown

小智.. 7

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 Port Mapper Daemon),使节点能够看到对方

等待端口55950上的传入EDP连接

等待端口5672和55672上的AMQP连接

等待端口15672上的传入HTTP管理连接

为了rabbitmqctl能够连接到RabbitMQ,您还必须转发端口55950并允许RabbitMQ实例连接到127.0.0.1:4369.这可能是RabbitMQ的EDP端口DINAMIC,所以使其静态,你可以尝试使用ERL_EPMD_PORT可变的二郎神环境变量或使用inet_dist_listen_mininet_dist_listen_max的Erlang的内核配置选项,并应用它的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.它功能更强大,设置简单.

1 个回答
  • 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 Port Mapper Daemon),使节点能够看到对方

    等待端口55950上的传入EDP连接

    等待端口5672和55672上的AMQP连接

    等待端口15672上的传入HTTP管理连接

    为了rabbitmqctl能够连接到RabbitMQ,您还必须转发端口55950并允许RabbitMQ实例连接到127.0.0.1:4369.这可能是RabbitMQ的EDP端口DINAMIC,所以使其静态,你可以尝试使用ERL_EPMD_PORT可变的二郎神环境变量或使用inet_dist_listen_mininet_dist_listen_max的Erlang的内核配置选项,并应用它的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.它功能更强大,设置简单.

    2023-02-13 12:04 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有