用docker-compose部署Rabbitmq三节点集群部署方案
Rabbitmq三节点集群部署方案
1.先准备好三台服务器
主机名 | IP |
node1 | 10.4.2.10 |
node2 | 10.4.2.59 |
node3 | 10.4.2.134 |
2.安装准备工作(三台都要操作)
(1)在/root目录下先创建一个rabitmq目录用于存放文件
mkdir rabitmq
(2)修改主机名和域名解析hosts文件
(1)修改主机名
hostnamectl set-hostname node1
hostnamectl set-hostname node2
hostnamectl set-hostname node3
node1 node2 node3 分别对应的ip
10.4.2.10 node1
10.4.2.59 node2
10.4.2.134 node3
(2)编辑hosts文件vi /etc/hosts
在末尾写入 (三台都一样)
10.4.2.10 node1
10.4.2.59 node2
10.4.2.134 node3
(3)获取rabbitmq:3.8.19-management版本的镜像(三台都一样)
docker pull rabbitmq:3.8.19-management
(4)创建挂载目录,并且给予相应权限 (三台都要)
mkdir /var/lib/rabbitmq
chmod 777 /var/lib/rabbitmq
mkdir /var/log/rabbitmq
chmod 777 /var/log/rabbitmq
echo 'rabbitmq_cluster_cookie' > /var/lib/rabbitmq/.erlang.cookie
chmod 600 /var/lib/rabbitmq/.erlang.cookie
(5)在/root/rabitmq目录下创建一个docker-compose.yml的文件(三台都要)
touch docker-compose.yml
(6)编辑docker-compose.yml文件(三台都要做)
Vi docker-compose.yml
(1)10.4.2.10 node1 docker-compose.yml
version: '3.1'
services:
rabbitmq:
image: rabbitmq:3.8.19-management
network_mode: "host" # 网络模式使用主机模式
container_name: rabbitmq1
privileged: true
volumes:
- /var/lib/rabbitmq:/var/lib/rabbitmq # 挂载数据
- /var/log/rabbitmq:/var/log/rabbitmq # 挂载日志
- /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime
environment:
- RABBITMQ_DEFAULT_USER=guest
- RABBITMQ_DEFAULT_PASS=guest
restart: always
(2).10.4.2.59 node2 docker-compose.yml
version: '3.1'
services:
rabbitmq:
image: rabbitmq:3.8.19-management
network_mode: "host" # 网络模式使用主机模式
container_name: rabbitmq2
privileged: true
volumes:
- /var/lib/rabbitmq:/var/lib/rabbitmq # 挂载数据
- /var/log/rabbitmq:/var/log/rabbitmq # 挂载日志
- /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime
environment:
- RABBITMQ_DEFAULT_USER=guest
- RABBITMQ_DEFAULT_PASS=guest
restart: always
(3)10.4.2.134 node3 docker-compose.yml
version: '3.1'
services:
rabbitmq:
image: rabbitmq:3.8.19-management
network_mode: "host" # 网络模式使用主机模式
container_name: rabbitmq3
privileged: true
volumes:
- /var/lib/rabbitmq:/var/lib/rabbitmq # 挂载数据
- /var/log/rabbitmq:/var/log/rabbitmq # 挂载日志
- /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime
environment:
- RABBITMQ_DEFAULT_USER=guest
- RABBITMQ_DEFAULT_PASS=guest
restart: always
(7)直接启动docker-compose up -d (三台都一样)
启动docker-compose up -d
(8)查看服务docker ps |grep ra
(9)
浏览器看一下图形化页面 如: 10.4.2.10:15672
即:ip:15672访问 账号guest 密码guest
(10)node2和node3加入node1集群(以node3为例,node2按照node3步骤一样去加入node1集群即可)
- Node3加入集群
先node1上面操作:
docker exec rabbitmq1 /bin/bash -c 'rabbitmqctl stop_app'
docker exec rabbitmq1 /bin/bash -c 'rabbitmqctl reset'
docker exec rabbitmq1 /bin/bash -c 'rabbitmqctl start_app'
docker exec rabbitmq1 /bin/bash -c 'rabbitmq-plugins enable rabbitmq_management'
然后再node3上面操作:
docker exec rabbitmq3 /bin/bash -c 'rabbitmqctl stop_app'
docker exec rabbitmq3 /bin/bash -c 'rabbitmqctl reset'
docker exec rabbitmq3 /bin/bash -c 'rabbitmqctl join_cluster rabbit@node1'
docker exec rabbitmq3 /bin/bash -c 'rabbitmqctl start_app'
(11)开启统计 (三台都一样)
进入容器然后将这个文件的值改为false
/etc/rabbitmq/conf.d//management_agent.disable_metrics_collector.conf 中的值改为 false
docker exec -it rabbitmq1 /bin/bash
echo 'management_agent.disable_metrics_collector = false' > /etc/rabbitmq/conf.d//management_agent.disable_metrics_collector.conf
## 然后重启容器
docker restart rabbitmq1
测试加入成功与否 ,查看其状态 rabbitmqctl cluster_status
然后去图形化页面看一看 10.4.2.10:15672 账号:guest密码 guest
Node1 10.4.2.10
Node2 10.4.2.59
Node3 10.4.2.134
3.我们设置一下开机自启。
(1)首先cd /etc/systemd/system目录下
(2)然后 vi rabbitmq-docker-compose.service
这是rabbitmq-docker-compose.service文件,里面有两处可能需要改,请注意下面的提示
[Unit]
Description=Docker Compose Application
Requires=docker.service
After=docker.service
[Service]
Type=oneshot
RemainAfterExit=yes
WorkingDirectory=/root/rabitmq/
ExecStart=/usr/local/bin/docker-compose up -d
ExecStop=/usr/local/bin/docker-compose down
TimeoutStartSec=0
[Install]
WantedBy=multi-user.target
其中需要注意的是:WorkingDirectory是docker-compose.yml所在目录,可以去看一下它在哪个目录之下
find / -name docker-compose.yml
直接找到在/root/rabitmq/ 下
ExecStart和ExecStop是指定docker-compose的可执行性文件的目录,可以用whereis docker-compose查看
加一个可执行权限
chmod a+x rabbitmq-docker-compose.service
-
编辑好之后,我们先重新加载 systemd管理单元:
-
systemctl daemon-reload
然后再启动服务并且设置开机自启 -
systemctl start rabbitmq-docker-compose
systemctl enable rabbitmq-docker-compose
这样我们开机自启就设置完成了,每当我们重启开机的时候,服务就会自动开启,再也不用我们手动启动服务了,真的很方便!!!!
Docker Compose 部署 RabbitMQ 三节点集群有以下好处:
-
简化部署过程: Docker Compose 允许你使用一个单独的配置文件定义和管理多个容器,它可以提供简单且一致的部署体验。通过编写一个 YAML 文件来定义 RabbitMQ 的三个节点,可以轻松地启动整个集群,而无需手动操作每个节点。
-
可移植性: 使用 Docker Compose 部署的 RabbitMQ 集群可以在不同的环境中轻松迁移和部署,只需将配置文件和容器镜像移动到新的环境即可。这种可移植性确保了在开发、测试和生产环境之间的一致性,减少了部署和配置的复杂性。
-
扩展性: Docker Compose 具备水平扩展的能力,可以根据需要轻松地添加更多的 RabbitMQ 节点。通过简单地复制节点的定义并进行适当的配置,就可以将集群规模扩大到满足高负载需求。
-
隔离性: 使用 Docker 容器化部署 RabbitMQ 集群可以提供良好的隔离性。每个节点都运行在独立的容器中,彼此互不干扰。这种隔离性有助于保护集群的稳定性和安全性。
-
可管理性: Docker Compose 提供了一组命令和工具,可以轻松地管理和监控整个 RabbitMQ 集群。通过使用 Docker Compose 的命令,可以方便地启动、停止、重启和销毁整个集群。此外,还可以使用适当的监控工具来监视和管理节点的运行状态。
总之,使用 Docker Compose 部署 RabbitMQ 三节点集群可以提供便捷的部署过程、可移植性、扩展性、隔离性和可管理性等多个优势。这使得集群的部署、配置和管理变得更加简单和高效。