单个服务器部署多个rabbitmq

前情提要

真实部署环境是机房环境,不能携带手机,所以需要进行提前演练,我使用的docker镜像的方式进行构建。docker的环境搭建详见:两台服务器搭建三个节点-CSDN博客

rabbitmq的安装

加载指定的依赖文件

删除容器,重新构建(保证纯净)

docker stop demo-container

docker rm demo-container

#使用镜像启动容器

docker run -itd --name demo-container --privileged --volume /sys/fs/cgroup:/sys/fs/cgroup:ro kylin-with-systemd:v10-sp3 /usr/lib/systemd/systemd

copy文件到容器

docker cp rabitmq.zip demo-container:/home

进入容器

docker exec -it demo-container bash

cd /home

unzip rabitmq.zip

cd rabitmq

rpm包的安装

安装 Erlang 和 RabbitMQ 的所有依赖(强制安装)

rpm -ivh --force --nodeps *.rpm

查看是否成功安装rabbitmq服务

systemctl list-unit-files --type=service |grep rabbitmq

查看rabbitmq的启动脚本位置。(我的是:/usr/lib/systemd/system/rabbitmq-server.service)

find / -name "rabbitmq-server.service"

配置文件的配置

创建工作目录

ll /var/lib |grep rabbit

cp -rp /var/lib/rabbitmq /var/lib/rabbitmq3

cp -rp /var/lib/rabbitmq /var/lib/rabbitmq2

cp -rp /var/lib/rabbitmq /var/lib/rabbitmq1

编辑启动脚本文件

不明原因导致的使用配置文件启动失败。

nodeName整个集群内不能重复,@后面的域名必须能通过ping可达。

vim /usr/lib/systemd/system/rabbitmq-server-3.service

Unit

Description=RabbitMQ03broker

After=network.target epmd@0.0.0.0.socket

Wants=network.target epmd@0.0.0.0.socket

Service

Type=notify

User=rabbitmq

Group=rabbitmq

NotifyAccess=all

TimeoutStartSec=3600

WorkingDirectory=/var/lib/rabbitmq3

Environment="RABBITMQ_BASE=/var/lib/rabbitmq3"

Environment="HOME=/var/lib/rabbitmq3"

Environment="RABBITMQ_DIST_PORT=25673"

Environment="RABBITMQ_NODE_PORT=5673"

Environment="RABBITMQ_MANAGEMENT_PORT=15673"

Environment="RABBITMQ_NODENAME=rabbit03@localhost"

Environment="RABBITMQ_MNESIA_BASE=/var/lib/rabbitmq3 /mnesia"

Environment="RABBITMQ_LOG_BASE=/var/lib/rabbitmq3/logs"

Environment="RABBITMQ_CONFIG_FILE=/var/lib/rabbitmq3/config/rabbitmq"

ExecStart=/usr/lib/rabbitmq/bin/rabbitmq-server

ExecStop=/usr/lib/rabbitmq/bin/rabbitmqctl -nrabbit03@localhoststop

ExecStop=/bin/sh -c "while ps -p $MAINPID >/dev/null 2>&1; do sleep 1; done"

Install

WantedBy=multi-user.target

启动命令

systemctl daemon-reload

systemctl stop rabbitmq-server-3.service

systemctl start rabbitmq-server-3.service

systemctl status rabbitmq-server-3.service

systemctl start rabbitmq-server-3.service

systemctl start rabbitmq-server-2.service

systemctl start rabbitmq-server-1.service

查看节点运行情况:

rabbitmqctl rabbit03@localhostcluster_status

集群组建

同步erlang的cookie文件

#组建集群:RabbitMQ 集群依赖 Erlang 集群,而 Erlang 集群通过 Cookie 进行通信认证,所以要保证所有机器的 .erlang.cookie 内容一致,且为只读权限

systemctl stop rabbitmq-server-3.service

systemctl stop rabbitmq-server-2.service

systemctl stop rabbitmq-server-1.service

chown -R rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie

chmod 400 /var/lib/rabbitmq/.erlang.cookie

cp rabbitmq/.erlang.cookie rabbitmq2/.erlang.cookie

cp rabbitmq/.erlang.cookie rabbitmq1/.erlang.cookie

cp rabbitmq/.erlang.cookie rabbitmq3/.erlang.cookie

systemctl start rabbitmq-server-1.service

systemctl start rabbitmq-server-2.service

systemctl start rabbitmq-server-3.service

其他节点加入主节点

节点02 加入03主节点(因为node被重命名,必须加-n 启动脚本的nodeName)

停止app

rabbitmqctl -n rabbit02@localhost stop_app

重置

rabbitmqctl -n rabbit02@localhost reset

加入节点

rabbitmqctl -n rabbit02@localhost join_cluster rabbit03@localhost

启动节点

rabbitmqctl -n rabbit02@localhost start_app

节点01 加入03主节点

rabbitmqctl -n rabbit01@localhost stop_app

rabbitmqctl -n rabbit01@localhost reset

rabbitmqctl -n rabbit01@localhost join_cluster rabbit03@localhost

rabbitmqctl -n rabbit01@localhost start_app

验证集群启动状态

rabbitmqctl -n rabbit@localhost cluster_status

相关推荐
ulias21220 小时前
Linux系统中的权限问题
linux·运维·服务器
青花瓷21 小时前
Ubuntu下OpenClaw的安装(豆包火山API版)
运维·服务器·ubuntu
问简1 天前
docker 镜像相关
运维·docker·容器
Dream of maid1 天前
Linux(下)
linux·运维·服务器
齐鲁大虾1 天前
统信系统UOS常用命令集
linux·运维·服务器
Benszen1 天前
Docker容器化技术实战指南
运维·docker·容器
ZzzZZzzzZZZzzzz…1 天前
Nginx 平滑升级:从 1.26.3 到 1.28.0,用户无感知
linux·运维·nginx·平滑升级·nginx1.26.3·nginx1.28.0
一叶知秋yyds1 天前
Ubuntu 虚拟机安装 OpenClaw 完整流程
linux·运维·ubuntu·openclaw
专吃海绵宝宝菠萝屋的派大星1 天前
使用Dify对接自己开发的mcp
java·服务器·前端
斯普信云原生组1 天前
Prometheus 环境监控虚机 Redis 方案(生产实操版)
运维·docker·容器