RabbitMQ集群部署之普通模式

这篇具有很好参考价值的文章主要介绍了RabbitMQ集群部署之普通模式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.集群分类

RabbitMQ的官方文档中,讲述了两种集群的配置方式:

  • 普通模式:普通模式集群不进行数据同步,每个MQ都有自己的队列、数据信息(其它元数据信息如交换机等会同步)。例如我们有2个MQmq1,和mq2,如果你的消息在mq1,而你连接到了mq2,那么mq2会去mq1拉取消息,然后返回给你。如果mq1宕机,消息就会丢失。
  • 镜像模式:与普通模式不同,队列会在各个mq的镜像节点之间同步,因此你连接到任何一个镜像节点,均可获取到消息。而且如果一个节点宕机,并不会导致数据丢失。不过,这种方式增加了数据同步的带宽消耗。

我们先来看普通模式集群,我们的计划部署3节点的mq集群:

主机名 控制台端口 amqp通信端口
mq1 15672--->15672 25672---> 5672
mq2 15673---> 15672 25673---> 5672
mq3 15674---> 15672 25674 ---> 5672

集群中的节点标示默认都是:rabbit@[hostname],因此以上三个节点的名称分别为:

  • rabbit@mq1
  • rabbit@mq2
  • rabbit@mq3

2.获取cookie

RabbitMQ底层依赖于Erlang,而Erlang虚拟机就是一个面向分布式的语言,默认就支持集群模式。集群模式中的每个RabbitMQ节点使用cookie来确定它们是否被允许相互通信。

要使两个节点能够通信,它们必须具有相同的共享秘密,称为Erlang cookiecookie 只是一串最多 255 个字符的字母数字字符。

每个集群节点必须具有相同的cookie。实例之间也需要它来相互通信。

我们先在之前启动的mq容器中获取一个cookie值,作为集群的cookie。执行下面的命令:

docker exec -it mq cat /var/lib/rabbitmq/.erlang.cookie

可以看到cookie值如下:

TUCJVNAONNFSSVRDJGSW

RabbitMQ集群部署之普通模式

接下来,停止并删除当前的mq容器,我们重新搭建集群。

docker rm -f mq

3.准备集群配置

/home/rabbitmq目录新建一个配置文件rabbitmq.conf

cd /home/rabbitmq
# 创建文件
touch rabbitmq.conf

文件内容如下:

loopback_users.guest = false
listeners.tcp.default = 5672
cluster_formation.peer_discovery_backend = rabbit_peer_discovery_classic_config
cluster_formation.classic_config.nodes.1 = rabbit@mq1
cluster_formation.classic_config.nodes.2 = rabbit@mq2
cluster_formation.classic_config.nodes.3 = rabbit@mq3

再创建一个文件,记录cookie

cd /home/rabbitmq
# 创建cookie文件
touch .erlang.cookie
# 写入cookie
echo "TUCJVNAONNFSSVRDJGSW" > .erlang.cookie
# 修改cookie文件的权限
chmod 600 .erlang.cookie

RabbitMQ集群部署之普通模式

准备三个目录mq1mq2mq3

cd /home/rabbitmq
# 创建目录
mkdir mq1 mq2 mq3

然后拷贝rabbitmq.confcookie文件到mq1mq2mq3

# 进入/home/rabbitmq
cd /home/rabbitmq
# 拷贝
cp rabbitmq.conf mq1
cp rabbitmq.conf mq2
cp rabbitmq.conf mq3
cp .erlang.cookie mq1
cp .erlang.cookie mq2
cp .erlang.cookie mq3

RabbitMQ集群部署之普通模式

4.启动集群

创建一个网络:

docker network create mq-net

运行命令

docker run -d --net mq-net \
-v ${PWD}/mq1/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf \
-v ${PWD}/.erlang.cookie:/var/lib/rabbitmq/.erlang.cookie \
-e RABBITMQ_DEFAULT_USER=dcxuexi \
-e RABBITMQ_DEFAULT_PASS=123456 \
--name mq1 \
--hostname mq1 \
-p 25672:5672 \
-p 15672:15672 \
rabbitmq:3.11-management
docker run -d --net mq-net \
-v ${PWD}/mq2/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf \
-v ${PWD}/.erlang.cookie:/var/lib/rabbitmq/.erlang.cookie \
-e RABBITMQ_DEFAULT_USER=dcxuexi \
-e RABBITMQ_DEFAULT_PASS=123456 \
--name mq2 \
--hostname mq2 \
-p 25673:5672 \
-p 15673:15672 \
rabbitmq:3.11-management
docker run -d --net mq-net \
-v ${PWD}/mq3/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf \
-v ${PWD}/.erlang.cookie:/var/lib/rabbitmq/.erlang.cookie \
-e RABBITMQ_DEFAULT_USER=dcxuexi \
-e RABBITMQ_DEFAULT_PASS=123456 \
--name mq3 \
--hostname mq3 \
-p 25674:5672 \
-p 15674:15672 \
rabbitmq:3.11-management

RabbitMQ集群部署之普通模式

RabbitMQ集群部署之普通模式

5.测试

