docker搭建RabbitMQ集群

docker搭建RabbitMQ集群

1:拉取Rabbitmq镜像

docker pull rabbitmq:3.7-management

docker搭建RabbitMQ集群

2:创建并运行三个RabbitMQ容器节点,一主两从

#创建RabbitMQ目录 

mkdir /home/rabbitmq 

cd /home/rabbitmq #创建三个rabbitmq 目录,存储三个节点配置信息 

mkdir rabbitmq01 rabbitmq02 rabbitmq03

#rabbitmqCluster01 主节点

docker run -d --hostname rabbitmq01 --name rabbitmq01 -v /home/rabbitmq/rabbitmq01:/var/lib/rabbitmq -p 15672:15672 -p 5672:5672 -e RABBITMQ_ERLANG_COOKIE='rabbitmqCookie' rabbitmq:3.7-management

#rabbitmqCluster02 从节点

docker run -d --hostname rabbitmq02 --name rabbitmq02 -v /home/rabbitmq/rabbitmq02:/var/lib/rabbitmq -p 7002:15672 -p 5673:5672 -e RABBITMQ_ERLANG_COOKIE='rabbitmqCookie' --link rabbitmq01:rabbitmq01 rabbitmq:3.7-management

#rabbitmqCluster03 从节点

docker run -d --hostname rabbitmq03 --name rabbitmq03 -v /home/rabbitmq/rabbitmq03:/var/lib/rabbitmq -p 8002:15672 -p 5674:5672 -e RABBITMQ_ERLANG_COOKIE='rabbitmqCookie' --link rabbitmq01:rabbitmq01 --link rabbitmq02:rabbitmq02 rabbitmq:3.7-management

docker搭建RabbitMQ集群

-d 后台运行容器;

–name 指定容器名;

-p 指定服务运行的端口(5672:应用访问端口;15672:控制台Web端口号),控制台端口用于管理rabbitmq,应用访问端口号为rabbitclient等应用访问。;

-v 映射目录或文件,pwd 当前目录;

–hostname 主机名(RabbitMQ的一个重要注意事项是它根据所谓的 “节点名称” 存储数据,默认为主机名);

-e 指定环境变量;(RABBITMQ_DEFAULT_VHOST:默认虚拟机名;RABBITMQ_DEFAULT_USER:默认的用户名;RABBITMQ_DEFAULT_PASS:默认用户名的密码,RABBITMQ_ERLANG_COOKIE 节点认证作用,部署集成时 需要同步该值)

–link 用于容器的链接

查看运行中的三个RabbitMQ容器:

docker搭建RabbitMQ集群

3:集群搭建:将RabbitMQ节点加入到集群

#进入rabbitmq01容器,重新初始化一下,如果是新安装则reset可以忽略重置。

docker exec -it rabbitmq01 bash

rabbitmqctl stop_app

rabbitmqctl reset

rabbitmqctl start_app

exit

#进入rabbitmq02容器,重新初始化一下,将02节点加入到集群中

docker exec -it rabbitmq02 bash

rabbitmqctl stop_app

rabbitmqctl reset

rabbitmqctl join_cluster --ram rabbit@rabbitmq01 #参数“--ram”表示设置为内存节点,忽略该参数默认为磁盘节点。

rabbitmqctl start_app

exit

#进入rabbitmq03容器,重新初始化一下,将03节点加入到集群中

docker exec -it rabbitmq03 bash

rabbitmqctl stop_app

rabbitmqctl reset

rabbitmqctl join_cluster --ram rabbit@rabbitmq01

rabbitmqctl start_app

exit

4:集群测试访问

设置好之后,使用 http://192.168.0.100:15672 进行访问了,默认账号密码是guest/guest,其中192.168.0.100 是我的宿主机IP。启动了3个节点,到此为止,我们已经完成了RabbitMQ普通模式集群的建立,启动了3个节点,1个磁盘节点和2个内存节点。但是如果磁盘节点挂掉后,数据就丢失了。所以我们这个集群方案需要进一步改造为镜像模式集群。

