部署集群的Dockerfile文件
# 编排php,redis,nginx容器
version: "3.6" # 确定docker-composer文件的版本
services: # 代表就是一组服务 - 简单来说一组容器
# server
rabbitmq_server_172_3: # 这个表示服务的名称,课自定义; 注意不是容器名称
image: rabbitmq:3.7-management # 指定容器的镜像文件
ports: # 配置容器与宿主机的端口
- "15673:15672"
- "5673:5672"
networks: ## 引入外部预先定义的网段
rabbitmq:
ipv4_address: 172.200.7.3 #设置ip地址
hostname: mq3
volumes:
- "/www/wwwroot/2007_SRM/rabbitmq/3:/var/lib/rabbitmq"
container_name: rabbitmq_server_172_3 # 这是容器的名称
# command:
rabbitmq_server_172_2: # 这个表示服务的名称,课自定义; 注意不是容器名称
image: rabbitmq:3.7-management # 指定容器的镜像文件
ports: # 配置容器与宿主机的端口
- "15672:15672"
- "5672:5672"
networks: ## 引入外部预先定义的网段
rabbitmq:
ipv4_address: 172.200.7.2 #设置ip地址
hostname: mq2
volumes:
- "/www/wwwroot/2007_SRM/rabbitmq/2:/var/lib/rabbitmq"
container_name: rabbitmq_server_172_2 # 这是容器的名称
rabbitmq_server_172_4: # 这个表示服务的名称,课自定义; 注意不是容器名称
image: rabbitmq:3.7-management # 指定容器的镜像文件
ports: # 配置容器与宿主机的端口
- "15674:15672"
- "5674:5672"
networks: ## 引入外部预先定义的网段
rabbitmq:
ipv4_address: 172.200.7.4 #设置ip地址
hostname: mq4
volumes:
- "/www/wwwroot/2007_SRM/rabbitmq/4:/var/lib/rabbitmq"
container_name: rabbitmq_server_172_4 # 这是容器的名称
# 设置网络模块
networks:
# 自定义网络
rabbitmq:
driver: bridge
ipam: #定义网段
config:
- subnet: "172.200.7.0/24"
部署
docker-compose up -d
注意 如果失败 可能是防火墙问题
一、同步cookie和hostname
1、同步cookie
随表挑一台,拿出cookie,覆盖其他(以3为主,其他cookie覆盖为3的cookie)
文件位置(改共享目录的文件)
# 进入 rabbitmq_server_172_3容器
docker exec -it rabbitmq_server_172_3 bash
# 获取cookie
cat /var/lib/rabbitmq/.erlang.cookie
修改cookie后重启
2、修改hosts和hostame
host与hostname所有节点保持一致,因为互为主从
#在2中,/etc/hosts 加入
#直接覆盖
cp /var/lib/rabbitmq/hosts /etc/hosts
cp /var/lib/rabbitmq/hostname /etc/hostname
#hosts(3个容器的hosts保持一致)
172.200.7.2 mq2
172.200.7.3 mq3
172.200.7.4 mq4
#/etc/hostname 追加 (3个容器的hosts保持一致)
mq2
mq3
mq4
二、加入集群
rabbitmqctl stop_app #停止
rabbitmqctl reset #重新配置
#加入集群节点
rabbitmqctl join_cluster --ram rabbit@mq3
#再启动
rabbitmqctl start_app
网友评论