目录
1.前期准备
准备了3台服务器,在服务器上安装docker和docker-compose,这些就不多啰嗦了
节点1 | 192.168.99.241 | rabbitmq1 | disk | 主 |
节点2 | 192.168.99.242 | rabbitmq2 | ram | 从 |
节点3 | 192.168.99.243 | rabbitmq3 | ram | 从 |
2.创建挂载文件夹
创建rabbitmq文件夹,在文件夹中新建挂载文件夹config和data
config目录存放配置文件以及一些脚本
data存放rabbitmq程序数据
3.创建docker-compose文件
在第二步中创建的rabbitmq目录下,创建docker-compose.yml文件
version: '3'
services:
rabbitmq1:
image: rabbitmq:3.8.3-management
container_name: rabbitmq1
restart: always
hostname: rabbitmq1
ports:
- 4369:4369
- 5671:5671
- 25672:25672
- 15672:15672
- 5672:5672
volumes:
- ./data:/var/lib/rabbitmq
- ./config/rabbitmq.sh:/etc/rabbitmq/rabbitmq.sh
- /etc/hosts:/etc/hosts
environment:
- RABBITMQ_DEFAULT_USER=root
- RABBITMQ_DEFAULT_PASS=root
- RABBITMQ_ERLANG_COOKIE=CURIOAPPLICATION
这是节点1的docker-compose文件内容,节点2和节点3只需要将文件中的rabbitmq1改成rabbitmq2或者rabbitmq3即可
注意:在挂载参数中,必须加上“- /etc/hosts:/etc/hosts”,否则集群无法成功会报“Error: unable TO perform an operation ON node ‘rabbit@rabbitmq1’. Please see diagnostics information AND suggestions below.”
4.修改hosts文件
在/etc/hosts文件中,添加各节点的信息
192.168.99.241 rabbitmq1
192.168.99.242 rabbitmq2
192.168.99.243 rabbitmq3
5.执行docker-compose
在各节点的rabbitmq目录下执行
docker-compose up -d
关闭防火墙或者开放对应的映射端口
6.执行集群命令
在第一步中事先规划好了各节点rabbitmq的存储方式,即节点1是disk,节点2和节点3都是ram
所以在直接完docker-compose后,执行命令进入各docker节点:
docker exec -it rabbitmq1 /bin/bash -该命令以节点1为例
然后执行对应的集群命令:
disk节点(节点1主节点)执行:
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app
ram节点(节点2和节点3)执行:
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster --ram rabbit@rabbitmq1
rabbitmqctl start_app
如果后期需要修改节点的存储方式可以使用:
rabbitmqctl change_cluster_node_type disc/ram –更改节点为磁盘或内存节点
7.检查集群各节点状态
在节点下执行:
rabbitmqctl cluster_status
可以看到哪些是disk nodes,哪些是ram nodes,running nodes在运行的节点,各节点的版本信息等等