温馨提示×

CentOS RabbitMQ网络配置注意事项

小樊
33
2025-12-09 14:12:28
栏目: 智能运维

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 与服务器监听地址
    • 集群无法组建,确认 436925672 互通
    • 监听与连通性可用: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_apprabbitmqctl 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 的版本兼容性,避免滚动升级导致节点失联

0