Z jakich portów korzysta RabbitMQ?

135

Jakie porty używa RabbitMQ Server lub musi być otwarte na zaporze dla klastra węzłów?

Mój /usr/lib/rabbitmq/bin/rabbitmq-envjest ustawiony poniżej, który zakładam, że jest potrzebny (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"

Nie dotykałem tego, rabbitmq.configaby ustawić niestandardowy, tcp_listenerwięc powinien słuchać domyślnego 5672.

Oto odpowiednie wiersze 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

Moje pytania to:

  1. aby inne węzły mogły łączyć się z klastrem, czy wszystkie 3 porty 4369, 5672 i 35197 muszą być otwarte?

  2. Dlaczego 5672 nie działa na tcp, a nie tylko na tcp6?

bluemalkin
źródło
2
Może uzyskać więcej odpowiedzi na ServerFault zamiast StackOverflow, ale cieszę się, że opublikowałeś go tutaj, ponieważ jest to dokładnie to, czego szukam!
Norman H

Odpowiedzi:

151

PORT 4369: Erlang wykorzystuje demona mapowania portów (epmd) do rozpoznawania nazw węzłów w klastrze. Węzły muszą być w stanie dotrzeć do siebie nawzajem i do demona mapowania portów, aby klastrowanie działało.

PORT 35197 ustawiony przez inet_dist_listen_min / max Zapory sieciowe muszą zezwalać na ruch z tego zakresu na przechodzenie między węzłami w klastrze

Konsola zarządzania RabbitMQ:

  • PORT 15672 dla RabbitMQ w wersji 3.x
  • PORT 55672 dla RabbitMQ pre 3.x

5672Główny port PORT RabbitMQ.

Na węzłach klastra, muszą być otwarte, aby wzajemnie 35197, 4369a 5672.

W przypadku wszystkich serwerów, które chcą korzystać z kolejki komunikatów, 5672jest to tylko wymagane.

bluemalkin
źródło
8
Wygląda na to, że port zarządzania zmienił się na 15672 w serii wydań 3.x.
kjw0188
1
Wygląda na to, że port zarządzania zmienił się na 15672 w 3.x: rabbitmq.com/management.html#configuration
Greg M. Krsak
4
Wygląda na to, że porty klastrowe to 4369 i 25672 z: rabbitmq.com/clustering.html
kixorz
76

Z jakich portów korzysta RabbitMQ?

Domyślnie: 5672, instrukcja zawiera odpowiedź. Jest zdefiniowane w RABBITMQ_NODE_PORTzmiennej.

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

Numer może być inny, jeśli zostanie zmieniony przez kogoś w pliku konfiguracyjnym rabbitmq:

vi /etc/rabbitmq/rabbitmq-env.conf

Poproś komputer, aby powiedział:

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

O spójrz, 5672 i 15672

Użyj 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

Och, spójrz 5672.

użyj 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)

użyj nmap z innego komputera, sprawdź, czy 5672 jest otwarty:

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

Spróbuj połączyć się z portem ręcznie za pomocą telnetu, 5671 jest ZAMKNIĘTY:

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

Spróbuj połączyć się z portem ręcznie za pomocą telnetu, 5672 jest OTWARTY:

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

Sprawdź swoją zaporę:

sudo cat /etc/sysconfig/iptables  

Powinien powiedzieć, które porty są otwarte:

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

Ponownie zastosuj zaporę:

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  ]
Eric Leschinski
źródło
1
Doskonała odpowiedź. Jeśli już, trochę przesadziłeś.
Darth Egregious
W przypadku, gdy ktoś się zastanawiał - domyślnie rabbitmq wiąże port 4369 tylko z interfejsem podanym w rabbitmq-env.conf; Jeśli chcesz zezwolić na cały ruch związany z rabbitmq przez określony interfejs (tak jak ja - przez dedykowane łącze openvpn), będziesz musiał skonfigurować rabbitmq tak, aby przepuszczał cały inny ruch przez ten interfejs w rabbitmq.conf (w przeciwnym razie inne porty nie będą związane do wybranego interfejsu, ale zamiast tego będzie nasłuchiwał na wszystkich portach)
Greg0ry
15

Aby dowiedzieć się, jakich portów używa Rabbitmq :

$ epmd -names

Wyjścia:

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

Uruchom je jako root:

lsof -i :4369
lsof -i :25672

Więcej informacji o opcjach epmd.

Mick
źródło
lsofjest boleśnie powolny ... i wymaga uprawnień roota. Możesz zrobić to samo, znacznie szybciej, znetstat -an | egrep '\.(4369|25672).*LISTEN'
2016
czy to naprawdę wymaga rootowania? Byłem w stanie uruchomić to dobrze jako zwykły użytkownik. Może coś się zmieniło w ostatnich wersjach?
asgs
8

Dostęp do portu

Zapory i inne narzędzia zabezpieczające mogą uniemożliwić RabbitMQ powiązanie z portem. W takim przypadku RabbitMQ nie uruchomi się. Upewnij się, że można otworzyć następujące porty:

4369: epmd, usługa wykrywania równorzędnego używana przez węzły RabbitMQ i narzędzia CLI

5672, 5671: używane przez klientów AMQP 0-9-1 i 1,0 bez i z TLS

25672: używany przez dystrybucję Erlang do komunikacji między węzłami i narzędziami CLI i jest przydzielany z zakresu dynamicznego (domyślnie ograniczony do jednego portu, obliczany jako port AMQP + 20000). Szczegółowe informacje można znaleźć w przewodniku po sieci.

15672: Klienci HTTP API i rabbitmqadmin (tylko jeśli wtyczka zarządzania jest włączona)

61613, 61614: klienci STOMP bez i z TLS (tylko jeśli wtyczka STOMP jest włączona)

1883, 8883: (klienci MQTT bez i z TLS, jeśli wtyczka MQTT jest włączona

15674: Klienci STOMP-over-WebSockets (tylko jeśli wtyczka Web STOMP jest włączona)

15675: klienci MQTT-over-WebSockets (tylko jeśli włączona jest wtyczka Web MQTT)

Dokument referencyjny: https://www.rabbitmq.com/install-windows-manual.html

kod5
źródło