Quels ports utilise RabbitMQ?

135

Quels ports le serveur RabbitMQ utilise-t-il ou doit-il ouvrir sur le pare-feu pour un cluster de nœuds?

My /usr/lib/rabbitmq/bin/rabbitmq-envest défini en dessous duquel je suppose que sont nécessaires (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"

Je n'ai pas touché au rabbitmq.configpour définir une personnalisation tcp_listener, il devrait donc écouter le 5672 par défaut.

Voici les lignes netstat pertinentes:

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

Mes questions sont:

  1. pour que les autres nœuds puissent se connecter au cluster, les 3 ports 4369, 5672 et 35197 doivent-ils être ouverts?

  2. Pourquoi 5672 ne fonctionne-t-il pas sur TCP et pas seulement sur TCP6?

bluemalkin
la source
2
Peut-être obtenir plus de réponse sur ServerFault au lieu de StackOverflow, mais je suis heureux que vous l'ayez publié ici car c'est exactement ce que je recherche!
Norman H

Réponses:

151

PORT 4369: Erlang utilise un démon de mappage de port (epmd) pour la résolution des noms de nœuds dans un cluster. Les nœuds doivent pouvoir atteindre les uns les autres et le démon mappeur de port pour que le clustering fonctionne.

PORT 35197 défini par inet_dist_listen_min / max Les pare-feu doivent permettre au trafic de cette plage de passer entre les nœuds en cluster

Console de gestion RabbitMQ:

  • PORT 15672 pour RabbitMQ version 3.x
  • PORT 55672 pour RabbitMQ pre 3.x

PORT 5672Port principal de RabbitMQ.

Pour un cluster de nœuds, ils doivent être ouverts les uns aux autres sur 35197, 4369et 5672.

Pour tous les serveurs qui souhaitent utiliser la file d'attente de messages, seul 5672est requis.

bluemalkin
la source
8
Il semble que le port de gestion soit devenu 15672 dans la série de versions 3.x.
kjw0188
1
Il semble que le port de gestion a changé pour 15672 dans 3.x: rabbitmq.com/management.html#configuration
Greg M. Krsak
4
On dirait que les ports de clustering sont 4369 et 25672 de: rabbitmq.com/clustering.html
kixorz
76

Quels ports utilise RabbitMQ?

Par défaut: 5672, le manuel a la réponse. Il est défini dans la RABBITMQ_NODE_PORTvariable.

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

Le numéro peut être différent s'il est modifié par quelqu'un dans le fichier de configuration rabbitmq:

vi /etc/rabbitmq/rabbitmq-env.conf

Demandez à l'ordinateur de vous dire:

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 regarde, 5672 et 15672

Utilisez 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 regarde 5672.

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

utilisez nmap à partir d'une autre machine, découvrez si 5672 est ouvert:

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

Essayez de vous connecter manuellement à un port avec telnet, 5671 est FERMÉ:

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

Essayez de vous connecter manuellement à un port avec telnet, 5672 est OUVERT:

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

Vérifiez votre pare-feu:

sudo cat /etc/sysconfig/iptables  

Il devrait vous dire quels ports sont ouverts:

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

Réappliquez votre pare-feu:

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
la source
1
Excellente réponse. Si quelque chose, vous êtes allé un peu trop loin.
Darth Egregious
Au cas où quelqu'un se demanderait - par défaut rabbitmq liera uniquement le port 4369 à l'interface que vous spécifiez dans rabbitmq-env.conf; Si vous souhaitez autoriser tout le trafic lié à rabbitmq via l'interface spécifiée (comme moi - via un lien openvpn dédié), vous devrez configurer rabbitmq pour qu'il passe tout le reste du trafic via cette interface dans rabbitmq.conf (sinon les autres ports ne seront pas liés à l'interface de votre choix mais écoutera sur tous les ports à la place)
Greg0ry
15

Pour connaître les ports utilisés par rabbitmq :

$ epmd -names

Les sorties:

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

Exécutez-les en tant que root:

lsof -i :4369
lsof -i :25672

En savoir plus sur les options epmd.

Mick
la source
lsofest douloureusement lent ... et nécessite des privilèges root. Vous pouvez faire la même chose, beaucoup plus rapidement, avecnetstat -an | egrep '\.(4369|25672).*LISTEN'
dland
faut-il vraiment rooter? J'ai pu l'exécuter correctement en tant qu'utilisateur normal. Peut-être que quelque chose a changé dans les versions récentes?
asgs
8

Accès au port

Les pare-feu et autres outils de sécurité peuvent empêcher RabbitMQ de se lier à un port. Lorsque cela se produit, RabbitMQ ne démarre pas. Assurez-vous que les ports suivants peuvent être ouverts:

4369: epmd, un service de découverte de pairs utilisé par les nœuds RabbitMQ et les outils CLI

5672, 5671: utilisé par les clients AMQP 0-9-1 et 1.0 sans et avec TLS

25672: utilisé par la distribution Erlang pour la communication entre les nœuds et les outils CLI et est alloué à partir d'une plage dynamique (limitée à un seul port par défaut, calculée comme port AMQP + 20000). Consultez le guide de mise en réseau pour plus de détails.

15672: clients API HTTP et rabbitmqadmin (uniquement si le plugin de gestion est activé)

61613, 61614: clients STOMP sans et avec TLS (uniquement si le plugin STOMP est activé)

1883, 8883: (clients MQTT sans et avec TLS, si le plugin MQTT est activé

15674: clients STOMP-over-WebSockets (uniquement si le plug-in Web STOMP est activé)

15675: clients MQTT-over-WebSockets (uniquement si le plugin Web MQTT est activé)

Document de référence: https://www.rabbitmq.com/install-windows-manual.html

code5
la source