如何在 CentOS 7 上搭建 RabbitMQ 集群如何在 CentOS 7 上搭建 RabbitMQ 集群如何在 CentOS 7 上搭建 RabbitMQ 集群如何在 CentOS 7 上搭建 RabbitMQ 集群
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 CentOS 7 上搭建 RabbitMQ 集群

在此页

  1. 先决条件
  2. 我们会做什么?
  3. 第 1 步 - 设置主机文件
  4. 第 2 步 - 安装 RabbitMQ 服务器
  5. 第 3 步 - 启用 RabbitMQ 管理插件
  6. 第 4 步 - 配置 CentOS 防火墙
  7. 第 5 步 - 设置 RabbitMQ 集群
  8. 第 6 步 - 创建新的管理员用户
  9. 第 7 步 - RabbitMQ 设置队列镜像
  10. 第 8 步 - 测试
  11. 参考资料

RabbitMQ 是一个开源的消息代理软件,它最初实现了 AMQP(高级消息队列协议)协议,同时它已经被开发和扩展以支持其他协议,如 STOMP(面向流文本的消息传递协议)和 MQTT(消息排队遥测传输)。

RabbitMQ 是一种消息队列软件,支持在分布式系统、应用程序和服务之间发送和接收消息。它使用 Erlang 编程语言编写,支持所有主要编程语言(包括 Python、NodeJS、Java、PHP 等)的客户端接口和库。

在本教程中,我将逐步向您展示如何在 CentOS 7 服务器上设置 RabbitMQ 集群。我们将使用三台 CentOS 服务器设置 RabbitMQ 集群,启用 RabbitMQ 管理,并为所有节点设置 HA 策略。