mq1这个节点上添加一个队列:

RabbitMQ集群部署之普通模式

如图,在mq2mq3两个控制台也都能看到:

RabbitMQ集群部署之普通模式

RabbitMQ集群部署之普通模式

5.1.数据共享测试

点击这个队列,进入管理页面:

RabbitMQ集群部署之普通模式

然后利用控制台发送一条消息到这个队列:

RabbitMQ集群部署之普通模式

结果在mq2mq3上都能看到这条消息:

RabbitMQ集群部署之普通模式

5.2.可用性测试

我们让其中一台节点mq1宕机:

docker stop mq1

然后登录mq2mq3的控制台,发现simple.queue也不可用了:

RabbitMQ集群部署之普通模式

说明数据并没有拷贝到mq2mq3文章来源地址https://www.toymoban.com/news/detail-488156.html

到了这里,关于RabbitMQ集群部署之普通模式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • RabbitMQ集群环境搭建-镜像模式

    集群模式非常经典的就是Mirror镜像模式,保证100%数据不丢失,在实际工作中也是用的最多的。并且实现集群非常的简单,一般互联网大厂都会构建这种镜像集群模式。 Mirror镜像队列,目的是为了保证rabbitmq数据的高可靠性解决方案,主要就是实现数据的同步,一般来讲是2-

    2024年02月14日
    浏览(54)
  • RabbitMQ 部署及配置详解(集群部署)

    单机部署请移步 : RabbitMQ 部署及配置详解 (单机) RabbitMQ 集群是一个或 多个节点,每个节点共享用户、虚拟主机、 队列、交换、绑定、运行时参数和其他分布式状态。 通过在配置文件中列出群集节点以声明方式 以声明方式使用基于 DNS 的发现 以声明方式使用 AWS (EC2) 实

    2024年02月07日
    浏览(45)
  • RabbitMQ 集群部署

    RabbiMQ  是用  Erlang  开发的,集群非常方便,因为  Erlang  天生就是一门分布式语言,但其本身并不支持负载均衡。 RabbitMQ  的集群节点包括内存节点、磁盘节点。 RabbitMQ  支持消息的持久化,也就是数据写在磁盘上,最合适的方案就是既有内存节点,又有磁盘节点。 Rabb

    2024年02月15日
    浏览(38)
  • RabbitMQ集群部署指南

    我们在Centos7虚拟机中使用Docker来安装。 方式一:在线拉取 方式二:从本地加载 在课前资料已经提供了镜像包: 上传到虚拟机中后,使用命令加载镜像即可: 执行下面的命令来运行MQ容器: 官方的安装指南地址为:https://blog.rabbitmq.com/posts/2015/04/scheduling-messages-with-rabbitmq 上

    2024年02月11日
    浏览(36)
  • RabbitMQ高可用集群部署

    2023年06月29日
    浏览(52)
  • 【RabbitMQ实战】07 3分钟部署一个RabbitMQ集群

    我们还是利用docker来安装RabbitMQ集群。3分钟安装一个集群,开始。 前提条件,docker安装了docker-compose。如果没安装的话,参考这里 docker-compose文件参考bitnami官网:https://github.com/bitnami/containers/tree/main/bitnami/rabbitmq#setting-up-a-cluster 这是最简单的方式安装一个RabbitMQ集群 docker-co

    2024年02月07日
    浏览(40)
  • RabbitMQ 消息中间件与集群的部署

    1、消息中间件 1、简介 消息中间件也可以称消息队列,是指用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息队列模型,可以在分布式环境下扩展进程的通信。 当下主流的消息中间件有RabbitMQ、Kafka、

    2024年02月21日
    浏览(48)
  • docker-compose部署rabbitmq集群

    1、集群分类 RabbitMQ的是基于Erlang语言编写,而Erlang又是一个面向并发的语言,天然支持集群模式。 RabbitMQ的集群以下分类: 标准集群:是一种分布式集群,将队列分散到集群的各个节点,从而提高整个集群的并发能力。 镜像集群:是一种主从集群,标准集群的基础上,添加

    2024年02月16日
    浏览(44)
  • 用docker-compose部署Rabbitmq三节点集群部署方案

    主机名 IP node1 10.4.2.10 node2 10.4.2.59 node3 10.4.2.134 (1) 在/root目录下先创建一个rabitmq目录用于存放文件 mkdir  rabitmq (2)修改主机名和域名解析hosts文件 (1)修改主机名 hostnamectl set-hostname  node1    hostnamectl set-hostname  node2 hostnamectl set-hostname  node3 node1  node2   node3 分别对应

    2024年02月04日
    浏览(55)
  • Docker高级——Docker部署RabbitMQ(单机,集群,仲裁队列)

    我们在Centos7虚拟机中使用Docker来安装。 方式一:在线拉取 方式二:从本地加载 在课前资料已经提供了镜像包: 上传到虚拟机中后,使用命令加载镜像即可: 执行下面的命令来运行MQ容器: 接下来,我们看看如何安装RabbitMQ的集群。 在RabbitMQ的官方文档中,讲述了两种集群

    2024年02月16日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包