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

docker搭建rabbit集群

1.去rabbitMQ官网拉去images

我当前使用的是最新版本的镜像:rabbitmq:3.12-management

2.创建一个集群专用网络

docker的容器相互隔离是不可通信的,我们自行创建一个网络后,创建容器时 给他们放在一起,就可以通信了。

docker network create rabbit-net  --driver bridge

我们的网卡名称为:rabbit-net

3.构建出三个实例

我们在做容器时候:run后面参数依次简单说明一下
-name 镜像名称
–hostname 修改主机名
-v 做了宿主机与容器文件映射
-p 做了端口通信
–network 把这几个节点放到同一个网卡上
-d 让容器后台执行
选择镜像版本号

node01
docker run --name rabbit01 --hostname=node01  \
-v /mydata/rabbitMQ/node01:/var/lib/rabbitmq  \
-p 5672:5672  \
-p 15672:15672  \
--network rabbit-net  \
-d  \
rabbitmq:3.12-management
node02
docker run --name rabbit02 --hostname=node02  \
-v /mydata/rabbitMQ/node02:/var/lib/rabbitmq  \
-p 5673:5672  \
-p 15673:15672  \
--network rabbit-net  \
-d  \
rabbitmq:3.12-management
node03
docker run --name rabbit03 --hostname=node03  \
-v /mydata/rabbitMQ/node03:/var/lib/rabbitmq  \
-p 5674:5672  \
-p 15674:15672  \
--network rabbit-net  \
-d  \
rabbitmq:3.12-management

4.修改各个容器的cookie

CLI如何验证节点:Erlang Cookie
RabbitMQ节点和 CLI 工具(例如rabbitmqctl)使用cookie来确定是否允许它们相互通信。
为了使两个节点能够通信,它们必须具有相同的共享密钥,称为 Erlang cookie。cookie 只是一串最多 255 个字符的字母数字字符。
每个集群节点都必须有相同的cookie。

下面将统一使用node01的cookie,以保证每个节点有相同的cookie。

[root@localhost node01]# cat .erlang.cookie 
QLPBURUFDGAORQHBQXIB
[root@localhost node02]# cat .erlang.cookie 
UJJVRAMWCGUDWFMUVZSK
[root@localhost node03]# cat .erlang.cookie 
QRMWUHLBULEHAYJNKPXZ

Node01的cookie:QLPBURUFDGAORQHBQXIB

把rabbit01容器中的/var/lib/rabbitmq/.erlang.cookie复制给rabbit02 rabbit03

由于我们已经做了宿主机与容器的文件映射,这里直接从宿主机网rabbit02 rabbit03即可

[root@localhost]# docker cp /mydata/rabbitMQ/node01/.erlang.cookie  rabbit02:/var/lib/rabbitmq/
Preparing to copy...
Copying to container - 2.048kB
Successfully copied 2.048kB to rabbit02:/var/lib/rabbitmq/
[root@localhost]# docker cp /mydata/rabbitMQ/node01/.erlang.cookie  rabbit03:/var/lib/rabbitmq/
Preparing to copy...
Copying to container - 2.048kB
Successfully copied 2.048kB to rabbit03:/var/lib/rabbitmq/

分别在宿主机node02 node03查看cookie文件

[root@localhost node02]# cat .erlang.cookie 
QLPBURUFDGAORQHBQXIB[root@localhost node02]# 
[root@localhost node03]# cat .erlang.cookie 
QLPBURUFDGAORQHBQXIB[root@localhost node03]# 

Node02 node03都变成了:QLPBURUFDGAORQHBQXIB

给node02 node03 节点重启 是他们cookie生效

[root@localhost]# docker restart rabbit02
rabbit02
[root@localhost]# docker restart rabbit03
rabbit03

5.容器相互挂接

rabbit01 - < rabbit02 -< rabbit03

在这里插入图片描述

我们这里 让rabbit01当做主节点 rabbit02挂到rabbit01上 rabbit03挂到rabbit02上

rabbit01操作步骤:

1.进入容器(docker exec -it rabbit01 bash)
2.只关闭rabbitmq服务(rabbitmqctl stop_app)(rabbitmqctl stop 会将 Erlang 虚拟机关闭,rabbitmqctl stop_app只关闭RabbitMQ 服务)
3.重置这个节点(rabbitmqctl reset)
4.启动服务(rabbitmqctl start_app)
5. exit

