更新升级 专属应用 系统故障 硬件故障 电脑汽车 鸿蒙刷机 鸿蒙开发Linux教程 鸿蒙开发Linux命令
当前位置:HMXT之家 > 鸿蒙开发Linux教程 > Rocky Linux 8/AlmaLinux 8上部署3节点RabbitMQ群集

Rocky Linux 8/AlmaLinux 8上部署3节点RabbitMQ群集

更新时间:2023-01-20 10:21:10浏览次数:800+次

本文介绍如何在Rocky Linux 8/AlmaLinux 8系统上安装RabbitMQ,并部署3节点RabbitMQ群集的方法。

要求

对于本文,主机名及IP地址配置如下:

rabbitmq_01-RabbitMQ node1-192.168.205.2。

rabbitmq_02-RabbitMQ node2-192.168.205.3。

rabbitmq_03-RabbitMQ node3-192.168.205.4。

在所有3个节点上设置主机名:

##On Node1

sudo hostnamectl set-hostname rabbitmq_01.computingforgeeks.com

##On Node2

sudo hostnamectl set-hostname rabbitmq_02.computingforgeeks.com

##On Node3

sudo hostnamectl set-hostname rabbitmq_03.computingforgeeks.com

将主机名添加到所有3个节点上的/etc/hosts:

$ sudo vim /etc/hosts

192.168.205.2   rabbitmq_01.computingforgeeks.com  rabbitmq_01

192.168.205.3   rabbitmq_02.computingforgeeks.com  rabbitmq_02

192.168.205.4   rabbitmq_03.computingforgeeks.com  rabbitmq_03

具体操作方法

1、在Rocky Linux 8/AlmaLinux 8上安装RabbitMQ

要执行RabbitMQ集群,需要所有节点都安装并运行RabbitMQ。首先将所需的存储库添加到系统中。

##添加EPEL存储库

sudo yum -y install epel-release

##添加RabbitMQ存储库

curl -s https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/script.rpm.sh | sudo bash

##添加Erlang存储库

curl -s https://packagecloud.io/install/repositories/rabbitmq/erlang/script.rpm.sh | sudo bash

添加存储库后,可以使用以下命令在Rocky Linux 8/AlmaLinux 8上安装RabbitMQ:

sudo yum install rabbitmq-server erlang

Total download size: 34 M

Installed size: 55 M

Is this ok [y/N]: y

2、在Rocky Linux 8/AlmaLinux 8上配置RabbitMQ

安装后,在所有节点上启动并启用服务:

sudo systemctl enable --now rabbitmq-server

检查服务状态:

$ systemctl status rabbitmq-server

允许端口通过防火墙:

sudo firewall-cmd --add-port=5672/tcp --permanent

sudo firewall-cmd --reload

将用户添加到RebbitMQ,因为默认用户只能登录到localhost:

$ sudo rabbitmqctl add_user admin StrongPassword

Adding user "admin" ...

Done. Don't forget to grant the user permissions to some virtual hosts!

为创建的用户分配管理员权限:

sudo rabbitmqctl set_user_tags admin administrator

您可以使用以下命令为admin RabbitMQ用户设置新密码:

sudo rabbitmqctl change_password username NewStrongPassword

创建后,可以使用以下命令列出用户:

$ sudo rabbitmqctl list_users

Listing users ...

user tags

admin []

admin [administrator]

guest [administrator]

您还需要添加虚拟主机才能使用RabbitMQ:

$ sudo rabbitmqctl add_vhost /new_vhost

Adding vhost "/new_vhost" ...

列出虚拟主机:

$ sudo rabbitmqctl list_vhosts

Listing vhosts ...

name

/new_vhost

/

现在授予Virtualhost的用户权限:

$ sudo rabbitmqctl set_permissions -p /new_vhost admin ".*" ".*" ".*"

Setting permissions for user "admin" in vhost "/new_vhost" ...

列出用户权限:

$ sudo rabbitmqctl list_user_permissions admin

Listing permissions for user "admin" ...

vhost configure write read

/new_vhost .* .* .*

3、配置RabbitMQ集群

在所有3个节点上安装并配置RabbitMQ后,现在就可以配置集群了。

首先,通过防火墙启用所需的端口:

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

sudo firewall-cmd --reload

接下来,您需要在所有节点上放置same cookie。因此,我们可以将node1上的cookie复制到其他节点:

$ sudo cat /var/lib/rabbitmq/.erlang.cookie; echo

MJRCZUCLEBOWRGTLYWEU

现在将cookie粘贴到节点2和节点3上:

$ sudo vim /var/lib/rabbitmq/.erlang.cookie

MJRCZUCLEBOWRGTLYWEU

保存文件并重新启动节点2和3上的服务:

sudo systemctl restart rabbitmq-server

停止RabbitMQ应用程序并重置服务器。

在节点2和节点3上:

$ sudo rabbitmqctl stop_app

Stopping rabbit application on node rabbit@rabbitmq_02 ...

$ sudo rabbitmqctl reset

Resetting node rabbit@rabbitmq_02 ...

现在将节点2和3上的RabbitMQ实例连接到节点1(rabbitq_01)。

在节点2和节点3上:

sudo rabbitmq-server -detached

sudo rabbitmqctl join_cluster rabbit@rabbitmq_01

在上面的命令中,请记住只使用主机名,而不是指定FQDN。例如rabbitmq_01。

现在启动应用程序:

sudo rabbitmqctl start_app

检查群集状态:

sudo rabbitmqctl cluster_status

样本输出:

\

\

从上面的输出中,我们都可以同意RabbitMQ集群使用3个节点运行。

4、配置RabbitMQ HA策略

HA策略在集群中的所有节点上启用队列镜像。可以使用以下命令进行设置:

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

Setting policy "ha-all" for pattern "." to "{"ha-mode":"all"}" with priority "0" for vhost "/" ...

验证策略是否已创建:

[alma@rabbitmq_02 ~]$ sudo rabbitmqctl list_policies

[sudo] password for alma: 

Listing policies for vhost "/" ...

/ ha-all . all {"ha-mode":"all"} 0

5、启用RabbitMQ web UI

RabbitMQ web UI提供了一种管理/监视RabbitMQ实例的简单方法。使用以下命令在所有3个节点上启用RabbitMQ web UI:

sudo rabbitmq-plugins enable rabbitmq_management

sudo systemctl restart rabbitmq-server

允许所需端口通过防火墙:

sudo firewall-cmd --zone=public --permanent --add-port=5671-5672/tcp --add-port=15672/tcp  --add-port=61613-61614/tcp --add-port=1883/tcp --add-port=8883/tcp

sudo firewall-cmd --reload

现在,使用URL访问其中一个节点上的web UI,地址格式是http://IP_address:15672,如下:

\

在此页面上,使用先前创建的用户登录。成功登录后,您将看到下面的仪表板,其中显示了所有节点:

\

现在,让我们通过在此节点上创建队列来测试复制:

\

一旦创建,队列就可以在集群中的任何其他节点上看到:

\

至此,已经在Rocky Linux 8/AlmaLinux 8上成功地建立了一个3节点的RabbitMQ集群。