使用Docker部署RabbitMQ集群

2023-11-11

使用Docker部署RabbitMQ集群

概述
本文重点介绍的Docker的使用,以及如何部署RabbitMQ集群,最基础的Docker安装,本文不做过多的描述,读者可以自行度娘。

Windows10上Docker的安装

因为本人用的是Windows系统,所有推荐一个不错的安装文章,详见:https://blog.csdn.net/xiaoping0915/article/details/75094857

注意:设置阿里云Docker Hub加速,配置Registry mirrors地址“https://j0andt2p.mirror.aliyuncs.com/”。

阿里云的镜像市场:https://dev.aliyun.com/search.html

下载RabbitMQ镜像
1.镜像地址

RabbitMQ Docker官方认证镜像地址:https://dev.aliyun.com/detail.html?spm=5176.1971733.2.16.6c045aaaDxFoMn&repoId=1256

2.安装命令

安装之前,切记把Docker Hub设置为阿里云的加速,方便安装。

docker pull rabbitmq:3.6.15-management

注意使用后缀为"-management"的镜像版本,是包含网页控制台的。

3.查看安装

使用命令:docker images查看下载的镜像,如下图所示:

image

Docker常用命令
容器停止:docker stop 容器名称
启动容器:docker start 容器名称
删除容器:docker rm 容器名称
删除镜像:docker rmi 镜像名称
查看运行的所有容器:docker ps
查看所有容器:docker ps -a
容器复制文件到物理机:docker cp 容器名称:容器目录 物理机目录
物理机复制文件到容器:docker cp 物理机目录 容器名称:容器目录

进入Docker目录
简单的进入Docker容器的方法分为3种:

使用attach

使用SSH

使用exec

1.attach
attach有一个缺点,当连接终止的时候,或者使用exit之后,容器就会退出后台运行,所以不适合生产环境使用。既然不好用,我们在这里就不过多的介绍它了。

2.SSH
按照之前我们使用liunx的习惯,使用ssh连接服务器似乎是一个很诱人的答案,但这样做并不优雅,也不是最佳的实践方式,详情点击查看:https://blog.csdn.net/bolg_hero/article/details/50267103

3.exec
exec无疑是我们现阶段最好的实践方案,一起来看它是怎么使用的。

进入docker命令:

docker exec -it <docker-name> /bin/bash

其中/bin/bash 也可能是/bin/sh.

使用docker exec --help查看更多命令,和命令说明。

退出docker:

exit

启动RabbitMQ
docker run -d --hostname localhost --name myrabbit -p 15672:15672 -p 5672:5672 rabbitmq:3.6.15-management

参数说明:

-d 后台进程运行

hostname RabbitMQ主机名称

name 容器名称

-p port:port 本地端口:容器端口

-p 15672:15672 http访问端口

-p 5672:5672 amqp访问端口

启动完成之后,使用:docker ps 查看程序运行情况。

使用:http://宿主ip:15672 访问,用户名密码使用默认:guest/guest.

启动多个RabbitMQ
docker run -d --hostname localhost --name myrabbit -p 15672:15672 -p 5672:5672 rabbitmq:3.6.15-management

docker run -d --hostname localhost2 --name myrabbit2 -p 15673:15672 -p 5673:5672 rabbitmq:3.6.15-management

这样我们就可以使用,http://宿主ip:15672 和 http://宿主ip:15673 进行访问了,默认账号密码依旧是guest/guest.

搭建RabbitMQ集群
步骤一:安装RabbitMQ;

步骤二:加入RabbitMQ节点到集群;

步骤一:安装RabbitMQ
docker run -d --hostname rabbit1 --name myrabbit1 -p 15672:15672 -p 5672:5672 -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' rabbitmq:3.6.15-management

docker run -d --hostname rabbit2 --name myrabbit2 -p 5673:5672 --link myrabbit1:rabbit1 -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' rabbitmq:3.6.15-management

docker run -d --hostname rabbit3 --name myrabbit3 -p 5674:5672 --link myrabbit1:rabbit1 --link myrabbit2:rabbit2 -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' rabbitmq:3.6.15-management

具体的参数含义,参见上文“启动RabbitMQ”部分。

注意点:

多个容器之间使用“--link”连接,此属性不能少;

Erlang Cookie值必须相同,也就是RABBITMQ_ERLANG_COOKIE参数的值必须相同,原因见下文“配置相同Erlang Cookie”部分;

步骤二:加入RabbitMQ节点到集群
设置节点1:

docker exec -it myrabbit1 bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app
exit

