Какие порты использует RabbitMQ?

135

Какие порты использует или должен открыть RabbitMQ Server на межсетевом экране для кластера узлов?

Мой /usr/lib/rabbitmq/bin/rabbitmq-envустановлен ниже, который, я полагаю, необходим (35197).

SERVER_ERL_ARGS="+K true +A30 +P 1048576 \   
-kernel inet_default_connect_options [{nodelay,true}] \  
-kernel inet_dist_listen_min 35197 \   
-kernel inet_dist_listen_max 35197"

Я не коснулся, rabbitmq.configчтобы установить пользовательский, tcp_listenerпоэтому он должен слушать по умолчанию 5672.

Вот соответствующие строки netstat:

tcp        0      0 0.0.0.0:4369           0.0.0.0:*           LISTEN      728/epmd 
tcp        0      0 0.0.0.0:35197          0.0.0.0:*           LISTEN      5126/beam
tcp6       0      0 :::5672                :::*                LISTEN      5126/beam

Мои вопросы:

  1. для того чтобы другие узлы могли подключаться к кластеру, должны ли быть открыты все 3 порта 4369, 5672 и 35197?

  2. Почему 5672 не работает на tcp, а не только на tcp6?

bluemalkin
источник
2
Возможно, получит больше откликов на ServerFault вместо StackOverflow, но я рад, что вы разместили его здесь, поскольку это именно то, что я ищу!
Норман Х

Ответы:

151

ПОРТ 4369: Эрланг использует демон сопоставления портов (epmd) для разрешения имен узлов в кластере. Узлы должны иметь доступ к друг другу и демону сопоставления портов, чтобы кластеризация работала.

ПОРТ 35197, установленный inet_dist_listen_min / max Брандмауэры должны разрешать трафик в этом диапазоне проходить между кластерными узлами

Консоль управления RabbitMQ:

  • ПОРТ 15672 для RabbitMQ версии 3.x
  • ПОРТ 55672 для RabbitMQ pre 3.x

PORT 5672RabbitMQ основной порт.

Для кластера узлов, они должны быть открыты друг с другом на 35197, 4369и 5672.

Для любых серверов, которые хотят использовать очередь сообщений, 5672требуется только .

bluemalkin
источник
8
Похоже, что порт управления изменился на 15672 в выпусках серии 3.x.
kjw0188
1
Похоже, что порт управления изменился на 15672 в 3.x: rabbitmq.com/management.html#configuration
Грег М. Крсак,
4
Похоже, что порты кластеризации 4369 и 25672 от: rabbitmq.com/clustering.html
kixorz
76

Какие порты использует RabbitMQ?

По умолчанию: 5672, в руководстве есть ответ. Это определено в RABBITMQ_NODE_PORTпеременной.

https://www.rabbitmq.com/configure.html#define-environment-variables

Номер может отличаться, если кто-то изменяет его в конфигурационном файле rabbitmq:

vi /etc/rabbitmq/rabbitmq-env.conf

Попросите компьютер сказать вам:

sudo nmap -p 1-65535 localhost

Starting Nmap 5.51 ( http://nmap.org ) at 2014-09-19 13:50 EDT
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00041s latency).
PORT      STATE         SERVICE
443/tcp   open          https
5672/tcp  open          amqp
15672/tcp open  unknown
35102/tcp open  unknown
59440/tcp open  unknown

О, смотри, 5672 и 15672

Используйте netstat:

netstat -lntu
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State
tcp        0      0 0.0.0.0:15672               0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:55672               0.0.0.0:*                   LISTEN
tcp        0      0 :::5672                     :::*                        LISTEN

О, смотри 5672.

используйте lsof:

eric@dev ~$ sudo lsof -i | grep beam
beam.smp  21216    rabbitmq   17u  IPv4 33148214      0t0  TCP *:55672 (LISTEN)
beam.smp  21216    rabbitmq   18u  IPv4 33148219      0t0  TCP *:15672 (LISTEN)

