RabbitMQ使用哪些端口?

RabbitMQ服务器使用或需要在防火墙上为节点集群打开哪些端口?

我的/usr/lib/rabbitmq/bin/rabbitmq-env设置在我所假设的下面(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" 

我没有碰过rabbitmq.config来设置一个自定义的tcp_listener所以它应该在默认的5672上进行监听。

这里是相关的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 

我的问题是:

  1. 对于其他节点能够连接到群集,需要打开所有3个端口4369,5672和35197?

  2. 为什么不在tcp上运行5672而不仅仅是tcp6?

PORT 4369:Erlang利用端口映射器守护进程(epmd)来parsing集群中的节点名称。 节点必须能够到达对方,并且端口映射器守护进程可以使群集正常工作。

端口35197由inet_dist_listen_min / max设置防火墙必须允许此范围内的通信在群集节点之间传递

RabbitMQpipe理控制台:

  • 用于RabbitMQ版本3.x的PORT 15672
  • 用于RabbitMQ pre 3.x的PORT 55672

PORT 5672 RabbitMQ主端口。

对于一个节点集群,它们必须在35197567235197打开。

对于任何想要使用消息队列的服务器,只需要5672

RabbitMQ使用什么端口?

默认:5672,手册有答案。 它在RABBITMQ_NODE_PORTvariables中定义。

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

如果由rabbitmqconfiguration文件中的某个人更改,该数字可能会有所不同:

 vi /etc/rabbitmq/rabbitmq-env.conf 

请电脑告诉你:

 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 

哦,看,5672和15672

使用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 

哦,看5672。

使用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) 

从另一台机器使用nmap,看看5672是否打开:

 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 

尝试使用telnet手动连接到端口,5671已closures:

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

尝试使用telnet手动连接到端口,5672是OPEN:

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

检查你的防火墙:

 sudo cat /etc/sysconfig/iptables 

它应该告诉你什么端口打开:

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

重新申请你的防火墙:

 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 ] 

要找出rabbitmq使用的端口

 $ epmd -names 

输出:

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

以root身份运行它们:

 lsof -i :4369 lsof -i :25672 

更多关于epmd选项。

端口访问

防火墙和其他安全工具可能会阻止RabbitMQ绑定到端口。 发生这种情况时,RabbitMQ将无法启动。 确保可以打开以下端口:

4369:epmd,RabbitMQ节点和CLI工具使用的对等发现服务

5672,5671:由AMQP 0-9-1和1.0客户端使用,不带和使用TLS

25672:由Erlang分配用于节点间和CLI工具通信,并且从dynamic范围(默认情况下限于单个端口,计算为AMQP端口+20000)分配。 详情请参阅联网指南。

15672:HTTP API客户端和rabbitmqadmin(仅当pipe理插件启用时)

61613,61614:STOMP客户端没有和使用TLS(只有STOMP插件已启用)

1883年,8883:(MQTT客户端没有和TLS,如果MQTT插件已启用

15674:STOMP-over-WebSockets客户端(仅在启用了Web STOMP插件的情况下)

15675:MQTT-over-WebSockets客户端(仅在启用了Web MQTT插件的情况下)

参考文档: https : //www.rabbitmq.com/install-windows-manual.html