设置节点2,加入到集群:

docker exec -it myrabbit2 bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster --ram rabbit@rabbit1
rabbitmqctl start_app
exit

参数“--ram”表示设置为内存节点,忽略次参数默认为磁盘节点。

设置节点3,加入到集群:

docker exec -it myrabbit3 bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster --ram rabbit@rabbit1
rabbitmqctl start_app
exit

设置好之后,使用http://物理机ip:15672 进行访问了,默认账号密码是guest/guest,效果如下图:

image

启动了3个节点,1个磁盘节点和2个内存节点。

配置相同Erlang Cookie
有些特殊的情况,比如已经运行了一段时间的几个单个物理机,我们在之前没有设置过相同的Erlang Cookie值,现在我们要把单个的物理机部署成集群,实现我们需要同步Erlang的Cookie值。

1.为什么要配置相同的erlang cookie?

因为RabbitMQ是用Erlang实现的,Erlang Cookie相当于不同节点之间相互通讯的秘钥,Erlang节点通过交换Erlang Cookie获得认证。

2.Erlang Cookie的位置

要想知道Erlang Cookie位置,首先要取得RabbitMQ启动日志里面的home dir路径,作为根路径。使用:“docker logs 容器名称”查看,如下图:

image

所以Erlang Cookie的全部路径就是“/var/lib/rabbitmq/.erlang.cookie”。

注意:每个人的erlang cookie位置可能不同,一定要查看自己的home dir路径。

3.复制Erlang Cookie到其他RabbitMQ节点

获取到第一个RabbitMQ的Erlang Cookie之后,只需要把这个文件复制到其他RabbitMQ节点即可。

物理机和容器之间复制命令如下:

容器复制文件到物理机:docker cp 容器名称:容器目录 物理机目录

物理机复制文件到容器:docker cp 物理机目录 容器名称:容器目录

