Как использовать rabbitmqctl для подключения к rabbitmqserver в контейнере докеров?

Я использовал докер для запуска моего rabbitmqserver. Как я могу использовать rabbitmqctl для подключения к rabbitmqserver в контейнере докеров?

Порт 5672 был открыт и сопоставлен с портом 5672 моего хоста. Но я все равно получаю следующую ошибку:

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

person waitingkuo    schedule 03.12.2013    source источник


Ответы (5)


rabbitmqctl использует распределенный протокол Erlang (EDP) для связи с RabbitMQ. Порт 5672 обеспечивает протокол AMQP. Вы можете исследовать порт EDP, который использует ваш экземпляр RabbitMQ:

$ 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:

  • подключен к EPMD (Erlang Port Mapper Daemon) на 127.0.0.1:4369, чтобы узлы могли видеть каждый Другие
  • ожидает входящего EDP-соединения на порту 55950
  • ожидает подключения AMQP на портах 5672 и 55672
  • ожидает входящего HTTP-соединения через порт 15672

Чтобы rabbitmqctl мог подключаться к RabbitMQ, вам также необходимо перенаправить порт 55950 и разрешить экземпляру RabbitMQ подключаться к 127.0.0.1:4369. Возможно, что порт RabbitMQ EDP динамический, поэтому, чтобы сделать его статическим, вы можете попробовать использовать ERL_EPMD_PORT переменную переменных среды Erlang или используйте inet_dist_listen_min и inet_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. Он более функциональный и простой в настройке.

person sysoff    schedule 04.12.2013
comment
Как можно разрешить экземпляру RabbitMQ подключиться к 127.0.0.1:4369 с помощью Docker? Пока у меня есть следующие возможности: -p 55950:55950 -p 5672:5672 -p 15672:15672 -e ERL_EPMD_PORT=55950 при запуске контейнера докеров, и у меня epmd запущен на хосте. Но все же я не могу подключиться с rabbitmqctl к экземпляру Rabbit в контейнере. - person adamw; 24.06.2014

Предположим, ваш контейнер называется rabbitmq и работает:

docker exec rabbitmq rabbitmqctl start_app
person Jonathan    schedule 26.11.2014

Я получил эту ошибку при настройке RabbitMQ в кластере на машине Ubuntu и Fedora:

el@apollo:/etc/rabbitmq$ sudo rabbitmqctl join_cluster [email protected]
Clustering node rabbit@apollo with '[email protected]' ...
Error: unable to connect to nodes ['[email protected]']: nodedown

DIAGNOSTICS
===========

attempted to contact: ['[email protected]']

[email protected]:
  * 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==

Мне удалось устранить эту ошибку, открыв порт 4369 и 59984 на компьютере 192.168.1.8, который является одним из подчиненных узлов кластера:

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
person Eric Leschinski    schedule 02.09.2014
comment
Вы можете объяснить, почему помогло открытие порта 59984? - person kev; 19.12.2017

Порт 4369 не был включен на брандмауэре. Когда я выключил брандмауэр. Все заработало.

person pranjaljain    schedule 10.08.2016

Просто введите docker exec -t rabbitmq sh, и вы получите доступ к терминалу вашей докерной среды.

Как только вы войдете, введите rabbitmqctl, чтобы увидеть, работает ли он.

Надеюсь, это поможет вам.

person Fausta Leonardo    schedule 22.04.2020