Які порти використовує 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?


2
Можливо, ви отримаєте більшу відповідь на ServerFault замість StackOverflow, але я радий, що ви розмістили його тут, оскільки це саме те, що я шукаю!
Норман Н

Відповіді:


151

PORT 4369: Ерланг використовує демона порт Mapper (epmd) для вирішення імен вузлів у кластері. Вузли повинні бути в змозі дістатися один до одного і демон демонстратора портів для кластеризації для роботи.

PORT 35197, встановлений inet_dist_listen_min / max Брандмауерами, повинен дозволити трафіку в цьому діапазоні проходити між кластерними вузлами

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

  • PORT 15672 для RabbitMQ версії 3.x
  • PORT 55672 для RabbitMQ pre 3.x

PORT 5672RabbitMQ головний порт.

Для кластера вузлів, вони повинні бути відкриті один з одним на 35197, 4369і 5672.

Для будь-яких серверів, які хочуть користуватися чергою повідомлень, 5672потрібно лише .


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 (інакше інші порти не будуть пов'язані до вашого інтерфейсу на ваш вибір, але
слухатимуть його

15

Щоб дізнатися, які порти використовує rabbitmq :

$ epmd -names

Виходи:

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

Запустити їх як корінь:

lsof -i :4369
lsof -i :25672

Більше про параметри epmd.


lsofболісно повільно ... і для цього потрібні кореневі привілеї. Ви можете зробити те ж саме, набагато швидше, з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: клієнти API HTTP та rabbitmqadmin (лише якщо увімкнено плагін управління)

61613, 61614: клієнти STOMP без та з TLS (тільки якщо увімкнено плагін STOMP)

1883, 8883: (клієнти MQTT без та з TLS, якщо плагін MQTT увімкнено

15674: Клієнти STOMP-over-WebSockets (лише якщо ввімкнено плагін Web STOMP)

15675: Клієнти MQTT over-WebSockets (лише якщо ввімкнено плагін Web MQTT)

Довідковий документ: https://www.rabbitmq.com/install-windows-manual.html

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.