Quais portas o RabbitMQ usa?

135

Quais portas o RabbitMQ Server usa ou precisa abrir no firewall para um cluster de nós?

Meu /usr/lib/rabbitmq/bin/rabbitmq-envé definido abaixo do qual suponho que sejam necessários (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"

Não toquei no rabbitmq.configpara definir um costume, por tcp_listenerisso ele deve estar ouvindo o 5672 padrão.

Aqui estão as linhas relevantes do 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

Minhas perguntas são:

  1. para que outros nós possam se conectar ao cluster, todas as 3 portas 4369, 5672 e 35197 precisam estar abertas?

  2. Por que o 5672 não está executando no tcp e não apenas no tcp6?

bluemalkin
fonte
2
Pode obter mais resposta no ServerFault em vez do StackOverflow, mas estou feliz que você tenha postado aqui, pois é exatamente o que estou procurando!
Norman H.

Respostas:

151

PORT 4369: Erlang utiliza um daemon de mapeador de portas (epmd) para resolução de nomes de nós em um cluster. Os nós devem poder alcançar um ao outro e o daemon do mapeador de portas para que o cluster funcione.

PORT 35197 definido por inet_dist_listen_min / max Os firewalls devem permitir que o tráfego nesse intervalo passe entre nós em cluster

Console de Gerenciamento RabbitMQ:

  • PORT 15672 para RabbitMQ versão 3.x
  • PORT 55672 para RabbitMQ pré 3.x

PORTA 5672Porta principal RabbitMQ.

Para um cluster de nós, eles devem estar abertos entre si em 35197, 4369e 5672.

Para todos os servidores que desejam usar a fila de mensagens, apenas 5672é necessário.

bluemalkin
fonte
8
Parece que a porta de gerenciamento mudou para 15672 na série 3.x de lançamentos.
kjw0188
1
Ele se parece com a porta de gerenciamento mudou para 15672 em 3.x: rabbitmq.com/management.html#configuration
Greg M. Krsak
4
Looks como os portos de clustering são 4369 e 25672 a partir de: rabbitmq.com/clustering.html
kixorz
76

Quais portas o RabbitMQ está usando?

Padrão: 5672, o manual tem a resposta. É definido na RABBITMQ_NODE_PORTvariável

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

O número pode ser diferente se alterado por alguém no arquivo de configuração rabbitmq:

vi /etc/rabbitmq/rabbitmq-env.conf

Peça ao computador para lhe dizer:

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, olha, 5672 e 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, olhe 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 o nmap de uma máquina diferente, descubra se o 5672 está aberto:

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

Tente conectar-se a uma porta manualmente com o telnet, 5671 está FECHADO:

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

Tente conectar-se a uma porta manualmente com o telnet, 5672 está ABERTO:

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

Verifique seu firewall:

sudo cat /etc/sysconfig/iptables  

Deve informar quais portas são abertas:

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

Reaplique seu 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
fonte
1
Excelente resposta. Se alguma coisa, você exagerou um pouco.
Darth Egregious
Caso alguém esteja se perguntando - por padrão, o rabbitmq ligará apenas a porta 4369 à interface que você especificar no rabbitmq-env.conf; Se você deseja permitir todo o tráfego relacionado ao rabbitmq através da interface especificada (como eu - através do link openvpn dedicado), será necessário configurar o rabbitmq para passar todo o outro tráfego através dessa interface no rabbitmq.conf (caso contrário, outras portas não serão ligadas a interface de sua escolha, mas estará escutando em todas as portas)
Greg0ry
15

Para descobrir quais portas o rabbitmq usa :

$ epmd -names

Saídas:

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

Execute-os como root:

lsof -i :4369
lsof -i :25672

Mais sobre as opções de epmd.

Mick
fonte
lsofé dolorosamente lento ... e requer privilégios de root. Você pode fazer o mesmo, muito mais rapidamente, comnetstat -an | egrep '\.(4369|25672).*LISTEN'
dland
isso realmente requer raiz? Consegui executá-lo bem como um usuário normal. Talvez algo tenha mudado nas versões recentes?
ASGs
8

Acesso à porta

Firewalls e outras ferramentas de segurança podem impedir que o RabbitMQ se ligue a uma porta. Quando isso acontece, o RabbitMQ falha ao iniciar. Verifique se as seguintes portas podem ser abertas:

4369: epmd, um serviço de descoberta de pares usado por nós RabbitMQ e ferramentas CLI

5672, 5671: usado pelos clientes AMQP 0-9-1 e 1.0 sem e com TLS

25672: usado pela distribuição Erlang para comunicação entre nós e ferramentas CLI e é alocado a partir de um intervalo dinâmico (limitado a uma única porta por padrão, calculada como porta AMQP + 20000). Consulte o guia de rede para obter detalhes.

15672: clientes da API HTTP e rabbitmqadmin (apenas se o plug-in de gerenciamento estiver ativado)

61613, 61614: clientes STOMP sem e com TLS (apenas se o plug-in STOMP estiver ativado)

1883, 8883: (clientes MQTT sem e com TLS, se o plug-in MQTT estiver ativado

15674: Clientes STOMP-over-WebSockets (apenas se o plug-in Web STOMP estiver ativado)

15675: clientes MQTT sobre WebSockets (apenas se o plug-in MQTT da Web estiver ativado)

Documento de referência: https://www.rabbitmq.com/install-windows-manual.html

code5
fonte