上一篇 下一篇 分享链接 返回 返回顶部

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

发布人:Minchunlin 发布时间:2021-02-16 16:59 阅读量:1344

在本文中,我们将在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 群集。现在,您的集群可以在所有节点之间共享配置信息,包括拓扑和安全信息。

目录结构
全文