设置Erlang Cookie文件权限:“chmod 600 /var/lib/rabbitmq/.erlang.cookie”。
--------------------- 
作者:aa1215018028 
来源:CSDN 
原文:https://blog.csdn.net/aa1215018028/article/details/81325867 
版权声明:本文为博主原创文章,转载请附上博文链接!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用Docker部署RabbitMQ集群 的相关文章

  • 计算机组成原理-复习题2

    二 简答题 43 请写出8位定点原码整数中能表示的最大正数 最小正数 最大负数和最小负数的机器数形式 并用十进制表示其数值范围 答 最大正数 01111111 最小正数 00000001 最大负数 10000001 最小负数 1111111
  • 【动手学】36 图片增广_代码

    matplotlib inline import torch import torchvision from torch import nn from d2l import torch as d2l d2l set figsize img
  • qt学习笔记7:控件、自定义控件封装

    系统提供的控件们 按钮组 QPushButton 常用按钮 QToolButton 工具按钮 用于显示图片 如果想显示文字 可以修改风格 RadioButton 单选框 如果想设置默认 ui gt 空间名 gt setChecked Che
  • js最简单的数组去重方法set数组去重

    js最简单的数组去重方法set数组去重 数组去重 function newArr arr return Array from new Set arr 对象数组去重 arr是数组参数 type是要根据去重的字段参数 function newA
  • C--游游的水果大礼包--牛客周赛 Round 3

    示例1 输入 3 4 1 2 输出 4 说明 组成两个二号水果大礼包 使用了2个苹果和4个桃子 总价值为4 示例2 输入 1 1 5 6 输出 0 说明 显然无法组合成任意一个大礼包 解析 数据量1e6 应该O n 遍历苹果数量 计算最大值
  • 【python基础】猜数字游戏

    前言 相信很多人都玩过猜数字游戏 游戏规则也十分简单 还记得小时候我经常和朋友一起玩 我们在桌上摆放一些1 100以内的数字卡片 一个人随机抽取一张卡片 这里不许偷看卡片内容 首先这个人随机猜一个数字 然后其他人会告诉你猜大了还是猜小了 先
  • Oracle数据库同时执行多条DML语句

    在sqlplus中 SQL gt begin 语句1 语句2 语句N end
  • 【Detectron2】使用 Detectron2 训练基于 coco 数据集的目标检测网络

    文章目录 一 安装 Detectron2 二 软连接 coco 数据集 三 训练 四 数据集相关参数 五 输出结果路径 六 COCO 数据集简介 七 模型相关参数 八 可视化结果 一 安装 Detectron2 初次接触 Detectron
  • TypeScript基础之元组(Tuple)

    元组 我们知道数组中元素的数据类型都一般是相同的 any 类型的数组可以不同 如果存储的元素数据类型不同 则需要使用元组 元组是一种数据类型 可以像任何其他变量一样使用 它表示值的异构集合 也可以作为函数调用中的参数传递 在抽象数学中 术语
  • [Android] 给图像添加相框、圆形圆角显示图片、图像合成知识

    前一篇文章讲述了Android触屏setOnTouchListener实现突破缩放 移动 绘制和添加水印 继续我的 随手拍 项目完成给图片添加相框 圆形圆角显示图片和图像合成的功能介绍 希望文章对大家有所帮助 一 打开图片和显示assets
  • 博途V16软件官方下载和安装

    获取博途软件的途径很多 且有各种版本和各种形式的安装包 不可否认这些都是同行们共同努力为我们获取的资源 但这些安装包大多以百度网盘的途径下载 由于安装包很大且百度网盘限速 就很不方便我们获取博途的安装包文件 为此 向大家介绍如何通过西门子官
  • vue scoped 解决样式不生效问题

    对于添加样式不能影响子组件样式的情况使用 gt gt gt
  • 精卫填海——大数据安全与隐私保护

    第一章 绪论 一 课程内容 1 大数据安全 如何在满足可用性的前提下实现大数据机密性 安全与效率之间的平衡一直信息安全领域关注的重要问题 在大数据场景下 数据的高速流动特性以及操作多样性使得数据的安全与效率之间的矛盾更加突出 如何实现大数据
  • LeetCode刷题-21. 合并两个有序链表(python)

    将两个有序链表合并为一个新的有序链表并返回 新链表是通过拼接给定的两个链表的所有节点组成的 示例 输入 1 gt 2 gt 4 1 gt 3 gt 4 输出 1 gt 1 gt 2 gt 3 gt 4 gt 4 方法一 递归 Definit
  • java操作kafka读写操作

    1 前提 kafka 的 server properties里面开通了 listeners PLAINTEXT 192 168 137 141 9092 advertised listeners PLAINTEXT 192 168 137
  • ffmpeg在接收UDP网络协议流时在链接上通过fifo_size进行缓冲大小的设置

    If you original URL looks like this udp 239 1 1 7 5107 Add the fifo size and overrun parameters like this udp 239 1 1 7
  • 云服务器配置域名直接访问项目

    我使用的是阿里云服务器和域名 关于云服务器和域名的购买就不一一赘述了 主要讲解云服务器配置域名及使用域名访问项目 一 云服务器配置域名 1 在云服务器 ECS中搜索域名 找到域名控制台点进去 2 进去域名列表页面 然后点击域名后面的 解析
  • 宝塔linux忘记端口号,Bt(宝塔面板)忘记用户名、密码、端口的解决方案

    Bt 宝塔面板 用的人还是很多的 但是有的时候不注意忘掉了用户名和密码我们这时候要分两种情况 如果是面板刚安装好 不小心关掉了ssh工具 然后忘掉了初始的用户名和密码 或者就是在后台已经更改过了用户名和密码 但是忘记了 那应该怎么解决呢 下
  • Word:显示文档修改痕迹

    1 显示文档修改痕迹 当对word文档修改 我们想要在word中显示修改的痕迹 怎么设置 在文档顶端找到 审阅 修订 即可 具体高级设置 点击 修订 下三角 结果如下
  • nohup 命令之 nohup: ignoring input and appending output to ‘nohup.out’

    当我在linux中使用nohup 命令的时候 出现了这个错误 nohup ignoring input and appending output to nohup out 忽略输入输出 将信息化信息记录到nohup out文件中 补充 no

