更新时间:2023-01-20 10:21:10浏览次数:796+次
本文介绍如何在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集群。