在 Ubuntu 20.04 上设置 RabbitMQ 集群

介绍

RabbitMQ 是一个开源的消息队列软件 二郎OTP. 它实现了 AMQP(高级消息队列协议),这是一种消息传递协议,使符合要求的客户端应用程序能够与符合要求的消息传递中间件代理进行通信。 此外,RabbitMQ 使用插件与流行的消息传递解决方案进行通信,例如 MQTT(消息队列遥测传输)和面向文本的流式消息传递协议。

单个服务器实例的故障可能导致单点故障。 为了避免这种情况,我们安装了一个RabbitMQ集群。 与单个实例相比,这实现了更高的可用性和吞吐量。 在本文中,您将学习怎样在 Ubuntu 20.04 服务器上安装和配置 RabbitMQ 集群。

先决条件

部署两个或更多完全更新的 Vultr Ubuntu 20.04 服务器。 在两台服务器上创建一个具有 sudo 访问权限的非 root 用户。 在所有服务器上安装 RabbitMQ Server Ubuntu 20.04 LTS。

1. 配置集群主机

对于所有部署的服务器,将使用一个将其他节点加入集群。 集群中的所有节点都是peer节点; 也就是说,所有节点都是相同的,并且没有一个在功能上取代另一个。 在本文中,我们将使用两个对等节点,例如:

192.0.2.10 rabbitmq-1
192.0.2.11 rabbitmq-2

节点上 兔子MQ-1 将静态主机名更改为 rabbitmq-1.

$ sudo hostnamectl set-hostname rabbitmq-1 --static

节点上 兔子MQ-2 将静态主机名更改为 rabbitmq-2.

$ sudo hostnamectl set-hostname rabbitmq-2 --static

以具有 sudo 访问权限和编辑主机文件的非 root 用户身份通过​​ SSH 连接到所有服务器 /etc/hosts 在所有节点中。

$ sudo nano /etc/hosts

在文件中添加以下代码。

192.0.2.10 rabbitmq-1
192.0.2.11 rabbitmq-2

使用主机名 Ping 所有节点。

$ ping -c 3 rabbitmq-1
$ ping -c 3 rabbitmq-2

重新启动所有节点以反映主机名更改。

$ sudo reboot

RabbitMQ 对等节点和 CLI 工具使用 cookie 来确定它们是否可以相互通信。 为了让两个节点进行通信,它们必须具有相同的共享秘密,称为 Erlang cookie。

从中复制 Cookie rabbitmq-1 节点到 rabbitmq-2. 如果还有其他节点,也复制到它们。

兔子MQ-1 节点,打开文件并复制所有内容。

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

兔子MQ-2 节点,打开文件并粘贴内容 兔子MQ-1. 然后,在任何情况下对所有其他剩余节点执行此操作。

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

3.配置RabbitMQ加入集群

应该重新配置所有其他 RabbitMQ 对等节点以加入第一个节点上的集群 rabbitmq-1. 此步骤应适用于除第一个节点之外的所有节点。

重启RabbitMQ服务。

$ sudo systemctl restart rabbitmq-server

停止应用程序。

$ sudo rabbitmqctl stop_app

重置rabbitmq。

$ sudo rabbitmqctl reset

将节点加入集群。

$ sudo rabbitmqctl join_cluster [email protected]

开始申请流程。

$ sudo rabbitmqctl start_app

检查集群的状态。

$ sudo rabbitmqctl cluster_status

4.配置RabbitMQ队列镜像

在所有节点上创建 HA 策略以允许队列镜像到集群中的所有节点。 在所有节点上执行此操作。

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

列出配置的策略。

$ sudo rabbitmqctl list_policies

为所有节点启用 RabbitMQ 管理仪表板,以从特定仪表板访问所有对等节点统计信息。

$ sudo rabbitmq-plugins enable rabbitmq_management

启用 Web 管理门户的插件后,您可以转到浏览器并通过以下方式访问该页面 https://your_IP:15672. 例子:

https://192.0.2.11:15672

登录 admin 作为您的用户名和 SecurePassword 作为你的密码。 确保您修改 SecurePassword 到您自己的密码。 只有激活了管理员帐户的服务器才能登录。 第 5 步说明了怎样操作。

5. 添加管理账户(可选)

要从首选服务器访问仪表板,您可以添加管理员帐户来访问它。

默认用户 guest 只能通过登录 本地主机. 创建一个 行政人员 帐户以访问仪表板。 确保您修改 SecurePassword 到您自己的密码。

$ sudo rabbitmqctl add_user admin SecurePassword
$ sudo rabbitmqctl set_user_tags admin administrator

结论

您现在已经在您的服务器上安装了 RabbitMQ 集群。 您的 行政人员 所有对等节点上的帐户将使您拥有对服务器的所有访问权限。 您现在可以从仪表板配置您的 RabbitMQ 集群。

更多信息

有关 RabbitMQ 集群的更多信息,请参阅 官方文件.

注:本教程在Vultr VPS上测试通过,如需部署请前往Vultr.com

相关阅读:

Posted in: LinuxTags: