Quali porte utilizza RabbitMQ?


135

Quali porte utilizza RabbitMQ Server o devono essere aperte sul firewall per un cluster di nodi?

Il mio /usr/lib/rabbitmq/bin/rabbitmq-envè impostato sotto il quale presumo siano necessari (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"

Non ho toccato il rabbitmq.configper impostare una personalizzazione, tcp_listenerquindi dovrebbe essere in ascolto sul 5672 predefinito.

Ecco le linee netstat rilevanti:

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

Le mie domande sono:

  1. per consentire ad altri nodi di connettersi al cluster, è necessario che tutte e 3 le porte 4369, 5672 e 35197 siano aperte?

  2. Perché 5672 non funziona su tcp e non solo su tcp6?


2
Potrei ottenere più risposte su ServerFault invece di StackOverflow ma sono contento che tu l'abbia pubblicato qui perché è esattamente quello che sto cercando!
Norman H,

Risposte:


151

PORT 4369: Erlang utilizza un demone Port Mapper (epmd) per la risoluzione dei nomi dei nodi in un cluster. I nodi devono essere in grado di raggiungersi a vicenda e il daemon del mapper delle porte affinché il cluster funzioni.

PORT 35197 impostato da inet_dist_listen_min / max I firewall devono consentire il passaggio del traffico in questo intervallo tra i nodi del cluster

Console di gestione RabbitMQ:

  • PORT 15672 per RabbitMQ versione 3.x
  • PORT 55672 per RabbitMQ pre 3.x

PORT 5672Porta principale RabbitMQ.

Per un cluster di nodi, devono essere aperte l'una all'altra su 35197, 4369e 5672.

Per tutti i server che desiderano utilizzare la coda dei messaggi, 5672è richiesto solo .


8
Sembra che la porta di gestione sia cambiata in 15672 nella serie 3.x di versioni.
kjw0188,

1
Sembra che la porta di gestione sia cambiata in 15672 in 3.x: rabbitmq.com/management.html#configuration
Greg M. Krsak

4
Sembra che le porte del clustering siano 4369 e 25672 da: rabbitmq.com/clustering.html
kixorz,

76

Quali porte utilizza RabbitMQ?

Predefinito: 5672, il manuale ha la risposta. È definito nella RABBITMQ_NODE_PORTvariabile.

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

Il numero potrebbe essere diverso se modificato da qualcuno nel file di configurazione rabbitmq:

vi /etc/rabbitmq/rabbitmq-env.conf

Chiedi al computer di dirti:

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

Oh guarda, 5672 e 15672

Usa 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

Oh guarda 5672.

usa 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)

usa nmap da un altro computer, scopri se 5672 è aperto:

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

Prova a connetterti manualmente a una porta con telnet, 5671 è CHIUSO:

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

Prova a connetterti manualmente a una porta con telnet, 5672 è APERTO:

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

Controlla il tuo firewall:

sudo cat /etc/sysconfig/iptables  

Dovrebbe dirti quali porte sono aperte:

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

Riapplica il tuo firewall:

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
Risposta eccellente. Semmai, hai esagerato un po '.
Darth Egregious,

Nel caso qualcuno si stesse chiedendo: di default rabbitmq vincolerà solo la porta 4369 all'interfaccia specificata all'interno di rabbitmq-env.conf; Se si desidera consentire tutto il traffico relativo a rabbitmq attraverso un'interfaccia specificata (come me stesso - tramite il collegamento openvpn dedicato), sarà necessario configurare rabbitmq per passare tutto l'altro traffico attraverso quell'interfaccia all'interno di rabbitmq.conf (altrimenti le altre porte non saranno vincolate per l'interfaccia di tua scelta ma ascolterai invece tutte le porte)
Greg0ry

15

Per scoprire quali porte utilizza rabbitmq :

$ epmd -names

Uscite:

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

Esegui questi come root:

lsof -i :4369
lsof -i :25672

Maggiori informazioni sulle opzioni epmd.


lsofè dolorosamente lento ... e richiede i privilegi di root. Puoi fare lo stesso, molto più rapidamente, connetstat -an | egrep '\.(4369|25672).*LISTEN'
dland

richiede davvero il root? Sono stato in grado di eseguirlo bene come un normale utente. Forse qualcosa è cambiato nelle ultime versioni?
ordina il

8

Accesso alla porta

I firewall e altri strumenti di sicurezza possono impedire a RabbitMQ di collegarsi a una porta. Quando ciò accade, RabbitMQ non si avvia. Assicurarsi che le seguenti porte possano essere aperte:

4369: epmd, un servizio di rilevamento peer utilizzato dai nodi RabbitMQ e dagli strumenti della CLI

5672, 5671: utilizzato dai client AMQP 0-9-1 e 1.0 senza e con TLS

25672: utilizzato dalla distribuzione Erlang per la comunicazione tra nodi e strumenti CLI e viene allocato da un intervallo dinamico (limitato a una singola porta per impostazione predefinita, calcolato come porta AMQP + 20000). Vedere la guida di rete per i dettagli.

15672: client API HTTP e rabbitmqadmin (solo se il plug-in di gestione è abilitato)

61613, 61614: client STOMP senza e con TLS (solo se il plug-in STOMP è abilitato)

1883, 8883: (client MQTT senza e con TLS, se il plug-in MQTT è abilitato

15674: client STOMP-over-WebSocket (solo se il plug-in Web STOMP è abilitato)

15675: client MQTT-over-WebSocket (solo se il plug-in Web MQTT è abilitato)

Documento di riferimento: https://www.rabbitmq.com/install-windows-manual.html

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.