RabbitMQ使用哪些端口?


135

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

/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. 为什么5672不能在tcp上运行而不仅仅是在tcp6上运行?


2
可能会在ServerFault而不是StackOverflow上获得更多响应,但我很高兴您将其发布在这里,因为这正是我想要的!
Norman H

Answers:


151

端口4369:Erlang使用端口映射器守护程序(epmd)来解析群集中的节点名称。节点必须能够相互访问,并且端口映射器守护程序才能群集运行。

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

RabbitMQ管理控制台:

  • RabbitMQ版本3.x的PORT 15672
  • RabbitMQ 3.x之前的端口55672

PORT 5672RabbitMQ主端口。

对于节点的集群,他们必须相互开放的3519743695672

对于任何要使用消息队列的服务器,仅5672是必需的。


8
在3.x系列发行版中,管理端口似乎已更改为15672。
kjw0188

1
看起来好像管理端口在3.x中已更改为15672:rabbitmq.com/management.html#configuration
Greg M. Krsak 2013年

4
集群端口看起来像是4369和25672,来自:rabbitmq.com/clustering.html
kixorz 2014年

76

RabbitMQ使用哪些端口?

默认值:5672,手册中有答案。它在RABBITMQ_NODE_PORT变量中定义。

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

如果某人在rabbitmq配置文件中更改了该数字,则该数字可能会有所不同:

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已关闭:

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

尝试使用telnet手动连接到端口,5672打开。

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  ]

1
极好的答案。如果有的话,您已经有点过头了。
达斯(Garth Egregious)

如果有人想知道-默认情况下,rabbitmq仅将4369端口绑定到您在Rabbitmq-env.conf中指定的接口;如果您想允许所有通过指定接口的与Rabbitmq相关的流量(如我本人-通过专用的openvpn链接),则必须配置Rabbitmq使其通过Rabbitmq.conf中的该接口传递所有其他流量(否则其他端口将不被绑定到您选择的接口,但改为在所有端口上监听)
Greg0ry

15

找出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选项的更多信息。


lsof非常缓慢...而且需要root权限。您可以通过netstat -an | egrep '\.(4369|25672).*LISTEN'
dland

真的需要root吗?我能够以普通用户的身份正常运行。也许在最新版本中有所更改?
asgs

8

端口访问

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

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

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

25672:由Erlang分发用于节点间和CLI工具通信,并从动态范围分配(默认情况下限制为单个端口,计算为AMQP端口+ 20000)。有关详细信息,请参见网络指南。

15672:HTTP API客户端和rabbitmqadmin(仅在启用管理插件的情况下)

61613、61614:不带TLS和带TLS的STOMP客户端(仅在启用STOMP插件的情况下)

1883、8883 :(如果启用了MQTT插件,则不带TLS和具有TLS的MQTT客户端

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

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.