单个服务器部署多个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

相关推荐
wanhengidc4 小时前
云手机的多元功能应用
运维·服务器·网络·游戏·智能手机
默 语4 小时前
消息中间件选型的艺术:如何在RocketMQ、Kafka、RabbitMQ中做出正确决策
java·架构·kafka·消息队列·rabbitmq·rocketmq·技术选型
热爱生活的五柒4 小时前
vscode如何链接远程服务器里面的docker里面的目录
服务器·vscode·docker
ITKEY_5 小时前
ssh中neovim无法复制文本 clipboard
运维·ssh
Bruce_Liuxiaowei5 小时前
Windows系统错误6118全面解决方案:修复此工作组的服务器列表当前无法使用
运维·服务器·windows·网络安全
望获linux6 小时前
【实时Linux实战系列】Linux 内核的实时组调度(Real-Time Group Scheduling)
java·linux·服务器·前端·数据库·人工智能·深度学习
云宏信息6 小时前
【深度解析】VMware替代的关键一环:云宏ROW快照如何实现高频业务下的“无感”数据保护?
服务器·网络·数据库·架构·云计算·快照
坐吃山猪6 小时前
zk02-知识演进
运维·zookeeper·debian
江公望6 小时前
ubuntu kylin(优麒麟)和标准ubuntu的区别浅谈
linux·服务器·ubuntu·kylin