先决条件

  • 3 个或更多 CentOS 7 服务器
    • 10.0.15.21 node01
    • 10.0.15.22 node02
    • 10.0.15.23 node03

    我们将要做什么?

    1. 设置主机文件
    2. 安装 RabbitMQ 服务器
    3. 启用 RabbitMQ 管理插件
    4. 配置防火墙
    5. 设置 RabbitMQ 集群
    6. 配置新的管理员用户
    7. 设置 RabbitMQ 队列镜像
    8. 测试

    第 1 步 - 设置主机文件

    在此步骤中,我们将编辑所有服务器上的 /etc/hosts 文件并将每个服务器 IP 地址映射为主机名。

    使用 vim 编辑器编辑 /etc/hosts 文件。

    sudo vim /etc/hosts

    现在将以下配置粘贴到那里。

    10.0.15.21 node01
    10.0.15.22 node02
    10.0.15.23 node03

    保存并退出。

    第 2 步 - 安装 RabbitMQ 服务器

    在此步骤中,我们将从 EPEL(企业 Linux 的额外包)存储库安装 RabbitMQ 服务器包。

    在 CentOS 7 系统中添加 EPEL 仓库。

    sudo yum -y install epel-release

    现在使用下面的 yum 命令将 RabbitMQ 服务器安装到所有节点 node01、node02 和 node03。

    sudo yum -y install rabbitmq-server

    安装完成后,启动 RabbitMQ 服务并使其在每次系统启动时启动。

    sudo systemctl start rabbitmq-server
    sudo systemctl enable rabbitmq-server

    RabbitMQ Server已经安装在CentOS 7全节点集群上。

    第 3 步 - 启用 RabbitMQ 管理插件

    在此步骤中,我们将启用 RabbitMQ 管理插件。它是一个界面,允许您从 Web 浏览器监视和处理 RabbitMQ 服务器,在默认 TCP 端口 15672 上运行。

    通过运行以下命令启用 RabbitMQ 管理插件。

    sudo rabbitmq-plugins enable rabbitmq_management

    确保没有错误,然后重启 RabbitMQ 服务。

    sudo systemctl restart rabbitmq-server

    并启用了 RabbitMQ 管理。

    第 4 步 - 配置 CentOS 防火墙

    在本教程中,我们将启用 CentOS firewalld 服务,因此我们需要打开 RabbitMQ 服务器使用的端口。

    我们将开放RabbitMQ服务器使用端口5672、RabbitMQ管理端口15672、RabbitMQ集群端口4369、25672。

    运行以下 firewalld 命令。

    sudo firewall-cmd --add-port=15672/tcp --permanent
    sudo firewall-cmd --add-port=5672/tcp --permanent
    sudo firewall-cmd --add-port={4369/tcp,25672/tcp} --permanent

    现在重新加载 firewalld 并检查列表中所有打开的端口。

    sudo firewall-cmd --reload
    sudo firewall-cmd --list-all

    CentOS firewalld配置已经完成,准备搭建RabbitMQ集群。

    第 5 步 - 设置 RabbitMQ 集群

    为了设置 RabbitMQ 集群,我们需要确保 .erlang.cookie 文件在所有节点上都相同。我们将/var/lib/rabbitmq目录下的.erlang.cookie文件从node01复制到其他节点node02和node03。

    使用 node01 中的 scp 命令复制 .erlang.cookie 文件。

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

    确保两台服务器上都没有错误。

    接下来,我们需要设置 node02 和 node03 以加入集群 node01。

    在 node02 和 node03 服务器上运行以下所有命令。

    重新启动 RabbitMQ 服务并停止应用程序。

    sudo systemctl restart rabbitmq-server
    sudo rabbitmqctl stop_app

    现在让两个节点上的 RabbitMQ 服务器加入 node01 上的集群,然后启动应用程序。

    sudo rabbitmqctl join_cluster 
    sudo rabbitmqctl start_app

    完成后,检查 RabbitMQ 集群状态。

    sudo rabbitmqctl cluster_status

    您将得到如下所示的结果。

    在 node02 上。

    在 node03 上。

    RabbitMQ 集群已创建,成员为 node01、node02 和 node03。

    第 6 步 - 创建新的管理员用户

    在本教程中,我们将为 RabbitMQ 服务器创建一个新的管理员用户并删除默认的来宾用户。我们将从 node01 创建一个新用户,它将自动复制到集群上的所有节点。

    添加一个名为 hakase 的新用户,密码为 [email 。

    sudo rabbitmqctl add_user hakase 

    将 hakase 用户设置为管理员。

    sudo rabbitmqctl set_user_tags hakase administrator

    并授予 hakase 用户修改、写入和读取所有虚拟主机的权限。

    sudo rabbitmqctl set_permissions -p / hakase ".*" ".*" ".*"

    现在删除默认的来宾用户。

    sudo rabbitmqctl delete_user guest

    并检查所有可用用户。

    sudo rabbitmqctl list_users

    您将得到如下所示的结果。

    已创建新的 RabbitMQ 用户,并删除默认的来宾用户。

    第 7 步 - RabbitMQ 设置队列镜像

    这个设置是必须的,我们需要配置 ha 策略集群,用于队列镜像和复制到所有集群节点。如果承载 queue master 的节点发生故障,只要同步,最旧的镜像就会被提升为新的 master,这取决于 ha-mode 和 ha-params 策略。

    以下是有关 RabbitMQ ha 策略的一些示例。

    设置名为 ha-all 的 ha 策略,RabbitMQ 集群上的所有队列都将镜像到集群上的所有节点。

    sudo rabbitmqctl set_policy ha-all ".*" '{"ha-mode":"all"}'

    设置名为 ha-two 的 ha 策略,所有队列名称都以 2 开头。将镜像到集群上的两个节点。

    sudo rabbitmqctl set_policy ha-two "^two\." \
       '{"ha-mode":"exactly","ha-params":2,"ha-sync-mode":"automatic"}'

    设置名为 ha-nodes 的 ha 策略,所有队列名称都以节点开头。将镜像到集群上的两个特定节点 node02 和 node03。

    sudo rabbitmqctl set_policy ha-nodes "^nodes\." \
       '{"ha-mode":"nodes","ha-params":[""]}'

    现在使用下面的命令检查所有可用的策略。

    sudo rabbitmqctl list_policies;

    如果要删除该策略,请使用以下命令。

    sudo rabbitmqctl clear_policy ha-two

    第 8 步 - 测试

    打开 Web 浏览器并输入端口为 15672 的节点的 IP 地址。

    http://10.0.15.21:15672/

    输入用户名 hakase 和密码 [email 。

    您将获得如下所示的 RabbitMQ 管理仪表板。

    所有集群节点状态为 up and running。

    现在单击“管理”选项卡菜单,然后单击侧面的“用户”菜单。

    您将在列表中找到 hakase 用户。

    现在单击“管理”选项卡菜单,然后单击侧面的“策略”菜单。

    您将获得我们创建的所有 RabbitMQ ha 策略。

    RabbitMQ集群在CentOS 7服务器上的安装配置已经成功完成。

    参考

    • https://www.rabbitmq.com/documentation.html

©2015-2025 艾丽卡 support@alaica.com