0


用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集群即可)

  1. 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

  1. 编辑好之后,我们先重新加载 systemd管理单元:

  2. systemctl daemon-reload然后再启动服务并且设置开机自启

  3. systemctl start rabbitmq-docker-compose systemctl enable rabbitmq-docker-compose

这样我们开机自启就设置完成了,每当我们重启开机的时候,服务就会自动开启,再也不用我们手动启动服务了,真的很方便!!!!

Docker Compose 部署 RabbitMQ 三节点集群有以下好处:

  1. 简化部署过程: Docker Compose 允许你使用一个单独的配置文件定义和管理多个容器,它可以提供简单且一致的部署体验。通过编写一个 YAML 文件来定义 RabbitMQ 的三个节点,可以轻松地启动整个集群,而无需手动操作每个节点。
  2. 可移植性: 使用 Docker Compose 部署的 RabbitMQ 集群可以在不同的环境中轻松迁移和部署,只需将配置文件和容器镜像移动到新的环境即可。这种可移植性确保了在开发、测试和生产环境之间的一致性,减少了部署和配置的复杂性。
  3. 扩展性: Docker Compose 具备水平扩展的能力,可以根据需要轻松地添加更多的 RabbitMQ 节点。通过简单地复制节点的定义并进行适当的配置,就可以将集群规模扩大到满足高负载需求。
  4. 隔离性: 使用 Docker 容器化部署 RabbitMQ 集群可以提供良好的隔离性。每个节点都运行在独立的容器中,彼此互不干扰。这种隔离性有助于保护集群的稳定性和安全性。
  5. 可管理性: Docker Compose 提供了一组命令和工具,可以轻松地管理和监控整个 RabbitMQ 集群。通过使用 Docker Compose 的命令,可以方便地启动、停止、重启和销毁整个集群。此外,还可以使用适当的监控工具来监视和管理节点的运行状态。

总之,使用 Docker Compose 部署 RabbitMQ 三节点集群可以提供便捷的部署过程、可移植性、扩展性、隔离性和可管理性等多个优势。这使得集群的部署、配置和管理变得更加简单和高效。

标签: docker rabbitmq 容器

本文转载自: https://blog.csdn.net/m0_60747626/article/details/134869718
版权归原作者 你也在听?? 所有, 如有侵权,请联系我们删除。

“用docker-compose部署Rabbitmq三节点集群部署方案”的评论:

还没有评论