如何在 CentOS 7 上搭建 RabbitMQ 集群
在此页
- 先决条件
- 我们会做什么?
- 第 1 步 - 设置主机文件
- 第 2 步 - 安装 RabbitMQ 服务器
- 第 3 步 - 启用 RabbitMQ 管理插件
- 第 4 步 - 配置 CentOS 防火墙
- 第 5 步 - 设置 RabbitMQ 集群
- 第 6 步 - 创建新的管理员用户
- 第 7 步 - RabbitMQ 设置队列镜像
- 第 8 步 - 测试
- 参考资料
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
我们将要做什么?
- 设置主机文件
- 安装 RabbitMQ 服务器
- 启用 RabbitMQ 管理插件
- 配置防火墙
- 设置 RabbitMQ 集群
- 配置新的管理员用户
- 设置 RabbitMQ 队列镜像
- 测试
第 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-serverRabbitMQ 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-allCentOS 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