Docker - 02 使用Docker部署RabbitMQ集群

本文详细介绍了如何利用Docker来部署RabbitMQ集群,从基础配置到集群搭建步骤,帮助读者掌握在容器环境中操作RabbitMQ的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用Docker部署RabbitMQ集群

Welcome to Alibaba Cloud Elastic Compute Service !

[root@iZbp1aqcmdz5fou0bri0mgZ ~]# docker pull rabbitmq
Using default tag: latest
Trying to pull repository docker.io/library/rabbitmq ... 
latest: Pulling from docker.io/library/rabbitmq
802b00ed6f79: Already exists 
84fe35f04ebe: Pull complete 
72a118dc68c2: Pull complete 
51c199718697: Pull complete 
e74b797281ea: Pull complete 
f2b0494f0e3c: Pull complete 
d43b5d7d2745: Pull complete 
dedfc544656e: Pull complete 
ed99f98ab240: Pull complete 
422ec57c0d17: Pull complete 
85c41b55ab02: Pull complete 
8d040d0f68fe: Pull complete 
Digest: sha256:a8094b952b9fe778f4e70efaca98494e167088ef3272944a28b89caf6e098790
Status: Downloaded newer image for docker.io/rabbitmq:latest
[root@iZbp1aqcmdz5fou0bri0mgZ ~]# docker run -d -p 5672:5672 --name myrabbit rabbitmq
1a393b64087b811c0dbc82d101090b179c13adc8d5b01b7d7635f031eab2b64f
[root@iZbp1aqcmdz5fou0bri0mgZ ~]# docker container exec -it myrabbit /bin/bash
root@1a393b64087b:/# ]docker ps
bash: ]docker: command not found
root@1a393b64087b:/# cd ~
root@1a393b64087b:~# docker ps
bash: docker: command not found
root@1a393b64087b:~# docker ps
bash: docker: command not found
root@1a393b64087b:
### RabbitMQ 集群多节点配置方法 使用 Docker Compose 部署 RabbitMQ 多节点集群是一种高效且可管理的方式,可以通过容器化技术快速搭建一个高可用的消息队列系统。以下是一个详细的部署步骤和配置说明。 #### 1. 准备工作 在开始之前,请确保已安装 DockerDocker Compose,并准备好三台虚拟机或服务器以支持多节点部署。如果在同一台机器上测试,则需要为每个节点分配不同的端口和主机名。 #### 2. 创建网络配置 RabbitMQ 节点之间通过主机名进行通信,因此需要在容器中设置 hosts 文件来解析其他节点的主机名。可以在 `docker-compose.yml` 文件中定义自定义网络,或者手动挂载 hosts 文件。 #### 3. 编写 `docker-compose.yml` 以下是一个典型的 `docker-compose.yml` 文件示例,用于部署三节点 RabbitMQ 集群: ```yaml version: '3' services: rabbitmq1: image: rabbitmq:3.9-management hostname: rabbitmq1 container_name: rabbitmq1 ports: - "5672:5672" - "15672:15672" environment: - RABBITMQ_ERLANG_COOKIE=secret_cookie - RABBITMQ_NODENAME=rabbitmq1 volumes: - ./hosts:/etc/hosts networks: - rabbitmq-net rabbitmq2: image: rabbitmq:3.9-management hostname: rabbitmq2 container_name: rabbitmq2 ports: - "5673:5672" - "15673:15672" environment: - RABBITMQ_ERLANG_COOKIE=secret_cookie - RABBITMQ_NODENAME=rabbitmq2 volumes: - ./hosts:/etc/hosts depends_on: - rabbitmq1 command: ["sh", "-c", "sleep 10 && rabbitmqctl stop_app && rabbitmqctl reset && rabbitmqctl join_cluster --ram rabbitmq1 && rabbitmqctl start_app"] networks: - rabbitmq-net rabbitmq3: image: rabbitmq:3.9-management hostname: rabbitmq3 container_name: rabbitmq3 ports: - "5674:5672" - "15674:15672" environment: - RABBITMQ_ERLANG_COOKIE=secret_cookie - RABBITMQ_NODENAME=rabbitmq3 volumes: - ./hosts:/etc/hosts depends_on: - rabbitmq1 command: ["sh", "-c", "sleep 10 && rabbitmqctl stop_app && rabbitmqctl reset && rabbitmqctl join_cluster --ram rabbitmq1 && rabbitmqctl start_app"] networks: - rabbitmq-net networks: rabbitmq-net: driver: bridge ``` #### 4. 配置 Hosts 文件 创建 `./hosts` 文件,内容如下: ``` 127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters 172.25.0.2 rabbitmq1 172.25.0.3 rabbitmq2 172.25.0.4 rabbitmq3 ``` 此文件将帮助容器解析其他节点的主机名。 #### 5. 启动集群 运行以下命令启动集群: ```bash docker-compose up -d ``` Docker 将依次启动三个 RabbitMQ 容器,并自动配置它们加入集群。 #### 6. 验证集群状态 进入任意节点并执行以下命令查看集群状态: ```bash docker exec -it rabbitmq1 rabbitmqctl cluster_status ``` 输出应显示所有节点已成功加入集群。 #### 7. 配置镜像队列(可选) 为了实现高可用性,可以配置镜像队列,使消息在多个节点间同步。例如,创建一个策略,将所有队列镜像到集群中的两个节点: ```bash rabbitmqctl set_policy ha-two "^" '{"ha-mode":"exactly","ha-params":2,"ha-sync-mode":"automatic"}' ``` 该命令将在集群中启用镜像队列功能,确保即使某个节点宕机,队列仍可在其他节点上继续提供服务[^4]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值