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"
Run Code Online (Sandbox Code Playgroud)
我没有触及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
Run Code Online (Sandbox Code Playgroud)
我的问题是:
为了能够连接到集群的其他节点,是否需要打开所有3个端口4369,5672和35197?
为什么5672不能在tcp上运行而不仅仅是tcp6?
blu*_*kin 140
PORT 4369:Erlang使用端口映射器守护进程(epmd)来解析集群中的节点名称.节点必须能够到达彼此并且端口映射器守护程序才能使群集工作.
由inet_dist_listen_min/max设置的端口35197防火墙必须允许此范围内的流量在群集节点之间传递
RabbitMQ管理控制台:
PORT 5672RabbitMQ主要端口.
对于节点集群,它们必须相互打开35197,4369并且5672.
对于任何想要使用消息队列的服务器,只5672需要.
Eri*_*ski 71
默认值:5672,手册有答案.它在RABBITMQ_NODE_PORT变量中定义.
https://www.rabbitmq.com/configure.html#define-environment-variables
如果由rabbitmq配置文件中的某个人更改,则该数字可能会有所不同:
vi /etc/rabbitmq/rabbitmq-env.conf
Run Code Online (Sandbox Code Playgroud)
让电脑告诉你:
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
Run Code Online (Sandbox Code Playgroud)
哦,看,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
Run Code Online (Sandbox Code Playgroud)
哦,看看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)
Run Code Online (Sandbox Code Playgroud)
使用来自不同机器的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
Run Code Online (Sandbox Code Playgroud)
尝试使用telnet手动连接到端口,5671已关闭:
telnet localhost 5671
Trying 127.0.0.1...
telnet: connect to address 127.0.0.1: Connection refused
Run Code Online (Sandbox Code Playgroud)
尝试使用telnet手动连接到端口,5672是OPEN:
telnet localhost 5672
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Run Code Online (Sandbox Code Playgroud)
检查你的防火墙:
sudo cat /etc/sysconfig/iptables
Run Code Online (Sandbox Code Playgroud)
它应该告诉你哪些端口是打开的:
-A INPUT -p tcp -m tcp --dport 5672 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
重新应用防火墙:
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 ]
Run Code Online (Sandbox Code Playgroud)
Mic*_*ick 14
要找出rabbitmq使用的端口:
$ epmd -names
Run Code Online (Sandbox Code Playgroud)
输出:
epmd: up and running on port 4369 with data:
name rabbit at port 25672
Run Code Online (Sandbox Code Playgroud)
以root身份运行:
lsof -i :4369
lsof -i :25672
Run Code Online (Sandbox Code Playgroud)
端口访问
防火墙和其他安全工具可能会阻止RabbitMQ绑定到端口.当发生这种情况时,RabbitMQ将无法启动.确保可以打开以下端口:
4369:epmd,RabbitMQ节点和CLI工具使用的对等发现服务
5672,5671:AMQP 0-9-1和1.0客户端使用没有和使用TLS
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
| 归档时间: |
|
| 查看次数: |
124272 次 |
| 最近记录: |