CentOS 上部署与运维 RabbitMQ 的网络配置要点
一 端口与防火墙
- 常用端口及用途
- 4369/TCP:Erlang Port Mapper Daemon(epmd),节点发现用
- 25672/TCP:Erlang 分布式节点间通信(集群)
- 5671-5672/TCP:AMQP 0-9-1 与 AMQPS(TLS)
- 15672/TCP:HTTP API 与管理插件
- 可选:61613-61614/TCP(STOMP)、1883/8883/TCP(MQTT/TLS)
- firewalld 放行示例(CentOS 7/8)
- 开放端口:
firewall-cmd --permanent --add-port={4369,25672,5671-5672,15672}/tcp
- 可选插件端口:
firewall-cmd --permanent --add-port={61613-61614,1883,8883}/tcp
- 重载规则:
firewall-cmd --reload
- 验证:
firewall-cmd --list-all
- 排查要点
- 管理界面访问异常,优先检查 15672 是否放行
- 客户端连不通,检查 5672/5671 与服务器监听地址
- 集群无法组建,确认 4369 与 25672 互通
- 监听与连通性可用:
ss -tlnp | egrep '5672|15672|25672|4369',以及 nc -vz <host> <port> 测试连通性
二 监听地址与协议
- 绑定地址
- 默认仅监听 127.0.0.1 时,远程无法访问;需在配置文件 /etc/rabbitmq/rabbitmq.conf 中设置
listeners.tcp.default=0.0.0.0:5672(或指定内网地址),并重启服务
- 管理插件同理,确保管理端口对外可达
- 协议与加密
- 启用 TLS:开放 5671,在
rabbitmq.conf 配置 listeners.ssl.default=5671 并提供证书
- 如需明文 AMQP,确保 5672 开放且监听正确地址
- 配置文件与生效
- 新版使用 rabbitmq.conf(key=value);旧版为 rabbitmq.config(Erlang 元组)
- 两个文件同时存在时,仅读取旧版;修改后执行
systemctl restart rabbitmq-server 使配置生效
三 认证与访问控制
- 远程访问限制
- 默认 guest/guest 仅允许 localhost 登录;远程访问请创建新用户并赋权,或在新版配置中设置
loopback_users.guest = false
- 推荐做法:
- 新增管理员:
rabbitmqctl add_user <user> <pwd>
- 赋权:
rabbitmqctl set_user_tags <user> administrator
- 设置权限:
rabbitmqctl set_permissions -p / <user> ".*" ".*" ".*"
- 最小权限原则
- 生产环境避免使用默认账户远程登录,按 vhost 与业务最小权限分配账户与权限
四 集群网络与主机名解析
- 主机名与解析
- 集群节点需能通过 短主机名 互相解析,建议在 /etc/hosts 明确映射所有节点 IP 与主机名
- Erlang Cookie
- 所有节点 /var/lib/rabbitmq/.erlang.cookie 内容必须一致;可使用
scp 同步后重启服务
- 集群通信端口
- 保证 4369(epmd)与 25672(节点间通信)在集群各节点间双向可达
- 加入集群示例
- 在待加入节点执行:
rabbitmqctl stop_app → rabbitmqctl join_cluster --ram rabbit@<目标节点主机名> → rabbitmqctl start_app
- 查看状态:
rabbitmqctl cluster_status
五 安全加固与运维排错
- SELinux
- 如启用 SELinux,可能需要放行网络:
setsebool -P nis_enabled 1(或按实际策略调整)
- 日志与诊断
- 日志路径:/var/log/rabbitmq/;连接失败、插件未启用、端口未监听等问题优先查日志
- 管理界面启用:
rabbitmq-plugins enable rabbitmq_management,访问 http://:15672
- 监听与连通性自检
- 查看监听:
ss -tlnp | egrep '5672|15672|25672|4369'
- 端口连通:
nc -vz <host> <port>;跨主机测试更可靠
- 变更与升级
- 修改 rabbitmq.conf 后需重启;涉及 Erlang 版本变更时,注意与 RabbitMQ 的版本兼容性,避免滚动升级导致节点失联