RabbitMQ 集群安装

一般是3个节点部署集群的 RabbitMQ

注:需要先使用 rpm 在节点上先安装 RabbitMQ 程序。(erlang 及 RabbitMQ 的 rpm 包请参考 versions 目录下关于 erlang 及 RabbitMQ 的 nos 下载地址)

获取并安装 RabbitMQ 软件

yum -y install centos-release-rabbitmq-38.noarch
yum -y install rabbitmq-server

配置

hosts 配置

修改或确认3个节点的主机名能够进行 DNS 解析

10.0.0.1 node1
10.0.0.2 node2
10.0.0.3 node3

node1 配置

  • /etc/rabbitmq/rabbitmq.conf
    management.tcp.ip = 0.0.0.0
    management.tcp.port = 15672
  • /etc/rabbitmq/rabbitmq-env.conf
    RABBITMQ_NODE_PORT=5672
    RABBITMQ_NODENAME=rabbit1
    RABBITMQ_LOG_BASE=/data/rabbitmq/logs
    RABBITMQ_MNESIA_BASE=/data/rabbitmq/data
  • 写入数据需要修改目录权限
    mkdir -p /data/rabbitmq/logs
    mkdir -p /data/rabbitmq/data
    chown -R rabbitmq /data/rabbitmq
    systemctl enable rabbitmq-server
    systemctl start rabbitmq-server
  • 创建管理员
    rabbitmqctl add_user root root -n rabbit1@node1
    rabbitmqctl set_user_tags root administrator -n rabbit1@node1
    rabbitmqctl set_permissions -p / root ".*" ".*" ".*" -n rabbit1@node1
  • 启动插件
    rabbitmq-plugins enable rabbitmq_management
    rabbitmq-plugins enable rabbitmq_mqtt
    rabbitmq-plugins enable rabbitmq_web_mqtt

使用 rabbitmq-plugins list 检查指定的插件是否已启用。

node2 配置

  • /etc/rabbitmq/rabbitmq.conf
    management.tcp.ip = 0.0.0.0
    management.tcp.port = 15672
  • /etc/rabbitmq/rabbitmq-env.conf
    RABBITMQ_NODE_PORT=5672
    RABBITMQ_NODENAME=rabbit2
    RABBITMQ_LOG_BASE=/data/rabbitmq/logs
    RABBITMQ_MNESIA_BASE=/data/rabbitmq/data
  • 写入数据需要修改目录权限
    mkdir -p /data/rabbitmq/logs
    mkdir -p /data/rabbitmq/data
    chown -R rabbitmq /data/rabbitmq
    systemctl enable rabbitmq-server
    systemctl start rabbitmq-server
  • 创建管理员
    rabbitmqctl add_user root root -n rabbit2@node2
    rabbitmqctl set_user_tags root administrator -n rabbit2@node2
    rabbitmqctl set_permissions -p / root ".*" ".*" ".*" -n rabbit2@node2
  • 启动插件:
    rabbitmq-plugins enable rabbitmq_management
    rabbitmq-plugins enable rabbitmq_mqtt
    rabbitmq-plugins enable rabbitmq_web_mqtt

使用 rabbitmq-plugins list 检查指定的插件是否已启用。

node3 配置

  • /etc/rabbitmq/rabbitmq.conf
    management.tcp.ip = 0.0.0.0
    management.tcp.port = 15672
  • /etc/rabbitmq/rabbitmq-env.conf
    RABBITMQ_NODE_PORT=5672
    RABBITMQ_NODENAME=rabbit3
    RABBITMQ_LOG_BASE=/data/rabbitmq/logs
    RABBITMQ_MNESIA_BASE=/data/rabbitmq/data
  • 写入数据需要修改目录权限
    mkdir -p /data/rabbitmq/logs
    mkdir -p /data/rabbitmq/data
    chown -R rabbitmq /data/rabbitmq
    systemctl enable rabbitmq-server
    systemctl start rabbitmq-server
  • 创建管理员

    rabbitmqctl add_user root root -n rabbit3@node3
    rabbitmqctl set_user_tags root administrator -n rabbit3@node3
    rabbitmqctl set_permissions -p / root ".*" ".*" ".*" -n rabbit3@node3
    • 启动插件
    rabbitmq-plugins enable rabbitmq_management
    rabbitmq-plugins enable rabbitmq_mqtt
    rabbitmq-plugins enable rabbitmq_web_mqtt

使用 rabbitmq-plugins list 检查指定的插件是否已启用。

创建集群

在 node1 节点上执行

  • 复制 cookie

编辑 RabbitMQ 的 cookie 文件,以确保各个节点的 cookie 文件使用的是同一个值。

读取 node1 的 cookie 文件,复制内容到 node2 及 node3。cookie 文件一般存放在 ~/.erlang.cookie/var/lib/rabbitmq/.erlang.cookie

scp /var/lib/rabbitmq/.erlang.cookie node2:/var/lib/rabbitmq/.erlang.cookie
scp /var/lib/rabbitmq/.erlang.cookie node3:/var/lib/rabbitmq/.erlang.cookie

ssh node2 "systemctl restart rabbitmq-server"
ssh node3 "systemctl restart rabbitmq-server"
  • 创建集群
rabbitmqctl -n rabbit2@node2 stop_app
rabbitmqctl -n rabbit2@node2 reset
rabbitmqctl -n rabbit2@node2 join_cluster rabbit1@node1
rabbitmqctl -n rabbit2@node2 start app

rabbitmqctl -n rabbit3@node3 stop_app
rabbitmqctl -n rabbit3@node3 reset
rabbitmqctl -n rabbit3@node3 join_cluster rabbit1@node1
rabbitmqctl -n rabbit3@node3 start app
  • 查看集群状态
rabbitmqctl -n rabbit1@node1 cluster_status

参考

Copyright © 温玉 2021 | 浙ICP备2020032454号 all right reserved,powered by Gitbook该文件修订时间: 2021-03-27 14:07:32

results matching ""

    No results matching ""