当前位置: 首页 > article >正文

037 RabbitMQ集群

文章目录

    • 集群搭建
      • 启动三个RabbitMQ
      • 进入RabbitMQ容器m1,重置rabbitmq服务
      • 进入RabbitMQ容器m2,加入集群:连接节点1rabbitmq服务
      • 进入RabbitMQ容器m3,加入集群:连接节点1rabbitmq服务
      • 启动完成查看集群状态
    • 集群存在问题

一般来说,如果只是为了学习RabbitMQ或者验证业务工程的正确性那么在本地环境或者测试环境上使
用其单实例部署就可以了,但是出于MQ中间件本身的可靠性、并发性、吞吐量和消息堆积能力等问题
的考虑,在生产环境上一般都会考虑使用RabbitMQ的集群方案。

RabbitMQ这款消息队列中间件产品本身是基于Erlang编写,Erlang语言天生具备分布式特性(通过同步
Erlang集群各节点的magic cookie来实现)。因此,RabbitMQ天然支持Clustering。集群是保证可靠性
的一种方式,同时可以通过水平扩展以达到增加消息吞吐量能力的目的,这里只需要保证erlang_cookie
的参数一致集群即可通信。

集群搭建

# docker run 命令解释
docker run --link 可以用来链接2个容器,使得源容器(被链接的容器)和接收容器(主动去链接
的容器)之间可以互相通信。
# -p 映射一个端口
# -v 挂载数据卷
# --name为当前容器设置一个别名
# -di 启动守护式容器
# -it 启动交互式容器
# 进入容器之后执行的命令/bin/bash
# -e 设置默认参数
# --hostname 设置当前容器中虚拟机的主机名称
# --link的格式: name:hostname
# name是源容器的名称;hostname是源容器在的hostname。

启动三个RabbitMQ

# 1.1 启动RabbitMQ1
docker run -d --hostname rabbitmq1 --name=m1 -p 15673:15672 -p 5673:5672 -e
RABBITMQ_ERLANG_COOKIE='rabbitmqcookie' rabbitmq:management
# -e 注入参数,RABBITMQ_ERLANG_COOKIE: erlang_cookie参数,集群中的节点必须保持一致
# 1.2 启动RabbitMQ2
docker run -d --hostname rabbitmq2 --name=m2 -p 15674:15672 -p 5674:5672 --
link m1:rabbitmq1 -e RABBITMQ_ERLANG_COOKIE='rabbitmqcookie'
rabbitmq:management
# 1.3 启动RabbitMQ3
docker run -d --hostname rabbitmq3 --name m3 -p 15675:15672 -p 5675:5672 --
link m2:rabbitmq2 --link m1:rabbitmq1 -e
RABBITMQ_ERLANG_COOKIE='rabbitmqcookie' rabbitmq:management

进入RabbitMQ容器m1,重置rabbitmq服务

#进入myrabbiratmq1容器
docker exec -it m1 bash
#停止rabbit应用
rabbitmqctl stop_app
#重置rabbitmq
rabbitmqctl reset
#启动rabbit应用
rabbitmqctl start_app

进入RabbitMQ容器m2,加入集群:连接节点1rabbitmq服务

#3.进入myrabbitmq2容器
docker exec -it m2 bash
#停止rabbit应用
rabbitmqctl stop_app
#重置rabbitmq
rabbitmqctl reset
#加入集群
rabbitmqctl join_cluster --ram rabbit@rabbitmq1
## --ram 设置内存节点
#启动rabbit应用
rabbitmqctl start_app

进入RabbitMQ容器m3,加入集群:连接节点1rabbitmq服务

#4.进入myrabbitmq3容器
docker exec -it m3 bash
#停止rabbit应用
rabbitmqctl stop_app
#重置rabbitmq
rabbitmqctl reset
#加入集群 硬盘节点
rabbitmqctl join_cluster rabbit@rabbitmq1
#启动rabbit应用
rabbitmqctl start_app

启动完成查看集群状态

#查看集群状态
rabbitmqctl cluster_status

注意:
集群中必须至少存在一个磁盘节点!!!

集群存在问题

上述配置的RabbitMQ集群模式,并不能保证队列的高可用性,尽管交换机绑定队列的内容,可以复制
到集群里的任何一个节点,但是队列内容不会复制,队列节点宕机直接导致该队列无法应用,只能等待
节点重启,所以要想在队列节点宕机或故障也能正常应用,就要复制队列内容到集群里的每个节点,须
要创建镜像队列。
镜像队列可以同步queue和message,当主queue挂掉,从queue中会有一个变为主queue来接替工
作。
镜像队列是基于普通的集群模式的,所以你还是得先配置普通集群,然后才能设置镜像队列。
镜像队列设置后,会分一个主节点和多个从节点,如果主节点宕机,从节点会有一个选为主节点,原先
的主节点起来后会变为从节点。

#设置镜像队列命令,随便在一台节点都可以执行
rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'

http://www.kler.cn/a/395380.html

相关文章:

  • 【Linux】多线程(中)
  • 电子电气架构 --- 基于以太网的电子电气架构概述
  • 大模型在蓝鲸运维体系应用——蓝鲸运维开发智能助手
  • 文心一言 VS 讯飞星火 VS chatgpt (389)-- 算法导论25.1 2题
  • 【Qt聊天室客户端】消息功能--发布程序
  • C++常用的新特性-->day06
  • 多窗口切换——selenium
  • 力扣 平衡二叉树-110
  • 【论文阅读】HITS: High-coverage LLM-based Unit Test Generation via Method Slicing
  • 【计算机视觉】FusionGAN
  • 【MySQL】数据库表连接简明解释
  • 【代码审计】常见漏洞专项审计-业务逻辑漏洞审计
  • TypeScript:现代 JavaScript 的超级集
  • rockylinux 8安装 gcc11.2
  • 用两行命令快速搭建深度学习环境(Docker/torch2.5.1+cu118/命令行美化+插件),包含完整的 Docker 安装步骤
  • 爬虫开发工具与环境搭建——环境配置
  • 火山引擎数据飞轮模式下的线上营销:内容产出更智能、人群触达更精准
  • Linux系统常用操作与命令指南
  • Apache服务安装
  • 单网页图库应用Single File PHP Gallery