如何在Ubuntu 20.04云服务器上设置RabbitMQ集群?

  • 发布时间:2022-04-06 08:39:29
  • 阅读次数:964

RabbitMQ是一款基于Erlang OTP的开源消息队列软件,采用AMQP(高级消息队列)协议,支持客户端应用程序和消息中间件代理之间进行通信。除此之外,RabbitMQ使用插件和流行的消息队列协议进行交互,如MQTT(Message Queuing Telemetry Transport)、STOMP(Streaming Text Oriented Messaging Protocol)等。

我们知道,单台服务器部署可能会引起单点故障,因此我们需要部署RabbitMQ集群方案。集群方案相比单机方案拥有更高的可靠性和吞吐量。这篇帮助介绍如何在一台Ubuntu 20.04云服务器上安装设置RabbitMQ集群。我们需要准备两台更新到最新状态的Ubuntu 20.04云服务器,并且在这两台云服务器上都按照好RabbitMQ服务端。

设置节点主机名

对于集群中的全部云服务器而言,都是平级的节点,承担的角色都是一样的,并没有功能上的差异。假设两台云服务器的IP地址和主机名如下:

  • 192.0.2.10 rabbitmq-1
  • 192.0.2.11 rabbitmq-2

执行以下命令,设置两台云服务器的主机名。

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

然后远程登录这两台云服务器,编辑/etc/hosts文件。

$ sudo nano /etc/hosts

分别增加以下代码,将主机名和IP地址对应起来。

192.0.2.10 rabbitmq-1
192.0.2.11 rabbitmq-2

重启云服务器,让主机名生效。

复制RabbitMQ cookie

RabbitMQ节点之间使用cookie技术来进行通信。要让节点之间能够相互通信,必须拥有同样的共享密文,也被称为cookie。因此,我们需要将cookie信息从rabbitmq-1节点复制到rabbitmq-2节点。

远程登录rabbitmq-1节点,打开下面的文件并复制全部内容。

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

然后远程登录rabbitmq-2节点,打开下面的文件并粘贴从rabbitmq-1节点复制的内容。如果有其他节点,请重复以上操作。

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

设置节点加入集群

接下来,我们需要把全部节点加入到集群中。除了第一个rabbitmq-1节点之外,登录其他节点执行以下命令。

$ sudo systemctl restart rabbitmq-server
$ sudo rabbitmqctl stop_app
$ sudo rabbitmqctl reset
$ sudo rabbitmqctl join_cluster rabbit@rabbitmq-1
$ sudo rabbitmqctl start_app

执行完毕后,检查节点的状态。

$ sudo rabbitmqctl cluster_status

创建队列镜像

为确保高可用,集群中的所有节点需要创建队列镜像。远程登录各节点后,执行以下命令。

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

启用管理平台

在某台云服务器上启用RabbitMQ管理平台,方便在统一界面上管理全部节点,注意修改SecurePassword为初始密码。

$ sudo rabbitmq-plugins enable rabbitmq_management
$ sudo rabbitmqctl add_user admin SecurePassword
$ sudo rabbitmqctl set_user_tags admin administrator

至此,我们已经完成了RabbitMQ集群的安装设置,可以通过管理员账号登录管理平台,对RabbitMQ集群进行各项设置。

【全文完】

< 上一篇:如何在Ubuntu 20.04云服务器上安装RabbitMQ? 下一篇:如何在Ubuntu 20.04云服务器上安装使用Apache Hadoop? >