RabbitMQ集群搭建过程-3

2021-04-05 11:15:26 浏览数 (1)

一、副本集群

1. 架构图

默认情况下:RabbitMQ代理操作所需的所有数据、状态都将跨所有节点复制。这方面的一个例外是消息队列。默认情况下,消息队列位于一个节点上,尽管它们可以从所有节点看到和访问。

2. 环境准备

2.1. ip配置

三台已装好mq的主机

代码语言:javascript复制
node1: 192.168.176.3   mq1   master  主节点
node2: 192.168.176.4   mq2   repl1   副本节点
node3: 192.168.176.5   mq3   repl2   副本节点

2.2. hosts配置

修改mq1的hosts配置文件

代码语言:javascript复制
vim /etc/hosts

发送配置文件到mq2和mq3

代码语言:javascript复制
scp /etc/hosts root@mq2:/etc/
scp /etc/hosts root@mq3:/etc/

在mq2和mq3中查看hosts文件,检查是否发生变化

2.3. 检查mq服务

代码语言:javascript复制
systemctl status rabbitmq-server

注意:3台主机都要启动mq服务

2.4. 登陆web管理

3. 配置集群

3.1 关闭mq服务

  1. 关闭三台主机的mq服务
代码语言:javascript复制
systemctl stop rabbitmq-server
  1. 检查mq服务状态,确保已经关闭
代码语言:javascript复制
systemctl status rabbitmq-server

3.2 同步cookie

注意:必须保证三台主机的cookie是一致的。

  1. 将mq1的cookie同步到其他主机
代码语言:javascript复制
scp /var/lib/rabbitmq/.erlang.cookie root@mq2:/var/lib/rabbitmq/
scp /var/lib/rabbitmq/.erlang.cookie root@mq3:/var/lib/rabbitmq/
  1. 查看cookie是否一致

3.3 主节点后台启动mq服务

代码语言:javascript复制
rabbitmq-server -detached

后台启动完成后,可以使用命令查看集群状态

代码语言:javascript复制
rabbitmqctl cluster_status

发现当前mq1集群只有自己

3.4 从节点停止服务

代码语言:javascript复制
rabbitmqctl stop_app

3.5 从节点加入集群

注意:格式必须一致rabbit@主机名,这里只能写主机名,所有之前hosts文件映射尤为重要。

代码语言:javascript复制
rabbitmqctl join_cluster rabbit@mq1

3.6 从节点启动mq服务

代码语言:javascript复制
rabbitmqctl start_app

3.7 查看集群状态

代码语言:javascript复制
rabbitmqctl cluster_status

加入集群成功,也可以查看web管理页面

4. 总结

  • 搭建集群后,主节点和从节点的交换机和消息队列是一致的。
  • 如果主节点在没有配置消息持久化情况下宕机了,从节点的消息也不能使用,必须依赖于主节点。当主节点重启后,会恢复交换机和消息队列,但不会恢复队列中的消息数据。
  • 如果在主从节点正常的情况下,是可以通过从节点进行消费,它不是直接消费从节点,而是间接通过主节点进行消费。

二、镜像集群

1. 架构图

镜像队列机制就是将队列在三个节点之间设置主从关系,消息会在三个节点之间进行自动同步,且如果其中一个节点不可用,并不会导致消息丢失或服务不可用的情况,提升MQ集群的整体高可用性。

2. 环境准备

在副本集群基础上进行加工

3. 策略说明

4. 配置集群

4.1 查看当前策略

在任意节点上执行命令,查看当前的策略

代码语言:javascript复制
rabbitmqctl list_policies

4.2 添加策略

在任意节点上执行命令,添加策略

代码语言:javascript复制
rabbitmqctl set_policy ha-all '^hello' '{"ha-mode":"all", "ha-sync-mode":"automatic"}'

查看web界面

4.3 删除策略

代码语言:javascript复制
rabbitmqctl clear_policy ha-all

查看web界面

5. 总结

搭建集群后,主节点和从节点的交换机和消息队列是镜像的。如果此时主节点宕机了,从节点还能继续消费,Queues中的Node会替换成子节点,当主节点重启完成后,会加入到对应的Node子节点中,这样就形成了高可用架构。

0 人点赞