温馨提示×

Linux系统中RabbitMQ怎样配置

小樊
32
2025-12-30 09:26:04
栏目: 智能运维

Linux系统中RabbitMQ配置指南

一 安装与准备

  • 安装依赖与RabbitMQ(以常见发行版为例):
    • Ubuntu/Debian:
      • 安装Erlang:sudo apt-get update && sudo apt-get install -y erlang
      • 安装RabbitMQ(示例版本):sudo apt-get install -y rabbitmq-server=3.10.1-1_all
    • CentOS/RHEL 7:
      • 安装Erlang与依赖:sudo yum install -y erlang socat
      • 安装RabbitMQ RPM:sudo rpm -ivh rabbitmq-server-3.10.0-1.el7.noarch.rpm
    • RHEL 8+/Fedora(使用官方仓库更方便):
      • 导入签名并启用仓库后安装:sudo dnf install -y rabbitmq-server
  • 启动与开机自启:
    • 使用systemd:sudo systemctl enable --now rabbitmq-server
    • 使用SysVinit:sudo chkconfig rabbitmq-server on && sudo service rabbitmq-server start
  • 版本匹配提示:部署前请确认Erlang与RabbitMQ版本兼容矩阵,避免启动失败或异常。

二 核心配置文件与常用参数

  • 配置文件路径与格式:
    • 主配置文件:/etc/rabbitmq/rabbitmq.conf(若不存在可手动创建)
    • 高级配置(可选):/etc/rabbitmq/advanced.config(Erlang术语配置)
  • 常用配置示例(在rabbitmq.conf中):
    • 修改AMQP端口:listeners.tcp.default = 5672
    • 修改管理端口:management.tcp.port = 29991
    • 绑定监听地址:management.tcp.ip = 0.0.0.0
  • 使配置生效:
    • 重启服务:sudo systemctl restart rabbitmq-server
    • 验证监听端口:ss -tulnp | grep beam
  • 说明:不同版本的配置项名称可能略有差异,建议以对应版本的官方文档为准。

三 用户与权限管理

  • 启用管理插件(提供Web管理界面):sudo rabbitmq-plugins enable rabbitmq_management
  • 创建管理员用户并设置权限:
    • 添加用户:rabbitmqctl add_user admin StrongPass!
    • 设置角色:rabbitmqctl set_user_tags admin administrator
    • 设置默认vhost权限:rabbitmqctl set_permissions -p / admin “." ".” “.*”
  • 常用运维命令:
    • 修改密码:rabbitmqctl change_password admin NewPass!
    • 查看用户:rabbitmqctl list_users
    • 查看权限:rabbitmqctl list_permissions -p /
  • 安全建议:生产环境禁用或删除默认guest用户,仅使用自建管理员与最小权限账户。

四 端口与防火墙

  • 常用端口与作用:
    • 5672/tcp:AMQP 0-9-1 客户端通信
    • 15672/tcp:HTTP 管理插件
  • 防火墙放行示例:
    • firewalld(CentOS/RHEL/Fedora):
      • 放行端口:sudo firewall-cmd --permanent --add-port={5672,15672}/tcp
      • 重载规则:sudo firewall-cmd --reload
    • ufw(Ubuntu/Debian):
      • 放行端口:sudo ufw allow 5672/tcp && sudo ufw allow 15672/tcp
  • 如修改了管理端口(如改为29991),需同步放行新端口并据此访问管理界面。

五 集群与高可用配置

  • 前置条件:
    • 所有节点时间同步(如chrony
    • 各节点安装相同版本的ErlangRabbitMQ
    • 统一Erlang Cookie(节点间认证)
  • 部署步骤(简要):
    • 拷贝Cookie(示例从node1到node2/node3):
      • scp /var/lib/rabbitmq/.erlang.cookie node2:/var/lib/rabbitmq/.erlang.cookie
      • 权限应为400,属主rabbitmq:rabbitmq
    • 启动各节点服务:sudo systemctl start rabbitmq-server
    • 在从节点加入集群(示例将node2加入node1):
      • rabbitmqctl stop_app
      • rabbitmqctl reset
      • rabbitmqctl join_cluster rabbit@node1
      • rabbitmqctl start_app
    • 验证集群状态:rabbitmqctl cluster_status
  • 高可用策略(镜像队列示例):
    • 对所有队列启用镜像:rabbitmqctl set_policy ha-all “^” ‘{“ha-mode”:“all”,“ha-sync-mode”:“automatic”}’
  • 访问与管理:集群中各节点均可访问管理界面(需放行对应端口),建议使用负载均衡对外暴露AMQP与管理端口。

0