使用docker部署rabbitmq集群

       

部署环境准备

192.168.81.128   rabbitmq-1

192.168.81.129   rabbitmq-2

192.168.81.130   rabbitmq-3

首先创建挂载目录(三个节点都创建)

systemctl stop  firewalld  && setenforce 0   关闭防火墙和selinux

mkdir /data/rabbitmq -p

cd /data/rabbitmq/ && vim hosts     编写hosts文件

192.168.81.128   rabbitmq-1

192.168.81.129   rabbitmq-2

192.168.81.130   rabbitmq-3

节点1启动

docker run -itd --net host --name rabbitmq-1 --hostname rabbitmq-1  --log-opt max-size=30m --log-opt max-file=3 -v /data/rabbitmq:/var/lib/rabbitmq  -v /data/rabbitmq/hosts:/etc/hosts -e RABBITMQ_DEFAULT_USER=admin   -e RABBITMQ_DEFAULT_PASS=admin -e RABBITMQ_ERLANG_COOKIE='zjiosjdiojafodja'  docker.io/library/rabbitmq:3.11.28-management

-d`: 表示以分离模式运行容器。  

--net host`: 使用宿主机网络模式,容器将与宿主机共享网络命名空间。  

--name rabbitmq-1`: 为容器指定名称为 `rabbitmq-1`。

--hostname:    指定容器主机名为 `rabbitmq-1`。

--log-opt max-size=30m`: 设置日志文件的最大大小为 30MB。  

--log-opt max-file=3`: 设置存储的日志文件数量上限为 3 个。  

-v /data/rabbitmq:/var/lib/rabbitmq:z`: 将宿主机上的 `/data/rabbitmq` 目录挂载到容器内的 `/var/lib/rabbitmq` 目录。

-v /data/rabbitmq/hosts:/etc/hosts`: 将宿主机上的 `/data/rabbitmq/hosts` 文件挂载到容器内的 `/etc/hosts` 文件。

-e RABBITMQ_DEFAULT_USER=admin`: 设置 RabbitMQ 默认用户的用户名为 `admin`。  

-e RABBITMQ_DEFAULT_PASS=admin`: 设置 RabbitMQ 默认用户的密码为 `admin`。    

-e RABBITMQ_ERLANG_COOKIE='zjiosjdiojafodja' `: 设置Erlang Cookie 的值为在 RabbitMQ 集群中用于节点之间的身份验证和通信。

节点1启动后把.erlang.cookie文件发送到2/3节点,用于节点之间的身份验证和通信。

scp /data/rabbitmq/.erlang.cookie 192.168.81.129:/data/rabbitmq/

scp /data/rabbitmq/.erlang.cookie 192.168.81.130:/data/rabbitmq/

节点2启动

docker run -itd --net host --name rabbitmq-2 --hostname rabbitmq-1  --log-opt max-size=30m --log-opt max-file=3 -v /data/rabbitmq:/var/lib/rabbitmq  -v /data/rabbitmq/hosts:/etc/hosts -e RABBITMQ_DEFAULT_USER=admin   -e RABBITMQ_DEFAULT_PASS=admin-e RABBITMQ_ERLANG_COOKIE='zjiosjdiojafodja'  docker.io/library/rabbitmq:3.11.28-management

节点3启动

docker run -itd --net host --name rabbitmq-3 --hostname rabbitmq-3  --log-opt max-size=30m --log-opt max-file=3 -v /data/rabbitmq:/var/lib/rabbitmq  -v /data/rabbitmq/hosts:/etc/hosts -e RABBITMQ_DEFAULT_USER=admin   -e RABBITMQ_DEFAULT_PASS=admin -e RABBITMQ_ERLANG_COOKIE='zjiosjdiojafodja'  docker.io/library/rabbitmq:3.11.28-management

在 RabbitMQ 集群中节点可以分为磁盘节点和内存节点

磁盘节点:

磁盘节点存储队列的持久化消息和元数据。

当队列中的消息过多时,磁盘节点能够有效地处理消息的持久化和存储,因为它们依赖于磁盘而不是内存。

磁盘节点适用于需要长时间保留大量消息的情况,以及对消息持久性要求较高的场景。

内存节点:

内存节点主要存储队列的非持久化消息和元数据。

内存节点使用RAM存储消息,因此对于那些需要快速响应时间和低延迟的应用场景非常有用。

内存节点适用于对性能要求较高,但不需要持久化所有消息的场景。可以分为磁盘节点和内存节点

可以按照需求来配置节点加入的方式

rabbitmqctl join_cluster rabbit@rabbitmq-1   这样是以磁盘节点的方式加入

rabbitmqctl join_cluster --ram rabbit@rabbitmq-1 这样是以内存节点的方式加入

启动节点2加入集群

docker exec -it rabbitmq-2 /bin/bash

rabbitmqctl stop_app   停止rabbitmq

rabbitmqctl reset 重置节点状态

rabbitmqctl join_cluster rabbit@rabbitmq-1   加入集群

rabbitmqctl      命令行工具

join_cluster 节点加入集群的命令

rabbit@rabbitmq-1   集群中已存在的节点   rabbit是节点名称 rabbitmq-1 主机名

rabbitmqctl start_app 启动服务

启动节点3加入集群

docker exec -it rabbitmq-3 /bin/bash

rabbitmqctl stop_app   停止rabbitmq

rabbitmqctl reset 重置节点状态

rabbitmqctl join_cluster rabbit@rabbitmq-1   加入集群

rabbitmqctl join_cluster --ram rabbit@rabbitmq-1 节点3可以尝试用内存节点加入

rabbitmqctl start_app 启动服务

来到节点1查看集群状态

docker exec -it rabbitmq-1 /bin/bash

rabbitmqctl cluster_status   查看集群状态

访问web页面查看集群状态

192.168.81.128:15672    用户名admin密码admin

可以看到三个节点都是正常的,到这集群就部署好了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值