[root@localhost]# docker exec -it rabbit01 bash
root@node01:/# rabbitmqctl stop_app
Stopping rabbit application on node rabbit@node01 ...
root@node01:/# rabbitmqctl reset
Resetting node rabbit@node01 ...
root@node01:/# rabbitmqctl start_app
Starting node rabbit@node01 ...
root@node01:/# exit
exit
rabbit02操作步骤:

1.进入容器(docker exec -it rabbit02 bash)
2.只关闭rabbitmq服务(rabbitmqctl stop_app)(rabbitmqctl stop 会将 Erlang 虚拟机关闭,rabbitmqctl stop_app只关闭RabbitMQ 服务)
3.重置这个节点(rabbitmqctl reset)
4.加入节点rabbit01(rabbitmqctl join_cluster rabbit@node01)
5.启动服务(rabbitmqctl start_app)
6. exit

[root@localhost rabbitMQ]# docker exec -it rabbit02 bash
root@node02:/# rabbitmqctl stop_app
Stopping rabbit application on node rabbit@node02 ...
root@node02:/# rabbitmqctl reset
Resetting node rabbit@node02 ...
root@node02:/# rabbitmqctl join_cluster rabbit@node01
Clustering node rabbit@node02 with rabbit@node01
root@node02:/# rabbitmqctl start_app
Starting node rabbit@node02 ...
root@node02:/# exit
exit
rabbit03步骤:

1.进入容器(docker exec -it rabbit03 bash)
2.只关闭rabbitmq服务(rabbitmqctl stop_app)(rabbitmqctl stop 会将 Erlang 虚拟机关闭,rabbitmqctl stop_app只关闭RabbitMQ 服务)
3.重置这个节点(rabbitmqctl reset)
4.加入节点rabbit02(rabbitmqctl join_cluster rabbit@node02)
5.启动服务(rabbitmqctl start_app)
6. exit

[root@localhost]# docker exec -it rabbit03 bash
root@node03:/# rabbitmqctl stop_app
Stopping rabbit application on node rabbit@node03 ...
root@node03:/# rabbitmqctl reset
Resetting node rabbit@node03 ...
root@node03:/# rabbitmqctl join_cluster rabbit@node02
Clustering node rabbit@node03 with rabbit@node02
root@node03:/# rabbitmqctl start_app
Starting node rabbit@node03 ...
root@node03:/# exit
exit

至此,我们操作完成了 然后随便登录一个节点 看看我们的成果!

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

相关文章:

docker搭建rabbit集群

1.去rabbitMQ官网拉去images 我当前使用的是最新版本的镜像&#xff1a;rabbitmq:3.12-management 2.创建一个集群专用网络 docker的容器相互隔离是不可通信的&#xff0c;我们自行创建一个网络后&#xff0c;创建容器时 给他们放在一起&#xff0c;就可以通信了。 docker netw…...

西南科技大学C++程序设计实验一(C++基础知识)

目录 一、实验目的 二、实验任务 三、预习内容(复习书中前3章内容,说明C++相对于C的扩展有哪些?) 四、问题思考与讨论 一、实验目的 1.熟悉编程环境 2.掌握程序调试方法。 3.熟悉枚举类型、结构体类型等自定义数据类型的使用 4.熟悉函数的定义、说明与使用 5.熟悉引用…...

Rust内存布局

