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
我的问题是:
-
对于其他节点能够连接到群集,需要打开所有3个端口4369,5672和35197?
-
为什么不在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主端口。
对于一个节点集群,它们必须在35197
和5672
上35197
打开。
对于任何想要使用消息队列的服务器,只需要5672
。
RabbitMQ使用什么端口?
默认:5672,手册有答案。 它在RABBITMQ_NODE_PORT
variables中定义。
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