部署RabbitMQ集群
创建目录,用于存放Docker Compose
部署RabbitMQ
集群的yaml
文件:
mkdir -p /root/composefile/rabbitmq
写入该yaml
文件:
vim /root/composefile/rabbitmq/rabbitmq_cluster.yaml
内容如下所示:
version: '3'
services:
rabbitmq1:
image: rabbitmq:management
restart: always
ports:
- "15673:15672"
- "5673:5672"
hostname: rabbitmq1
container_name: rabbitmq1
environment:
- RABBITMQ_DEFAULT_USER=admin
- RABBITMQ_DEFAULT_PASS=admin
- RABBITMQ_ERLANG_COOKIE=rabbitmq_erlang_cookie
rabbitmq2:
image: rabbitmq:management
restart: always
ports:
- "5674:5672"
hostname: rabbitmq2
container_name: rabbitmq2
environment:
- RABBITMQ_ERLANG_COOKIE=rabbitmq_erlang_cookie
links:
- rabbitmq1
rabbitmq3:
image: rabbitmq:management
restart: always
ports:
- "5675:5672"
hostname: rabbitmq3
container_name: rabbitmq3
environment:
- RABBITMQ_ERLANG_COOKIE=rabbitmq_erlang_cookie
links:
- rabbitmq1
- rabbitmq2
rabbitmq:management
镜像是开启管理插件的RabbitMQ
镜像,环境变量RABBITMQ_ERLANG_COOKIE
需要一致,开始部署:
docker compose -f /root/composefile/rabbitmq/rabbitmq_cluster.yaml up -d
up
完成。
[+] Running 13/13
⠿ rabbitmq3 Pulled 41.5s
⠿ 08c01a0ec47e Pull complete 19.2s
⠿ 1ceb23964d6c Pull complete 19.8s
⠿ 64631f643e2c Pull complete 33.1s
⠿ 67525726a753 Pull complete 33.2s
⠿ 4b28b554c25b Pull complete 34.4s
⠿ 3afdc08bc87a Pull complete 34.5s
⠿ 1e22dd212ab8 Pull complete 34.6s
⠿ b585ed397156 Pull complete 34.7s
⠿ 68de743a7628 Pull complete 34.7s
⠿ rabbitmq1 Pulled 41.5s
⠿ 68b52ebaee48 Pull complete 36.1s
⠿ rabbitmq2 Pulled 41.5s
[+] Running 4/4
⠿ Network rabbitmq_default Created 0.3s
⠿ Container rabbitmq1 Started 2.8s
⠿ Container rabbitmq2 Started 3.3s
⠿ Container rabbitmq3 Started 5.3s
列出正在运行的compose
项目。
docker compose ls
RabbitMQ
集群的所有节点都在运行。
NAME STATUS
rabbitmq running(3)
将rabbitmq1
作为主节点,需要在rabbitmq2
和rabbitmq3
中执行一些命令,将它们加入到集群。
进入rabbitmq2
:
docker exec -it rabbitmq2 /bin/bash
执行:
rabbitmqctl stop_app
rabbitmqctl join_cluster rabbit@rabbitmq1
rabbitmqctl start_app
# 离开容器
exit
进入rabbitmq3
:
docker exec -it rabbitmq3 /bin/bash
执行:
rabbitmqctl stop_app
rabbitmqctl join_cluster rabbit@rabbitmq1
rabbitmqctl start_app
# 离开容器
exit
访问rabbitmq1
的管理界面可以看到RabbitMQ
集群的三个节点。
测试
测试代码参考下面这篇博客:
- RabbitMQ:@RabbitListener注解简化消息监听
只需要修改配置文件:
spring:
rabbitmq:
addresses: 192.168.1.7:5673,192.168.1.9:5674,192.168.1.9:5675
username: admin
password: admin
启动应用,Spring Boot
会和RabbitMQ
建立连接。
使用Postman
请求接口。
RabbitMQ
管理界面可以看到消息记录。
消费者也监听到了这条消息。
Docker Compose
部署RabbitMQ
集群就介绍到这里,如果博主有说错的地方或者大家有不同的见解,欢迎大家评论补充。