¿Qué puertos usa RabbitMQ?

135

¿Qué puertos usa o necesita tener RabbitMQ Server abierto en el firewall para un grupo de nodos?

Mi /usr/lib/rabbitmq/bin/rabbitmq-envse establece debajo de lo que supongo que son necesarios (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"

No he tocado el rabbitmq.configpara configurar una costumbre, tcp_listenerpor lo que debería estar escuchando en el 5672 predeterminado.

Estas son las líneas de netstat relevantes:

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

Mis preguntas son:

  1. para que otros nodos puedan conectarse al clúster, ¿deben estar abiertos los 3 puertos 4369, 5672 y 35197?

  2. ¿Por qué 5672 no se ejecuta en tcp y no solo tcp6?

bluemalkin
fuente
2
Podría obtener más respuesta en ServerFault en lugar de StackOverflow, pero me alegro de que lo haya publicado aquí, ¡ya que es exactamente lo que estoy buscando!
Norman H

Respuestas:

151

PUERTO 4369: Erlang utiliza un Port Mapper Daemon (epmd) para la resolución de nombres de nodo en un clúster. Los nodos deben poder comunicarse entre sí y con el demonio mapeador de puertos para que la agrupación funcione.

PUERTO 35197 establecido por inet_dist_listen_min / max Los firewalls deben permitir que el tráfico en este rango pase entre nodos agrupados

Consola de administración RabbitMQ:

  • PUERTO 15672 para RabbitMQ versión 3.x
  • PUERTO 55672 para RabbitMQ pre 3.x

PUERTO 5672RabbitMQ puerto principal.

Para un grupo de nodos, deben estar abiertos entre sí en 35197, 4369y 5672.

Para cualquier servidor que quiera usar la cola de mensajes, solo 5672es obligatorio.

bluemalkin
fuente
8
Parece que el puerto de administración ha cambiado a 15672 en la serie 3.x de lanzamientos.
kjw0188
1
Parece que el puerto de administración ha cambiado a 15672 en 3.x: rabbitmq.com/management.html#configuration
Greg M. Krsak
44
Parece que los puertos de agrupación son 4369 y 25672 de: rabbitmq.com/clustering.html
kixorz
76

¿Qué puertos está usando RabbitMQ?

Predeterminado: 5672, el manual tiene la respuesta. Se define en la RABBITMQ_NODE_PORTvariable.

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

El número puede ser diferente si alguien lo cambia en el archivo de configuración rabbitmq:

vi /etc/rabbitmq/rabbitmq-env.conf

Pídale a la computadora que le diga:

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 mira, 5672 y 15672

Use 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 mira 5672.

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

use nmap desde una máquina diferente, averigüe si 5672 está abierto:

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

Intente conectarse a un puerto manualmente con telnet, 5671 está CERRADO:

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

Intente conectarse a un puerto manualmente con telnet, 5672 está ABIERTO:

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

Comprueba tu cortafuegos:

sudo cat /etc/sysconfig/iptables  

Debería decirle qué puertos se abren:

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

Vuelva a aplicar su 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  ]
Eric Leschinski
fuente
1
Excelente respuesta En todo caso, te has pasado un poco por la borda.
Darth Egregious
En caso de que alguien se lo preguntara, de forma predeterminada, rabbitmq solo vinculará el puerto 4369 a la interfaz que especifique dentro de rabbitmq-env.conf; Si desea permitir todo el tráfico relacionado con rabbitmq a través de la interfaz especificada (como yo, a través del enlace dedicado openvpn), deberá configurar rabbitmq para pasar todo el tráfico a través de esa interfaz dentro de rabbitmq.conf (de lo contrario, otros puertos no estarán vinculados a la interfaz de su elección, pero escuchará en todos los puertos)
Greg0ry
15

Para averiguar qué puertos utiliza rabbitmq :

$ epmd -names

Salidas:

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

Ejecute estos como root:

lsof -i :4369
lsof -i :25672

Más sobre las opciones de epmd.

Mick
fuente
lsofes dolorosamente lento ... y requiere privilegios de root. Usted puede hacer lo mismo, mucho más rápidamente, connetstat -an | egrep '\.(4369|25672).*LISTEN'
Dland
¿realmente requiere root? Pude ejecutarlo bien como usuario normal. ¿Quizás algo cambió en las versiones recientes?
pide el
8

Acceso al puerto

Los firewalls y otras herramientas de seguridad pueden evitar que RabbitMQ se vincule a un puerto. Cuando eso sucede, RabbitMQ no se iniciará. Asegúrese de que se puedan abrir los siguientes puertos:

4369: epmd, un servicio de descubrimiento de pares utilizado por los nodos RabbitMQ y las herramientas CLI

5672, 5671: utilizado por los clientes AMQP 0-9-1 y 1.0 sin y con TLS

25672: utilizado por la distribución Erlang para la comunicación entre nodos y herramientas de CLI y se asigna desde un rango dinámico (limitado a un solo puerto por defecto, calculado como puerto AMQP + 20000). Consulte la guía de redes para más detalles.

15672: clientes API HTTP y rabbitmqadmin (solo si el complemento de administración está habilitado)

61613, 61614: clientes STOMP sin y con TLS (solo si el complemento STOMP está habilitado)

1883, 8883: (clientes MQTT sin y con TLS, si el complemento MQTT está habilitado

15674: clientes STOMP-over-WebSockets (solo si el complemento Web STOMP está habilitado)

15675: clientes MQTT-over-WebSockets (solo si el complemento Web MQTT está habilitado)

Documento de referencia: https://www.rabbitmq.com/install-windows-manual.html

código5
fuente