docker搭建RabbitMQ集群

5:设置镜像队列

设置镜像队列命令:“rabbitmqctl set_policy 名称 匹配模式(正则) 镜像定义”, 例如,设置名称为ha的镜像队列,匹配所有名称是amp开头的队列都存储在2个节点上的命令如下:

#随便进入一个容器

docker exec -it rabbitmq01 bash

#设置策略匹配所有名称是amp开头的队列都存储在2个节点上的命令如下

rabbitmqctl set_policy -p / ha "^amp*" '{"ha-mode":"exactly","ha-params":2}'

#或者

#设置策略匹配所有名称的队列都进行高可用配置

rabbitmqctl set_policy -p / ha "^" '{"ha-mode":"all","ha-sync-mode":"automatic"}'

#查询策略

rabbitmqctl list_policies -p / #查看vhost下的所有的策略(policies )

可以看出设置镜像队列,一共有四个参数,每个参数用空格分割。

参数一:策略名称,可以随便填,此外我们命名为ha(高可用);

参考二:-p / 设置哪个虚拟主机,可以使用rabbitmqctl list_policies -p / 查看vhost 下所有的策略(policies )。

参数三:队列名称的匹配规则,使用正则表达式表示;

参数四:为镜像队列的主体规则,是json字符串,分为三个属性:ha-mode | ha-params | ha-sync-mode,分别的解释如下:

ha-mode:镜像模式,分类:all/exactly/nodes,all存储在所有节点;exactly存储x个节点,节点的个数由ha-params指定;nodes指定存储的节点上名称,通过ha-params指定;

ha-params:作为参数,为ha-mode的补充;

ha-sync-mode:镜像消息同步方式:automatic(自动),manually(手动);

===========================================================

查看镜像队列 rabbitmqctl list_policies

删除镜像队列 rabbitmqctl clear_policy

 

 

转载作品,原作者:豫沪峰,文章来源:https://www.toutiao.com/article/7210585141704819260

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023年3月3日 15:41
下一篇 2023年3月18日 14:24

相关推荐

  • 2024视频号运营手册

    2024视频号运营手册,对于新入局视频号的品牌/商家/达人来说,如何快速了解视频号?本篇将从入门、视频号内容规划方案、拍摄剪辑技巧、软件工具、运营技巧及雷区等多个方面来进行分析。

    2024年11月14日 全球开店
    01050
  • Docker快速自建v2Ray服务端和客户端

    Docker快速自建v2Ray服务端和客户端,V2Ray(也被称为Project V)是一个开源的网络代理工具,目前V2Ray支持在Windows、macOS、Linux、Android和iOS等多种操作系统上使用。对于Windows用户,V2rayN是个不错的选择。

    2024年3月29日 其它
    02.9K0
  • 磁盘分区工具更新:NIUBI Partition Editor 9.8.0

    磁盘分区工具更新:NIUBI Partition Editor 9.8.0

    2023年10月8日
    0900
  • 没有公网IP,cpolar实现内网穿透

    在做网站、微信开发时,有时候会需要本地调试,但现在运营商基本不会分配给到独立的公网IP了,都是内网IP,就只能通过内网穿透来实现。这里推荐一款简单好用的内网穿透工具cpolar。

    2022年11月15日
    02230
  • 自带管理界面,第三方FFmpeg软件体验

    FFmpeg 带有界面的第三方版本-FFmpeg Batch AV Converter,它可以一定程度上改善普通玩家的体验,软件是便携版本的,下载后直接解压,选择中文界面即可。

    2022年12月27日 其它
    01380
  • 介绍一款牛逼的Docker可视化工具

    学后端的小伙伴一定要学的一个技术便是Docker,部署项目、部署环境啥的都贼方便!之前我用docker都是简单粗暴,直接上命令行,什么docker ps,docker images…

    2021年12月11日 Linux
    01710

发表回复

登录后才能评论
分享本页
返回顶部