对于节点群集,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
端口4369: Erlang使用PORT Mapper Daemon (epmd)解析集群中的节点名称。节点必须能够相互访问,端口映射器守护进程才能运行群集。
set _dist_listen_min/max防火墙设置的端口35197必须允许此范围内的通信在群集节点之间传递
RabbitMQ管理控制台:
适用于RabbitMQ版本3.x的
端口5672
RabbitMQ主端口。
对于节点群集,它们必须在35197
、4369
和5672
上相互开放。
对于任何想要使用消息队列的服务器,只需要5672
。
RabbitMQ使用哪些端口?
默认值: 5672,手册中有答案。它在RABBITMQ_NODE_PORT
变量中定义。
Configuration — RabbitMQ
如果有人在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
使用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
使用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使用的端口
$ epmd -names
输出:
epmd: up and running on port 4369 with data:
name rabbit at port 25672
以根用户身份运行以下命令:
lsof -i :4369
lsof -i :25672