Docker部署Rabbit MQ镜像集群
·
mkdir -p /data/rabbitmq-cluster && cd /data/rabbitmq-cluster
cat << 'EOF' > rabbitmq.conf
# 启用经典对等发现机制
cluster_formation.peer_discovery_backend = rabbit_peer_discovery_classic_config
# 声明集群中的节点列表(格式:rabbit@服务名)
cluster_formation.classic_config.nodes.1 = rabbit@rabbit1
cluster_formation.classic_config.nodes.2 = rabbit@rabbit2
cluster_formation.classic_config.nodes.3 = rabbit@rabbit3
EOF
vim docker-compose.yml
version: '3.8'
services:
rabbit1:
image: rabbitmq:3.12-management
container_name: rabbit1
hostname: rabbit1
restart: always
environment:
- RABBITMQ_ERLANG_COOKIE=MyClusterSecretCookie123
- RABBITMQ_DEFAULT_USER=admin
- RABBITMQ_DEFAULT_PASS=admin123
ports:
- "5672:5672" # 主节点 AMQP 端口
- "15672:15672" # 主节点 Web 管理端口
volumes:
- ./rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf
- ./data/rabbit1:/var/lib/rabbitmq
rabbit2:
image: rabbitmq:3.12-management
container_name: rabbit2
hostname: rabbit2
restart: always
depends_on:
- rabbit1
environment:
- RABBITMQ_ERLANG_COOKIE=MyClusterSecretCookie123
ports:
- "5673:5672" # 节点2 AMQP 端口
- "15673:15672" # 节点2 Web 管理端口
volumes:
- ./rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf
- ./data/rabbit2:/var/lib/rabbitmq
rabbit3:
image: rabbitmq:3.12-management
container_name: rabbit3
hostname: rabbit3
restart: always
depends_on:
- rabbit1
environment:
- RABBITMQ_ERLANG_COOKIE=MyClusterSecretCookie123
ports:
- "5674:5672" # 节点3 AMQP 端口
- "15674:15672" # 节点3 Web 管理端口
volumes:
- ./rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf
- ./data/rabbit3:/var/lib/rabbitmq
docker exec -it rabbit1 rabbitmqctl cluster_status
iptables -F && sysctl -w net.ipv4.ip_forward=1 && systemctl restart docker
cd /data/rabbitmq-cluster && docker compose up -d
镜像同步
docker exec -it rabbit1 rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all","ha-sync-mode":"automatic"}' --apply-to queues
docker exec -it rabbit1 rabbitmqctl list_queues name policy pid slave_pids
更多推荐
所有评论(0)