【RabbitMQ】docker rabbitmq集群 docker搭建rabbitmq集群

docker rabbitmq集群 docker搭建rabbitmq集群

RabbitMQ提供了两种常用的集群模式
1.普通集群模式
2.镜像集群模式
普通集群模式只能同步主节点上的交换机和队列信息,但对于队列中的消息不做同步,主节点宕机也不能进行切换(故障转移)。

镜像集群模式在普通集群模式的基础上配置,可以使子节点备份master队列中的消息,也可以在master宕机时进行故障转移,切换至子节点提供服务。

由于镜像集群模式基于普通集群模式上进行配置,所以直接搭建普通集群模式。

普通集群搭建
首先要确保已经安装docker,从中央仓库拉取rabbitmq镜像

docker pull rabbitmq:management
在拉取镜像的时候闲着没事干,可以先创建目录后续用做挂载容器目录,这里我放在/tmp/下

mkdir /tmp/rabbitmqcluster
cd /tmp/rabbitmqcluster
mkdir rabbitmq01 rabbitmq02 rabbitmq03

运行rabbitmq镜像,需要多少个节点就启动多少个容器

##主节点
docker run -d --hostname rabbitmq01 --name rabbitmqCluster01 -v /tmp/rabbitmqcluster/rabbitmq01:/var/lib/rabbitmq -p 15672:15672 -p 5672:5672 -e RABBITMQ_ERLANG_COOKIE=‘rabbitmqCookie’ rabbitmq:management

##子节点
docker run -d --hostname rabbitmq02 --name rabbitmqCluster02 -v /tmp/rabbitmqcluster/rabbitmq02:/var/lib/rabbitmq -p 15673:15672 -p 5673:5672 -e RABBITMQ_ERLANG_COOKIE=‘rabbitmqCookie’ --link rabbitmqCluster01:rabbitmq01 rabbitmq:management

##子节点
docker run -d --hostname rabbitmq03 --name rabbitmqCluster03 -v /tmp/rabbitmqcluster/rabbitmq03:/var/lib/rabbitmq -p 15674:15672 -p 5674:5672 -e RABBITMQ_ERLANG_COOKIE=‘rabbitmqCookie’ --link rabbitmqCluster01:rabbitmq01 --link rabbitmqCluster02:rabbitmq02 rabbitmq:management

–hostsname 容器中的主机名,便于区分

–name 容器名

-v 挂载Linux的目录到容器内目录

-p 映射Linux系统的端口与容器内端口,注意要使用未被占用的端口,每个容器都有两个端口,15672为web页面的访问端口,5672为服务端口

-e 容器环境变量, RABBITMQ_ERLANG_COOKIE 是rabbitmq节点加入集群必须的认证手段

-link 使容器间可以通信

放行CentOS7虚拟机的端口

访问,并使用默认的guest账号登录(username:guest,password:guest)

http://192.168.16.223:15672

http://192.168.16.223:15673

http://192.168.16.223:15674

正常,继续下一步

使用docker exec进入主节点所在容器的主机

docker exec -it rabbitmqCluster01 /bin/bash

关闭rabbitmq应用,并重置节点数据,再重新启动应用

rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app
exit

进入子节点所在rabbitmq02主机

docker exec -it rabbitmqCluster02 /bin/bash

同样关闭应用,并重置节点数据,然后使用rabbitmqctl join_cluster指令加入主节点所在集群,完成后启动服务

rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster --ram rabbit@rabbitmq01
rabbitmqctl start_app
exit

然后进另一个子节点的主机,如法炮制

docker exec -it rabbitmqCluster03 /bin/bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster --ram rabbit@rabbitmq01
rabbitmqctl start_app
exit

此时可以在web界面的总览面板看到三个节点信息
在这里插入图片描述
此时搭建普通集群已完成

镜像集群配置
进入主节点所在容器主机

docker exec -it rabbitmqCluster01 /bin/bash

设置镜像集群策略(注意,策略可以在队列产生前设置,也可以在队列产生后设置)

rabbitmqctl set_policy --vhost “/MyVirtualHost” ha-all “^hello” ‘{“ha-mode”:“all”,“ha-sync-mode”:“automatic”}’

