linux中使用docker完成rabbitmq多机集群部署

单机rabbitmq部署:https://www.cnblogs.com/hanfengyeqiao/p/17859693.html

机器1:a.a.a.a(IP地址)

机器2:b.b.b.b(IP地址)

两台机器需要提前开放防火墙相关的端口:15672,5672,4369,25672等

1、现在两台机器都需要操作:安装docker环境,并检查是否能正常更新镜像,如果有延迟需要切换成国内的镜像地址。

设置阿里云镜像源地址:

cd /etc/docker
ls
touch daemon.json
vim daemon.json
{
"registry-mirrors": ["https://gjw6x2qt.mirror.aliyuncs.com"]
}
systemctl daemon-reload
systemctl restart docker

2、下载rabbitmq镜像(可以下载合适自己的镜像版本)

docker pull docker.io/rabbitmq:3.7

3、提前做好文件权限配置(两台机器都需要执行)ps:LleLHxuTQBrxgR4VnP03Q7 这个可以自定义,只要保持两台机器一致即可

mkdir -p /data/rabbitmq_cluster/node/{data,conf,log}
chmod -R 777 /data/rabbitmq_cluster/node
cat << EOF >/data/rabbitmq_cluster/node/data/.erlang.cookie
LleLHxuTQBrxgR4VnP03Q7
EOF
chmod -R 600 /data/rabbitmq_cluster/node/data/.erlang.cookie

4、在机器1启动队列命令(账号密码:admin/123456,ps:如果有多台机器:需要在命令中添加node2、node3等)

docker run -d --name rabbitmq --restart=always --hostname node1 -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=123456 -e RABBITMQ_DEFAULT_VHOST=my_vhost --privileged=true --add-host node2:b.b.b.b -v /data/rabbitmq_cluster/node/data:/var/lib/rabbitmq -v /data/rabbitmq_cluster/node/log:/var/log/rabbitmq -p 4369:4369 -p 5672:5672 -p 15672:15672 -p 25672:25672 docker.io/rabbitmq:3.7

5、在机器2启动队列命令(账号密码:admin/123456,ps:如果有多台机器:需要在命令中添加node1、node3等)

docker run -d --privileged --name rabbitmq --restart=always --hostname node2 -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=123456 -e RABBITMQ_DEFAULT_VHOST=my_vhost --privileged=true --add-host node1:a.a.a.a -v /data/rabbitmq_cluster/node/data:/var/lib/rabbitmq -v /data/rabbitmq_cluster/node/log:/var/log/rabbitmq -p 4369:4369 -p 5672:5672 -p 15672:15672 -p 25672:25672 docker.io/rabbitmq:3.7

#开启队列镜像模式

6、在机器1执行

docker exec -it rabbitmq /bin/bash
rabbitmq-plugins enable rabbitmq_management
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app
exit

7、在机器2执行命令(如果有多台机器,机器3等 也执行相同的代码)

docker exec -it rabbitmq bash
rabbitmq-plugins enable rabbitmq_management
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@node1
rabbitmqctl start_app
exit

8、浏览器访问http://a.a.a.a:15672和http://b.b.b.b:15672 就能看到操作界面了,至此,集群模式部署完成。

9、在任意一个节点登录操作界面,policy模式配置镜像队列 ps:根据自己实际需要进行配置

 

说明:
Name:新建的策略的名字(按照自己的需求进行设置即可)
Pattern:会按照设置的规则进行镜像设置(例如本例中设置为 ^mirror,则会为开头是 mirror 的队列进行镜像备份)
Pattern: queue的匹配模式(正则表达式)。^表示所有队列都是镜像队列。
Definition: 镜像定义,包括三个部分ha-sync-mode、ha-mode、ha-params。
ha-mode: 指明镜像队列的模式,有效取值范围为all/exactly/nodes。
all:表示在集群所有的代理上进行镜像。
exactly:表示在指定个数的代理上进行镜像,代理的个数由ha-params指定。
nodes:表示在指定的代理上进行镜像,代理名称通过ha-params指定。
ha-params: ha-mode模式需要用到的参数。
ha-sync-mode: 表示镜像队列中消息的同步方式,有效取值范围为:automatic,manually。
automatic:表示自动向master同步数据。
manually:表示手动向master同步数据。
Priority: 可选参数, policy的优先级。

 10、验证:在任意节点创建队列并发送一条消息,然后停掉当前节点,登录其他节点可接收这个队列的消息。

posted @ 2024-07-19 09:54  齐华枫  阅读(19)  评论(0编辑  收藏  举报