前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >RabbitMQ集群搭建过程-3

RabbitMQ集群搭建过程-3

作者头像
Remember_Ray
发布2021-04-05 11:15:26
7630
发布2021-04-05 11:15:26
举报
文章被收录于专栏:Ray学习笔记Ray学习笔记

一、副本集群

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子节点中,这样就形成了高可用架构。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-03-04|,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、副本集群
    • 1. 架构图
      • 2. 环境准备
        • 2.1. ip配置
        • 2.2. hosts配置
        • 2.3. 检查mq服务
        • 2.4. 登陆web管理
      • 3. 配置集群
        • 3.1 关闭mq服务
        • 3.2 同步cookie
        • 3.3 主节点后台启动mq服务
        • 3.4 从节点停止服务
        • 3.5 从节点加入集群
        • 3.6 从节点启动mq服务
        • 3.7 查看集群状态
      • 4. 总结
      • 二、镜像集群
        • 1. 架构图
          • 2. 环境准备
            • 3. 策略说明
              • 4. 配置集群
                • 4.1 查看当前策略
                • 4.2 添加策略
                • 4.3 删除策略
              • 5. 总结
              相关产品与服务
              消息队列 CMQ 版
              消息队列 CMQ 版(TDMQ for CMQ,简称 TDMQ CMQ 版)是一款分布式高可用的消息队列服务,它能够提供可靠的,基于消息的异步通信机制,能够将分布式部署的不同应用(或同一应用的不同组件)中的信息传递,存储在可靠有效的 CMQ 队列中,防止消息丢失。TDMQ CMQ 版支持多进程同时读写,收发互不干扰,无需各应用或组件始终处于运行状态。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档