–vhost 需要使用镜像集群的虚拟主机(Virtual Host)也可不指定,不指定则视为"/"主机,这里我指定测试用的/MyVirtualHost

ha-all 是我指定的策略名

“^hello” 通配符匹配,这里指定队列名以hello开头的队列,如果需要指定所有队列使用 “^”

‘{“ha-mode”:“all”,“ha-sync-mode”:“automatic”}’ json格式的参数,其中ha-mode为镜像队列的模式,这里设置all,集群内所有节点都备份镜像;ha-sync-mode是消息队列同步方式,automatic自动同步

设置后在web界面可以看到队列的状态变化
在这里插入图片描述
删除策略,使用rabbitmqctl clear_policy --vhost 指令,name为你要删除的策略名,可选参数–vhost指定虚拟主机名,如果不指定默认为删除"/"的策略。这里因为我的策略是加在/MyVirtualHost这个虚拟主机上的,所以需要指定。

rabbitmqctl clear_policy ha-all --vhost “/MyVirtualHost”
clear成功

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/156802.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Python】PaddleOCR文字识别国产之光 从安装到pycharm中测试 (保姆级图文)

目录 官方项目地址Python环境搭建(也就是使用Anaconda的python)1. 安装Anaconda1. 打开终端并创建conda环境 安装PaddlePaddle(CPU演示)安装PaddleOCR whl包如果安装shapely库报错(我没有报错,其他类似库安…

Pygame中将鼠标形状设置为图片2-2

3 编写主程序 在主程序中,首先创建屏幕并且完成一些准备工作,之后在while循环中不断更新sprite实例即可。 3.1 创建屏幕及准备工作 创建屏幕及准备工作的代码如图5所示。 图5 创建屏幕及准备工作 其中,第20行代码调用pygame.mouse模块中的…

pycharm设置pyuic和pyrcc

pyuic设置 适合任何虚拟环境,直接用虚拟环境的python解决一切。。。 E:\anaconda3\envs\qt5\python.exe-m PyQt5.uic.pyuic $FileName$ -o $FileNameWithoutExtension$.py$FileDir$pyrcc设置 E:\anaconda3\envs\qt5\python.exe-m PyQt5.pyrcc_main $FileName$ -o…

《机器学习》第5章 神经网络

文章目录 5.1 神经元模型5.2 感知机与多层网络5.3 误差逆传播算法5.4 全局最小与局部最小5.5 其他常见神经网络RBF网络ART网络SOM网络级联相关网络Elman网络Boltzmann机 5.6 深度学习 5.1 神经元模型 神经网络是由具有适应性的简单单元组成的广泛并行互连的网络,它…

什么是MTU(Maximum Transmission Unit)?

最大传输单元MTU(Maximum Transmission Unit,MTU),是指网络能够传输的最大数据包大小,以字节为单位。MTU的大小决定了发送端一次能够发送报文的最大字节数。如果MTU超过了接收端所能够承受的最大值,或者是超…

基于安卓android微信小程序宠物交易小程序

运行环境 开发语言:Java 框架:ssm JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Maven包:Maven3.3.9 小程序框架&…

Spring-事务源码解析2

上一篇文章我们介绍了事务开启注解EnableTransactionManagement源码解析《Spring-事务源码解析1》 里面提到了2个关键组件,这里我们分析下Spring如何利用这2个组件来给Bean创建代理对象。 文章待整理 先说下执行流程,当请求进来的时候,会执…

mysql sql语句遍历树结构

mysqlsql语句遍历树结构 MySQL SQL语句遍历树结构实现步骤 理解树结构和遍历算法 在开始之前,我们首先需要了解什么是树结构以及如何遍历树结构。树结构是一种常用的数据结构,由各个节点和节点之间的关系构成。树结构的一个重要应用是表示具有层级关系…

UE4和C++ 开发-C++与UMG的交互2(C++获取UMG的属性)

1、...C获取UMG的属性 1.1、第一种方法&#xff1a;通过名称获取控件。 void UMyUserWidget::NativeConstruct() {Super::NativeConstruct();//通过名字&#xff0c;获取蓝图控件中的按钮引用。CtnClic Cast<UButton>(GetWidgetFromName(TEXT("Button_44"))…

企业精密空调运营,这才是最好的方法!

机房是现代企业和组织的核心&#xff0c;其中承载着重要的服务器和网络设备&#xff0c;为业务的持续运行提供支持。 机房内的温度、湿度和空气质量对设备的性能和可靠性至关重要。精密空调监控系统通过实时监测和智能控制&#xff0c;确保机房的环境条件始终在最佳状态&#x…

同城跑腿微信小程序源码系统完整搭建教程

今天给大家分享一个同城跑腿微信小程序源码系统的完整搭建教程&#xff0c;源代码全部开源&#xff0c;可二次开发&#xff0c;搭建起来也比较简单。 系统具体功能一览&#xff1a; 地图定位&#xff1a;用户可以通过地图定位找到附近的跑腿服务商&#xff0c;方便快捷。在线下…

生活中的视音频技术

生活中的视音频技术 平时我们打开电脑中自己存电影的目录的话&#xff0c;一般都会如下图所示&#xff0c;一大堆五花八门的电影。&#xff08;其实专业的影视爱好者一概会把影视文件分门别类的&#xff0c;但我比较懒&#xff0c;一股脑把电影放在了一起&#xff09; 因为下载…

【C#】标准WebService Soap1.1 兼容 ContentType: application/xml

一、问题描述 1.1 ESB平台要求 ContentType&#xff1a;application/xml Soap协议版本&#xff1a;1.1 1.2 提供的 WebService 接口 语言&#xff1a;C# 目标框架&#xff1a;.NetFramework 4.6.1 1.3 Postman 测试结果 HTTP Error 415.0 - Unsupported Media Type 服务器…

用什么工具来画UML?

2023年10月9日&#xff0c;周一晚上 目录 我的决定 关于rational rose UML工具有哪些 相关资料 我的决定 我决定用plantUML、draw.io或starUML就可以了 其实没必要在意工具&#xff0c; 重要的是能把图画出来、把图画好画规范&#xff0c; 重要的是知道怎么去画图、把意…

vue3 + element Plus实现表格根据关键字合并行,并实现行的增删改操作

根据关键字合并表格 1.实现初始化表格2.实现添加班级与学生的功能3.添加的弹窗4.删除班级5.删除学生 首先看最终实现的效果 1.实现初始化表格 这里主要用到的是表格的span-method这个方法 <template><div class"main-page"><div class"flex-en…

多线程锁-死锁案例和排查命令

3.5 死锁及排查 3.5.1 概念 死锁是指两个或两个以上的线程在执行过程中&#xff0c;因抢夺资源而造成的一种互相等待的现象&#xff0c;若无外 力干涉&#xff0c;则它们无法再继续推进下去。 产生原因&#xff1a; 系统资源不足进程运行推进顺序不合适系统资源分配不当 3…

MongoDB 索引和常用命令

一、基本常用命令 1.1 案例需求 存放文章评论的数据存放到 MongoDB 中&#xff0c;数据结构参考如下&#xff0c;其中数据库为 articledb&#xff0c; 专栏文章评论 comment 字段名称 字段含义 字段类型 备注 _id ID ObjectId或String Mongo的主键的字段 articlei…

Android Studio新建项目教程

Android Studio新建项目教程 一、创建新项目 二、选择空白页项目类型 配置然后finish 等待项目完成初试化 等待初始化结束&#xff0c;创建完成 三、运行创建的APP

京东历史价格数据接口,京东商品历史价格接口,京东API接口

京东商品历史价格数据接口采集方法如下&#xff1a; 注册京东开发者账号&#xff0c;并创建应用&#xff0c;获取到应用ID&#xff08;appID&#xff09;、应用密钥&#xff08;appSecret&#xff09;以及访问令牌&#xff08;accessToken&#xff09;。获取接口请求地址。根据…

华为数通方向HCIP-DataCom H12-831题库(单选题:241-260)

第241题 某园区部署了IPV6进行业务测试,该网络中有4台路由器(R1R2、R3和R),运行OSPFV3实现Pv6网络的互联互通。有一台新的路由器R5需要接入网络进行测试,某工程师通过在R4的OSPFV3进程中引入直连路由,实现园区网内的设备能够访问R5的GEO/0/1口地址。关千该场景的描述,错误…