используйте nmap с другого компьютера, узнайте, открыт ли 5672:

sudo nmap -p 5672 10.0.1.71
Starting Nmap 5.51 ( http://nmap.org ) at 2014-09-19 13:19 EDT
Nmap scan report for 10.0.1.71
Host is up (0.00011s latency).
PORT     STATE SERVICE
5672/tcp open  amqp
MAC Address: 0A:40:0E:8C:75:6C (Unknown)    
Nmap done: 1 IP address (1 host up) scanned in 0.13 seconds

Попробуйте подключиться к порту вручную с помощью telnet, 5671 ЗАКРЫТО:

telnet localhost 5671
Trying 127.0.0.1...
telnet: connect to address 127.0.0.1: Connection refused

Попробуйте подключиться к порту вручную с помощью telnet, 5672 ОТКРЫТО:

telnet localhost 5672
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.

Проверьте ваш брандмауэр:

sudo cat /etc/sysconfig/iptables  

Он должен сказать вам, какие порты открыты:

-A INPUT -p tcp -m tcp --dport 5672 -j ACCEPT

Повторно примените свой брандмауэр:

sudo service iptables restart
iptables: Setting chains to policy ACCEPT: filter          [  OK  ]
iptables: Flushing firewall rules:                         [  OK  ]
iptables: Unloading modules:                               [  OK  ]
iptables: Applying firewall rules:                         [  OK  ]
Эрик Лещинский
источник
1
Отличный ответ. Во всяком случае, вы немного перешли за борт.
Дарт Эгредиус
В случае, если кому-то интересно - по умолчанию rabbitmq будет привязывать только порт 4369 к интерфейсу, указанному вами в rabbitmq-env.conf; Если вы хотите разрешить весь трафик, связанный с rabbitmq, через указанный интерфейс (как я - через выделенную ссылку openvpn), вам придется настроить rabbitmq для прохождения всего другого трафика через этот интерфейс в rabbitmq.conf (в противном случае другие порты не будут связаны на интерфейс по вашему выбору, но вместо этого будет прослушивать все порты)
Greg0ry
15

Чтобы узнать, какие порты использует rabbitmq :

$ epmd -names

Выходы:

epmd: up and running on port 4369 with data:
name rabbit at port 25672

Запустите их как root:

lsof -i :4369
lsof -i :25672

Подробнее об опциях epmd.

Мик
источник
lsofмучительно медленно ... и требует привилегий root. Вы можете сделать то же самое, намного быстрее, сnetstat -an | egrep '\.(4369|25672).*LISTEN'
dland
действительно ли требуется рут? Я смог запустить его нормально, как обычный пользователь. Может быть, что-то изменилось в последних версиях?
просит
8

Доступ к порту

Межсетевые экраны и другие средства безопасности могут препятствовать привязке RabbitMQ к порту. Когда это произойдет, RabbitMQ не запустится. Убедитесь, что следующие порты могут быть открыты:

4369: epmd, одноранговая служба обнаружения, используемая узлами RabbitMQ и инструментами CLI

5672, 5671: используется клиентами AMQP 0-9-1 и 1.0 без и с TLS

25672: используется распределением Erlang для связи между узлами и инструментами CLI и выделяется из динамического диапазона (по умолчанию ограничен одним портом, вычисляется как порт AMQP + 20000). См. Руководство по сети для деталей.

15672: клиенты HTTP API и rabbitmqadmin (только если включен плагин управления)

61613, 61614: клиенты STOMP без и с TLS (только если плагин STOMP включен)

1883, 8883: (MQTT-клиенты без и с TLS, если подключаемый модуль MQTT включен

15674: клиенты STOMP через WebSockets (только если плагин Web STOMP включен)

15675: клиенты MQTT-over-WebSockets (только если включен плагин Web MQTT)

Справочный документ: https://www.rabbitmq.com/install-windows-manual.html

code5
источник