温馨提示×

Linux环境下RabbitMQ如何管理

小樊
31
2025-12-06 18:49:49
栏目: 智能运维

Linux环境下 RabbitMQ 管理实操指南

一 服务启停与自启

  • 推荐使用系统服务管理(支持 systemd 的发行版):
    • 启动:sudo systemctl start rabbitmq-server
    • 停止:sudo systemctl stop rabbitmq-server
    • 重启:sudo systemctl restart rabbitmq-server
    • 查看状态:sudo systemctl status rabbitmq-server
    • 开机自启:sudo systemctl enable rabbitmq-server
  • 直接运行与后台运行(适合快速调试或容器环境):
    • 前台:rabbitmq-server
    • 后台:rabbitmq-server --detached
  • 仅停止应用、保留 Erlang 节点(维护场景常用):
    • 停止应用:rabbitmqctl stop_app
    • 启动应用:rabbitmqctl start_app
  • 多节点环境可在命令后加 -n <节点名> 指定目标节点。

二 插件与 Web 管理

  • 启用管理插件:rabbitmq-plugins enable rabbitmq_management
  • 访问地址:http://<服务器IP或域名>:15672
  • 默认账号:guest / guest(默认仅允许本机访问)
  • 远程访问建议创建管理员用户并分配角色(见下一节)。

三 用户 虚拟主机 与权限

  • 用户管理
    • 新增用户:rabbitmqctl add_user <用户名> <密码>
    • 修改密码:rabbitmqctl change_password <用户名> <新密码>
    • 删除用户:rabbitmqctl delete_user <用户名>
    • 列出用户:rabbitmqctl list_users
    • 设置角色(常见:administrator、monitoring、management、policymaker):rabbitmqctl set_user_tags <用户名> <标签>
  • 虚拟主机
    • 新建:rabbitmqctl add_vhost
    • 删除:rabbitmqctl delete_vhost
  • 权限
    • 设置权限(配置/写入/读取正则):rabbitmqctl set_permissions -p <用户> “." ".” “.*”
    • 列出 vhost 权限:rabbitmqctl list_permissions -p
    • 列出某用户权限:rabbitmqctl list_user_permissions <用户>
    • 清除权限:rabbitmqctl clear_permissions -p <用户>

四 监控与运维常用命令

  • 节点与集群状态
    • 节点状态:rabbitmqctl status
    • 集群状态:rabbitmqctl cluster_status
  • 队列与交换机查询
    • 队列列表:rabbitmqctl list_queues [-p ] [name,durable,auto_delete,messages_ready,messages_unacknowledged,messages,consumers,memory]
    • 交换机列表:rabbitmqctl list_exchanges [-p ] [name,type,durable,auto_delete,internal,arguments]
  • 日志与故障排查
    • 日志路径:/var/log/rabbitmq/,常见文件:[email protected][hostname].log[email protected][hostname]-sasl.log
    • 动态日志订阅:将队列绑定到内置 Exchange amq.rabbitmq.log,按 error/warning/info 路由键接收实时日志。

五 配置与网络要点

  • 配置文件
    • 主配置文件路径:/etc/rabbitmq/rabbitmq.config
    • 示例(允许远程使用 guest 登录,生产环境不建议):[{rabbit, [{loopback_users, []}]}].
  • 端口与防火墙
    • 5672(AMQP)、15672(管理界面)
    • 开放端口示例:
      • firewalld:sudo firewall-cmd --permanent --add-port=5672/tcp --add-port=15672/tcp && sudo firewall-cmd --reload
      • ufw:sudo ufw allow 5672/tcp && sudo ufw allow 15672/tcp
  • 安全建议
    • 生产环境删除或禁用默认 guest 用户,创建强密码的管理员与业务用户,并按 vhost 做最小权限划分。

0