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

相关推荐
松涛和鸣1 天前
49、智能电源箱项目技术栈解析
服务器·c语言·开发语言·http·html·php
凉、介1 天前
SylixOS 中的 Unix Socket
服务器·c语言·笔记·学习·嵌入式·sylixos
RisunJan1 天前
Linux命令-ipcs命令(报告进程间通信(IPC)设施状态的实用工具)
linux·运维·服务器
HABuo1 天前
【Linux进程(四)】进程切换&环境变量深入剖析
linux·运维·服务器·c语言·c++·ubuntu·centos
橘颂TA1 天前
【Linux】死锁四条件的底层逻辑:从锁冲突到 STL 组件的线程安全实践(Ⅵ)
linux·运维·服务器·c++·死锁
黄焖鸡能干四碗1 天前
智能制造工业大数据应用及探索方案(PPT文件)
大数据·运维·人工智能·制造·需求分析
橙露1 天前
国产PLC与进口PLC全面对比分析:技术、市场与未来趋势
运维·网络
lbb 小魔仙1 天前
【Linux】云原生运维效率提升:Linux 终端工具链(kubectl + tmux + fzf)组合拳教程
linux·运维·云原生
清水白石0081 天前
解构异步编程的两种哲学:从 asyncio 到 Trio,理解 Nursery 的魔力
运维·服务器·数据库·python