题图忘了来自哪里.. 整型,浮点型,struct,vec!,enum 本文是对 Rust内存布局 的学习与记录 struct A { a: i64, b: u64,}struct B { a: i32, b: u64,}struct C { a: i64, b: u64, c: i32,}struct D { a: i32, b: u64, c: i32, d: u64,}fn main(…...

android 12 添加菜单

1.创建一级菜单 packages\apps\Settings\res\xml\top_level_settings.xml <com.android.settings.widget.HomepagePreferenceandroid:fragment"com.android.settings.DeviceStatusSettings"android:icon"drawable/ic_settings_display_white"android:…...

Map 的 5 种遍历方式

Map 的 5 种遍历方式 强烈推荐 for-each entrySet()遍历 和 lambda 表达式遍历 &#xff0c;简洁又好用&#xff01;&#xff01;&#xff01; package com.maptest; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set;pub…...

Linux的基本指令 ( 一 )

目录 前言 Linux基本指令 快速认识五个指令 ls指令 补充内容 pwd指令 补充内容 cd指令 补充内容 重新认识指令 指令的本质 which指令 alias指令 最后 一个文件的三种时间 tree指令及安装 tree指令 前言 关于Linux操作系统的桌面&#xff0c;在学校教学中我们…...

【深度学习】学习率及多种选择策略

学习率是最影响性能的超参数之一&#xff0c;如果我们只能调整一个超参数&#xff0c;那么最好的选择就是它。相比于其它超参数学习率以一种更加复杂的方式控制着模型的有效容量&#xff0c;当学习率最优时&#xff0c;模型的有效容量最大。本文从手动选择学习率到使用预热机制…...

具有“真实触感”的动捕数据手套mhand pro,提供更精确的动作捕捉

随着人工智能的普及和万物互联&#xff0c;vr虚拟技术备受关注&#xff0c;为了更加真实的虚拟现实交互体验&#xff0c;动捕数据手套的使用逐渐普及&#xff0c;vr手套可以实时采集各手指关节运动数据&#xff0c;使用动捕数据手套可以在虚拟现实的场景中实现对真实手部运动的…...

Mongodb使用killCursors停止运行的cursor

cursor指向查询结果的游标&#xff0c;通过游标向下移动&#xff0c;获得下一条查询结果。MongoDB分批向用户返回数据结果。通过游标的移动&#xff0c; mongodb确定当前返回结果的位置&#xff0c;是否要加载更多数据到内存当中。cursor有默认的超时时间&#xff0c; 超时后cu…...

电脑风扇转一下停一下,无法正常开机问题解决

今天同事电话说电脑开不了机了&#xff0c;只听见风扇不停地呜呜地作响。笔者第一反应是不是硬件哪里出问题了&#xff0c;于是二话没说拿起心爱的螺丝刀就闪了过去。 按下电源&#xff0c;确实如电话所述。但感觉风扇并非一直在转&#xff0c;而是时断时续。由于听不大真切&a…...

无需部署服务器,如何结合内网穿透实现公网访问导航页工具Dashy

文章目录 简介1. 安装Dashy2. 安装cpolar3.配置公网访问地址4. 固定域名访问 简介 Dashy 是一个开源的自托管的导航页配置服务&#xff0c;具有易于使用的可视化编辑器、状态检查、小工具和主题等功能。你可以将自己常用的一些网站聚合起来放在一起&#xff0c;形成自己的导航…...

Go GORM简介

GORM&#xff08;Go Object-Relational Mapping&#xff09;是一个用于Go语言的ORM库&#xff0c;它提供了一种简单、优雅的方式来操作数据库。GORM支持多种数据库&#xff0c;包括MySQL、PostgreSQL、SQLite和SQL Server。以下是GORM的一些主要特性 全功能ORM&#xff1a;GORM…...

前端量子纠缠 效果炸裂 multipleWindow3dScene

我 | 在这里 &#x1f575;️ 读书 | 长沙 ⭐软件工程 ⭐ 本科 &#x1f3e0; 工作 | 广州 ⭐ Java 全栈开发&#xff08;软件工程师&#xff09; &#x1f383; 爱好 | 研究技术、旅游、阅读、运动、喜欢流行歌曲 ✈️已经旅游的地点 | 新疆-乌鲁木齐、新疆-吐鲁番、广东-广州…...

第十七章 处理空字符串和 Null 值 - XMLIGNORENULL、XMLNIL 和 XMLUSEMPTYELEMENT 的详细信息

文章目录 第十七章 处理空字符串和 Null 值 - XMLIGNORENULL、XMLNIL 和 XMLUSEMPTYELEMENT 的详细信息XMLIGNORENULL、XMLNIL 和 XMLUSEMPTYELEMENT 的详细信息XMLIGNORENULLXMLNILXMLUSEEMPTYELEMENT 导入值 第十七章 处理空字符串和 Null 值 - XMLIGNORENULL、XMLNIL 和 XML…...

Asp.net core WebApi 配置自定义swaggerUI和中文注释

1.创建asp.net core webApi项目 默认会引入swagger的Nuget包 <PackageReference Include"Swashbuckle.AspNetCore" Version"6.2.3" />2.配置基本信息和中文注释&#xff08;默认是没有中文注释的&#xff09; 2.1创建一个新的controller using Micr…...

Xilinx SDK获取代码运行时间

Xilinx SDK获取代码运行时间 一、API 头文件 “xtime_l.h”函数XTime_GetTime(XTime * xtime),获取周期数时钟频率宏 COUNTS_PER_SECOND 二、使用 #include "xtime_l.h"int main(){XTime tBegin, tEnd;unsigned int t_us;unsigned long long cycles;XTime_GetTim…...

【力扣】189. 轮转数组

【力扣】189. 轮转数组 文章目录 【力扣】189. 轮转数组1. 题目介绍2. 解法2.1 方法一&#xff1a;不太正规&#xff0c;但是简单2.2 方法二&#xff1a;使用额外的数组2.3 方法三&#xff1a;环状替换2.4 方法四&#xff1a;数组翻转 3. Danger参考 1. 题目介绍 给定一个整数…...

Spring 拾枝杂谈—Spring原生容器结构剖析(通俗易懂)

目录 一、前言 二、Spring快速入门 1.简介 : 2. 入门实例 : 三、Spring容器结构分析 1.bean配置信息的存储 : 2.bean对象的存储 : 3.bean-id的快捷访问 : 四、总结 一、前言 开门见山&#xff0c;11.25日开始我们正式进入Java框架—Spring的学习&#xff0c;此前&…...

Java核心知识点整理大全22-笔记

目录 19.1.14. CAP 一致性&#xff08;C&#xff09;&#xff1a; 可用性&#xff08;A&#xff09;&#xff1a; 分区容忍性&#xff08;P&#xff09;&#xff1a; 20. 一致性算法 20.1.1. Paxos Paxos 三种角色&#xff1a;Proposer&#xff0c;Acceptor&#xff0c;L…...

qt 5.15.2读取csv文件功能

qt 5.15.2读取csv文件功能 工程文件.pro 内容&#xff1a; QT core#添加网络模块 QT networkCONFIG c17 cmdline# You can make your code fail to compile if it uses deprecated APIs. # In order to do so, uncomment the following line. #DEFINES QT_DISABLE_DEPREC…...

51c自动驾驶~合集58

我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留&#xff0c;CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制&#xff08;CCA-Attention&#xff09;&#xff0c;…...

Spring Boot 实现流式响应(兼容 2.7.x)

在实际开发中&#xff0c;我们可能会遇到一些流式数据处理的场景&#xff0c;比如接收来自上游接口的 Server-Sent Events&#xff08;SSE&#xff09; 或 流式 JSON 内容&#xff0c;并将其原样中转给前端页面或客户端。这种情况下&#xff0c;传统的 RestTemplate 缓存机制会…...

在rocky linux 9.5上在线安装 docker

前面是指南&#xff0c;后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...

使用分级同态加密防御梯度泄漏

抽象 联邦学习 &#xff08;FL&#xff09; 支持跨分布式客户端进行协作模型训练&#xff0c;而无需共享原始数据&#xff0c;这使其成为在互联和自动驾驶汽车 &#xff08;CAV&#xff09; 等领域保护隐私的机器学习的一种很有前途的方法。然而&#xff0c;最近的研究表明&…...

大数据零基础学习day1之环境准备和大数据初步理解

学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 &#xff08;1&#xff09;设置网关 打开VMware虚拟机&#xff0c;点击编辑…...

Leetcode 3577. Count the Number of Computer Unlocking Permutations

Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接&#xff1a;3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯&#xff0c;要想要能够将所有的电脑解锁&#x…...

Java - Mysql数据类型对应

Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...

【算法训练营Day07】字符串part1

文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接&#xff1a;344. 反转字符串 双指针法&#xff0c;两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...

TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案

一、TRS收益互换的本质与业务逻辑 &#xff08;一&#xff09;概念解析 TRS&#xff08;Total Return Swap&#xff09;收益互换是一种金融衍生工具&#xff0c;指交易双方约定在未来一定期限内&#xff0c;基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...

【HTML-16】深入理解HTML中的块元素与行内元素

HTML元素根据其显示特性可以分为两大类&#xff1a;块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...