RabbitMQ 使用哪些端口?
Posted
技术标签:
【中文标题】RabbitMQ 使用哪些端口?【英文标题】:What ports does RabbitMQ use? 【发布时间】:2012-09-29 08:39:33 【问题描述】: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
我的问题是:
为了让其他节点能够连接到集群,是否需要打开所有 3 个端口 4369、5672 和 35197?
为什么 5672 不在 tcp 而不仅仅是 tcp6 上运行?
【问题讨论】:
可能会在 ServerFault 而不是 *** 上获得更多响应,但我很高兴您将它发布在这里,因为它正是我正在寻找的! 【参考方案1】:端口 4369:Erlang 使用端口映射器守护程序 (epmd) 来解析集群中的节点名称。节点必须能够相互访问,并且端口映射器守护程序才能使集群工作。
端口 35197 由 inet_dist_listen_min/max 设置防火墙必须允许此范围内的流量在集群节点之间通过
RabbitMQ 管理控制台:
端口 15672 用于 RabbitMQ 版本 3.x 端口 55672 用于 RabbitMQ pre 3.xPORT 5672
RabbitMQ 主端口。
对于节点集群,它们必须在35197
、4369
和5672
上相互开放。
对于任何想要使用消息队列的服务器,只需要5672
。
【讨论】:
在3.x系列版本中管理端口好像改成了15672。 在 3.x 中管理端口似乎已更改为 15672:rabbitmq.com/management.html#configuration 集群端口好像是 4369 和 25672 来自:rabbitmq.com/clustering.html【参考方案2】: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 ]
【讨论】:
优秀的答案。如果有的话,你有点过火了。 如果有人想知道 - 默认情况下,rabbitmq 只会将 4369 端口绑定到您在 rabbitmq-env.conf 中指定的接口;如果您想允许所有与 rabbitmq 相关的流量通过指定的接口(如我自己 - 通过专用的 open*** 链接),那么您必须配置 rabbitmq 以通过 rabbitmq.conf 中的该接口传递所有其他流量(否则其他端口将不会被绑定到您选择的接口,但将监听所有端口)【参考方案3】:了解rabbitmq使用哪些端口:
$ epmd -names
输出:
epmd: up and running on port 4369 with data:
name rabbit at port 25672
以 root 身份运行:
lsof -i :4369
lsof -i :25672
More about epmd options.
【讨论】:
lsof
速度非常慢……而且它需要 root 权限。您可以使用netstat -an | egrep '\.(4369|25672).*LISTEN'
更快地完成相同的操作
真的需要root吗?我能够以普通用户的身份正常运行它。也许最近的版本有所改变?【参考方案4】:
端口访问
防火墙和其他安全工具可能会阻止 RabbitMQ 绑定到端口。发生这种情况时,RabbitMQ 将无法启动。确保可以打开以下端口:
4369:epmd,RabbitMQ 节点和 CLI 工具使用的对等发现服务
5672、5671:由不带和带 TLS 的 AMQP 0-9-1 和 1.0 客户端使用
25672:由 Erlang 发行版用于节点间和 CLI 工具通信,并从动态范围分配(默认限制为单个端口,计算为 AMQP 端口 + 20000)。有关详细信息,请参阅网络指南。
15672:HTTP API 客户端和 rabbitmqadmin(仅在启用管理插件的情况下)
61613、61614:不带和带 TLS 的 STOMP 客户端(仅在启用 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
【讨论】:
以上是关于RabbitMQ 使用哪些端口?的主要内容,如果未能解决你的问题,请参考以下文章