网站首页 > 技术文章 正文
在我们日常的应用部署中,中间件也是必不可少的一部分。常规的单节点服务在日常工作中占了大多数,但是在业务量逐渐增加,越来越多的业务需要可持续性的工作状态。高可用方案成为日常应用中不可缺少的一部分。为了演示方便,我们今天来用docker部署一套高可用的rabbitmq集群。话不多说,接下来就是演示部分:
0.准备工作,需要三台虚拟机,内存适量即可。计划将192.168.247.128作为主节点,192.168.247.129/130作为从节点使用。
1.关闭各服务器防火墙及selinux
systemctl stop firewalld
setenforce 0
vim /etc/selinux/config
...
SELINUX=disabled
...
2.准备好rabbitmq安装目录及hosts文件
[提前配置主机名
hostnamectl set-hostname rabbitmq1
hostnamectl set-hostname rabbitmq2
hostnamectl set-hostname rabbitmq3
]
mkdir -p /opt/rabbitmq
vim /opt/rabbitmq/hosts
192.168.247.128 rabbitmq1
192.168.247.129 rabbitmq2
192.168.247.130 rabbitmq3
3.在各服务器进行容器启动命令
192.168.247.128
docker run -d --privileged=true --name rabbitmq1 --hostname rabbitmq1 -v /opt/rabbitmq/data:/var/lib/rabbitmq -v /opt/rabbitmq/hosts:/etc/hosts -v /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_ERLANG_COOKIE='your erlang cookie' -e RABBITMQ_DEFAULT_PASS=123456 --net host rabbitmq:latest
192.168.247.129
docker run -d --privileged=true --name rabbitmq2 --hostname rabbitmq2 -v /opt/rabbitmq/data:/var/lib/rabbitmq -v /opt/rabbitmq/hosts:/etc/hosts -v /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_ERLANG_COOKIE='your erlang cookie' -e RABBITMQ_DEFAULT_PASS=123456 --net host rabbitmq:latest
192.168.247.130
docker run -d --privileged=true --name rabbitmq3 --hostname rabbitmq3 -v /opt/rabbitmq/data:/var/lib/rabbitmq -v /opt/rabbitmq/hosts:/etc/hosts -v /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_ERLANG_COOKIE='your erlang cookie' -e RABBITMQ_DEFAULT_PASS=123456 --net host rabbitmq:latest
4.容器启动完成后查看各容器日志确认无报错信息
5.将node2和node3节点加入到主节点
首先进入rabbitmq2容器内操作
docker exec -it rabbitmq2 bash
rabbitmqctl stop_app
rabbitmqctl join_cluster rabbit@rabbitmq1
rabbitmqctl start_app
加入完成后查看集群状态
rabbitmqctl cluster_status
然后进入rabbitmq3容器内操作
docker exec -it rabbitmq3 bash
rabbitmqctl stop_app
rabbitmqctl join_cluster rabbit@rabbitmq1
rabbitmqctl start_app
加入完成后查看集群状态
rabbitmqctl cluster_status
6.此时我们已经可以通过浏览器访问到我们的rabbitmq集群,但是还不是高可用状态,需要执行以下操作。
在任意节点执行以下命令
rabbitmqctl set_policy -p / ha-all "^" '{"ha-mode":"all"}' --apply-to all
7.通过浏览器访问我们的rabbitmq集群,如果远程访问端口15672没有打开,可以通过以下操作开放端口
8.故障测试,停用主节点192.168.247.128,查看状态。
9.恢复rabbitmq1再查看状态。
演示操作完成。
- 上一篇: rabbitMQ几种工作模式及策略分享
- 下一篇: Centos7部署RabbitMQ的镜像队列集群
猜你喜欢
- 2024-09-24 RabbitMQ宕机后,消息100%不会丢失吗
- 2024-09-24 非常强悍的 RabbitMQ 总结,写得真好
- 2024-09-24 「服务器」RabbitMQ入门教程——简介及工作原理
- 2024-09-24 在 WebApi 项目中快速开始使用 RabbitMQ
- 2024-09-24 RabbitMQ使用延迟插件,代码量直接降一半?
- 2024-09-24 RabbitMQ 高可用之镜像队列
- 2024-09-24 k8s上创建高可用RabbitMQ集群
- 2024-09-24 Centos7部署RabbitMQ的镜像队列集群
- 2024-09-24 详解如何用zabbix来监控rabbitmq消息队列服务
- 2024-09-24 rabbitMQ几种工作模式及策略分享
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)