145

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

4

4 回答 4

161

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

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

RabbitMQ 管理控制台:

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

PORT 5672RabbitMQ 主端口。

对于节点集群,它们必须在和35197上相互开放。43695672

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

于 2012-10-10T03:36:41.650 回答
81

RabbitMQ 使用哪些端口?

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

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

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

vi /etc/rabbitmq/rabbitmq-env.conf

询问 nmap 是否可以看到:

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  ]
于 2014-09-08T21:53:05.697 回答
20

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

于 2014-04-16T22:17:47.237 回答
12

端口访问

防火墙和其他安全工具可能会阻止 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

于 2017-07-09T20:38:51.573 回答