RabbitMQ 镜像集群部署

本文描述RabbitMQ三节点镜像集群的搭建流程,本文使用的三个节点的信息如下:

IP主机名类型
172.43.16.70node1cluster
172.43.16.71node2slave
172.43.16.72node3slave

本文使用的程序包:

  • erlang-21.3.8.8-1.e17.x86_64.rpm
  • rabbitmq-server-3.8.0-1.e17.noarch.rpm
  • socat-1.7.3.2-2.e17.x86_64.rpm

一、修改主机名

三台主机都需要做如下的主机名相关配置。

  1. 修改 /etc/hosts 文件,添加以下主机 IP 配置

    192.168.10.1 node1
    192.168.10.2 node2
    192.168.10.3 node3
    
  2. 修改主机名:以 node1 的修改为例

    sudo hostnamectl set-hostname node1
    

    临时修改,重启后失效,需要重新修改。

    sudo hostname node1
    

修改主机名对当前 session 不会生效,需要断开重新连接。

二、安装RabbitMQ

执行如下安装命令:

sudo rpm -i erlang-21.3.8.8-1.e17.x86_64.rpm
sudo rpm -i socat-1.7.3.2-2.e17.x86_64.rpm
sudo rpm -i rabbitmq-server-3.8.0-1.e17.noarch.rpm

安装完成后可使用如下命令启动或关闭RabbitMQ服务:

# 启动服务
sudo service rabbitmq-server start

# 关闭服务
sudo service rabbitmq-server stop

# 查看服务状态
sudo service rabbitmq-server status

# 查看RabbitMQ状态
sudo rabbitmqctl status

启动 RabbitMQ 服务后查看 RabbitMQ 状态,节点名称必须为 rabbit@主机名,否则集群会出现问题,如下是 node1 的节点状态所示。

RabbitMQ 集群状态

三、集群配置

  1. 复制 .erlang.cookie

    cluster 节点 /var/lib/rabbitmq 目录下存在 .erlang.cookie 文件,如果不存在需要先启动一下 RabbitMQ 服务,即可生成文件。

    需要将 cluster 节点的 .erlang.cookie 复制到 slave 节点覆盖原有文件,保持三个节点文件内容一致。并保持所有用户和组为 rabbitmq,仅所有者只读。

    相关命令:

    # 复制
    sudo scp root@172.16.43.70:/var/lib/rabbitmq/.erlang.cookie /var/lib/rabbitmq/
    
    # 修改用户组
    sudo chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie
    
    # 仅只有所有者可读
    sudo chmod 400 /var/lib/rabbitmq/.erlang.cookie
    
  2. 启动三个节点的 RabbitMQ 服务。

    sudo service rabbitmq-server start
    
  3. slave 设置 cluster 节点:

    在两个 slave 分别输入如下命令:

    sudo rabbitmqctl stop_app
    sudo rabbitmqctl join_cluster rabbit@node1
    sudo rabbitmqctl start_app
    
  4. 查看集群状态

    输入如下命令查看集群状态,可以看到三个节点信息。

    sudo rabbitmqctl cluster_status
    

RabbitMQ 集群节点信息

  1. 添加集群同步策略

    • ha-mode: all,在集群中所有的节点上进行镜像

    • ha-sync-mode: automatic,在集群节点宕机重新连接后自动同步

在任意一台服务器执行如下命令添加集群同步策略。

   # 添加策略
   sudo rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all","ha-sync-mode":"automatic"}'
   
   # 查看策略
   sudo rabbitmqctl list_policies

四、其他配置

  1. 账号配置

    # 添加username账号
    sudo rabbitmqctl add_user username password
    
    # username账号设置角色为administrator
    sudo rabbitmqctl set_user_tags username administrator
    
    # 查看角色列表
    sudo rabbitmqctl list_users
    
    # 角色添加权限
    sudo rabbitmqctl set_permissions -p "/" username ".*" ".*" ".*"
    
    # 权限列表
    sudo rabbitmqctl list_permissions
    
  2. 打开可视化管理界面

rabbitmq-plugins enable rabbitmq_management

通过:http://127.0.0.1:15672 访问可视化界面。