如何在Ubuntu服务器上配置RabbitMQ集群?

在本文中,我们将在Ubuntu 20.04服务器上设置一个三节点RabbitMQ集群。
准备工作:三台Ubuntu 20.04系统服务器。每台服务器上配置了root密码。
在开始之前,您需要将系统软件包更新为最新版本。您可以通过在每个节点上运行以下命令来更新它们:
apt-get update -y
所有软件包更新后,您需要在每个节点上设置/etc/hosts文件。这样他们就可以通过主机名进行通信。
使用以下命令在每个节点上编辑/etc/hosts文件:
nano /etc/hosts
添加以下行:
192.168.0.10 node1
192.168.0.11 node2
192.168.0.12 node3
完成后保存并关闭文件。接下来,你就可以进行下一步了。
1、安装 RabbitMQ 服务器
接下来,您需要在每个节点上安装 RabbitMQ 服务器包。您只需运行以下命令即可安装。
apt-get install rabbitmq-server -y
安装完成后,使用以下命令启动 RabbitMQ 服务并使其在系统重启时启动。
systemctl start rabbitmq-server
systemctl enable rabbitmq-server
您还可以使用以下命令验证 RabbitMQ 服务的状态。
systemctl status rabbitmq-server
此时,RabbitMQ 服务器已在每个节点上安装并运行。现在您可以进行下一步。
2、启用 RabbitMQ 管理插件
RabbitMQ 管理插件提供了一个基于 HTTP 的 API,可用于通过 Web 浏览器监控和管理 RabbitMQ 节点和集群。默认情况下,它在 TCP 端口 15672 上运行。
您可以通过在每个节点上运行以下命令来启用 RabbitMQ 管理插件。
rabbitmq-plugins enable rabbitmq_management
接下来,重新启动 RabbitMQ 服务以应用这些更改。
systemctl restart rabbitmq-server
您可以使用以下命令验证监听端口。
netstat -tunelp | grep 15672
3、设置 RabbitMQ 集群
默认情况下,每个节点上的 /var/lib/rabbitmq/.erlang.cookie 文件是相同的。为了设置 RabbitMQ 集群,您需要将 /var/lib/rabbitmq/.erlang.cookie 文件从 node1 复制到其他节点。
在node1上,运行以下命令将/var/lib/rabbitmq/.erlang.cookie文件复制到其他节点。
scp /var/lib/rabbitmq/.erlang.cookie root@192.168.0.11:/var/lib/rabbitmq/
scp /var/lib/rabbitmq/.erlang.cookie root@192.168.0.12:/var/lib/rabbitmq/
接下来,你需要设置node2和node3加入集群node1。
首先,重新启动RabbitMQ服务,并在node2和node3上使用以下命令停止应用程序。
systemctl restart rabbitmq-server
rabbitmqctl stop_app
在node2上,通过运行以下命令在node1上加入集群:
rabbitmqctl join_cluster rabbit@node1
在node2上,用以下命令启动应用程序。
rabbitmqctl start_app
在node3上,通过运行以下命令加入node1上的集群。
rabbitmqctl join_cluster rabbit@node1
在node3上,用以下命令启动应用程序。
rabbitmqctl start_app
完成后,在node1上运行以下命令来检查集群的状态。
rabbitmqctl cluster_status
4、设置管理员用户
接下来,您需要为RabbitMQ服务器创建一个新的管理员用户,并删除默认的 "guest "用户。
您可以通过在node1上运行以下命令来创建一个名为 "hitesh "和密码 "password "的新用户。
rabbitmqctl add_user hitesh password
接下来,用以下命令将hitesh用户配置为管理员。
rabbitmqctl set_user_tags hitesh administrator
接下来,授予hitesh用户修改、写入、读取所有vhosts的权限。
rabbitmqctl set_permissions -p / hitesh ".*" ".*" ".*"
接下来,用以下命令删除客人用户。
rabbitmqctl delete_user guest
现在你可以用下面的命令列出所有用户。
rabbitmqctl list_users
你在节点1上创建的用户将被自动复制到集群的所有节点上。
5、RabbitMQ 设置队列镜像
默认情况下,队列的内容位于单个节点上。因此,您需要设置 "ha策略 "集群,以便将队列镜像和复制到所有集群节点。
为此,请创建一个名为'ha-all'的ha策略,RabbitMQ集群上的所有队列都将镜像到集群上的所有节点。
rabbitmqctl set_policy ha-all ".*" '{"ha-mode":"all"}'
接下来,创建一个名为'ha-two'的ha策略,所有队列名称都以'two'开头,将镜像到集群上的两个节点。
rabbitmqctl set_policy ha-two "^two\." '{"ha-mode":"exactly","ha-params":2,"ha-sync-mode":"automatic"}'
接下来,创建一个名为'ha-nodes'的高可用性策略,它将包含所有名称以'nodes'开头的队列。我们将镜像到集群中的两个特定节点'node2'和'node3'。
rabbitmqctl set_policy ha-nodes "^nodes\." '{"ha-mode":"nodes","ha-params":["rabbit@node2", "rabbit@node3"]}'
现在你可以通过运行以下命令来列出所有配置的策略。
rabbitmqctl list_policies;
完成后,你就可以进行下一步了。
6、访问 RabbitMQ 集群
现在,您可以通过在 Web 浏览器中输入端口为 15672(如 http://192.168.0.10:15672/)的任意节点的 IP 地址来访问 RabbitMQ Web 界面。您应该会看到 RabbitMQ 登录页面。

输入您的管理员用户名、密码,然后点击登录按钮。您应该会看到RabbitMQ的仪表板,如下图所示。

接下来,单击 "'Admin"管理标签菜单,然后单击 "Policies "策略菜单。您应该会在以下屏幕中看到我们创建的所有 RabbitMQ ha 策略。

至此,您已在 Ubuntu20.04 服务器上成功设置了三节点 RabbitMQ 群集。现在,您的集群可以在所有节点之间共享配置信息,包括拓扑和安全信息。