RabbitMQ笔记(三)-基于Docker安装RabbitMQ集群

2019-09-02 15:55:20 浏览数 (1)

RabbitMQ的镜像选择是rabbitmq:3.6.15-management

step1. 依次启动三个RabbitMQ的容器

RABBITMQ_ERLANG_COOKIE是配置erlang.cookie的值

.erlang.cookie是erlang实现分布式的必要文件,erlang分布式的每个节点上要保持相同的.erlang.cookie文件,同时保证文件的权限是400。

具体的文件路径在 /var/lib/rabbitmq/.erlang.cookie

代码语言:javascript复制
docker run -d --hostname rabbit1 --name myrabbit1 -p 8101:15672 -p 8201:5672 -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' rabbitmq:3.6.15-management
docker run -d --hostname rabbit2 --name myrabbit2 -p 8102:15672 -p 8202:5672 --link myrabbit1:rabbit1 -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' rabbitmq:3.6.15-management
docker run -d --hostname rabbit3 --name myrabbit3 -p 8103:15672 -p 8203:5672 --link myrabbit1:rabbit1 --link myrabbit2:rabbit2 -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' rabbitmq:3.6.15-management
step2. 加入RabbitMQ节点到集群
代码语言:javascript复制
设置节点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

安装完成,使用docker ps查看

代码语言:javascript复制
CONTAINER ID        IMAGE                        COMMAND                  CREATED             STATUS              PORTS                                                                                       NAMES
6e40e86437fa        rabbitmq:3.6.15-management   "docker-entrypoint..."   7 days ago          Up 5 days           4369/tcp, 5671/tcp, 15671/tcp, 25672/tcp, 0.0.0.0:8203->5672/tcp, 0.0.0.0:8103->15672/tcp   myrabbit3
3def6fca813d        rabbitmq:3.6.15-management   "docker-entrypoint..."   7 days ago          Up 5 days           4369/tcp, 5671/tcp, 15671/tcp, 25672/tcp, 0.0.0.0:8202->5672/tcp, 0.0.0.0:8102->15672/tcp   myrabbit2
28b198211066        rabbitmq:3.6.15-management   "docker-entrypoint..."   7 days ago          Up 5 days           4369/tcp, 5671/tcp, 15671/tcp, 25672/tcp, 0.0.0.0:8201->5672/tcp, 0.0.0.0:8101->15672/tcp   myrabbit1

或者访问任意一个管理页面

step3. 配置集群同步信息

直接在管理页面配置

点击Admin -> Virtual Hosts

添加一个虚拟主机cluster2

再点击虚拟主机配置用户

点击Policies,配置高可用策略

ha-mode : all-所有节点互为镜像,exactly-指定镜像节点的数量,nodes-指定具体需要镜像的节点

ha-params:ha-mode=all,缺省,不需要填

​ ha-mode=exactly,指定几个节点为一组镜像节点

​ ha-mode=nodes,指定具体的节点,string类型

ha-sync-mode: 镜像队列中消息的同步方式,有效值为automatic,manually

这里指定了2个节点为镜像节点

回到Exchanges页面看到新增了默认的exchange

在Queues页面添加一个queue 查看该queue

可以看到在rabbit3有一份镜像

回到服务器停止rabbit1再次查看队列test

0 人点赞