随机推荐

  • Vue3 学习

    基础 js https www bilibili com video BV15T411j7pJ spm id from 333 337 search card all click vd source 9747207be61edfe4ec62
  • 中标麒麟V7系统开启日志服务器收集日志

    0 备份 编辑配置文件 cp etc rsyslog conf etc rsyslog conf bak20210427 vi etc rsyslog conf 1 修改服务端配置 打开服务监听端口 MODULES The imjourna
  • UV纹理与贴图

    文章转载自 http www cnblogs com jenry p 4083415 html 1 什么是UV 对于三维模型 有两个最重要的坐标系统 一是顶点的位置 X Y Z 坐标 另一个就是UV坐标 什么是UV 简单的说 就是贴图影射到
  • 旋转后计算法线

    11
  • base64 编码转png上传minio

    public static InputStream base64ConvertPNG String base64 BASE64Decoder decoder new BASE64Decoder 解码 base64 base64 replac
  • opencv 中findContours函数介绍

    opencv4 中findContours函数介绍 findContours 这个函数的主要功能是找到contours也就是边界线 不过这个函数主要是给灰度图对象服务的 函数的使用介绍 findContours image mode met
  • MD5 Hash + Salt的密码存储方式实现

    MD5算法是一种密码散列算法 MD5散列后的数据长度为128 bit 该散列算法在密码上使用得非常多 但现在已经被更安全的SHA 1代替 MD5算法产生的密码可以使用反向查询的方式从预先算出的密码MD5库中查到密码 网上的一些MD5库中大约
  • 动态加载js的三种方式,以及script的三种加载方式

    测试准备 1 html文件 2 测试的js文件 我这里准备了四个js文件 每个脚本的最后都加上了console log 文件名 src main js 135KB src tooltip js gt 17KB src button js 4
  • 数据库五表关联查询

    1基于角色访问控制RBAC 1 1RABC数据库设计 1 2RABC实现流程 基于菜单实现 在创建系统用户时 为用户绑定对应的角色 当登录成功进入主页面 根据用户查询角色 再根据角色查询到当前用户的权限列表 2主页菜单的加载显示功能 根据不
  • Qt 使用 windeployqt 打包软件

    Qt 使用 windeployqt 打包软件 需使用qt 自带的终端打包 例如 打开之后 运行命令 windeployqt exe 需要打包的exe 不要使用cmd或者powershell
  • selenium知识点小结

    环境 Python 3 6 1 selenium 3 4 3 Firefox 54 0 1 geckodriver 0 15 0 chrome 59 0 3 chromedriver v3 1 自动化测试基础 1 软件测试分类 根据项目流程
  • chineseocr 安装笔记 2021-05

    chineseocr 基于yolo3 与crnn 实现中文自然场景文字检测及识别 选在 GitHub 目前位置有 4 1K的star 也正因为基于 yolo 的原因 尝试一下 chineseocr 的中文识别 GitHub地址 GitHub
  • 替换spring的commons-logging(jcl)日志系统为logback日志系统

    接口层名称 说明 JCL Jakarta Commons Logging 陈旧 这个就是spring core依赖的logging SLF4J 适合 同一作者 jboss logging 特殊专业领域使用 实现层名称 说明 log4j 最初
  • CKA 核心知识点概述

    CKA 核心知识点概述 介绍 知识点 说明 介绍 笔者曾经在本专栏分享了大量 CKA CKS 考点相关的内容 由于某些原因被 jubao 下架 但考虑到很多网友和群友想进一步了解 CKA 相关的核心知识 因此在这里把笔者之前的记录整理了一下
  • RuoYi-Vue————权限管理

    RuoYi Vue 权限管理 1 若依框架权限分类 2 若依框架权限的依次介绍 3 若依框架重要接口执行流程 1 若依框架权限分类 若依Vue系统中的权限分为以下几类 1 菜单权限 用户登录系统之后能看到哪些菜单 2 按钮权限 用户在一个页
  • 微信小程序基础知识-----获取用户授权信息

    点允许 绑定用户信息 用户头像和昵称 效果图 如何获取昵称和头像后将绿框框消除 设定一个数据变量 将设定的变量作为条件渲染 当获取到的用户信息后将设定的变量值改为false 执行这一板块 效果图 如何解决头像的问题
  • Vue2和Vue3自定义组件使用v-model

    Vue2 父组件 v model 自定义组件 props接收 model对象里写prop和event method里写具体方法 子组件
  • win11配置wsl2以及深度学习环境

    安装wsl2 许多深度学习代码都是使用Linux跑的 跑别人的代码 最好环境可以一样 如果使用Windows可能会遇到很多bug wsl2相比于wsl有着些许升级 对于深度学习来说 好处是可以使用CUDA 这里演示win11安装wsl2 打
  • Mybatis流式游标查询-大数据DB查询OOM查询问题

    问题场景 Mysql数据处理类型分以下三种 com mysql cj protocol a result ResultsetRowsStatic 普通查询 将结果集一次性全部拉取到内存 com mysql cj protocol a res
  • 使用Docker部署RabbitMQ集群

    使用Docker部署RabbitMQ集群 概述 本文重点介绍的Docker的使用 以及如何部署RabbitMQ集群 最基础的Docker安装 本文不做过多的描述 读者可以自行度娘 Windows10上Docker的安装 因为本人用的是Win