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

相关推荐
chen_note10 分钟前
Kubernetes1.23版本搭建(三台机器)
运维·容器·kubernetes·云计算·kubepi
花落已飘16 分钟前
openEuler WSL2容器化开发实战:Docker Desktop集成与应用部署
运维·docker·容器
betazhou1 小时前
基于Linux环境使用ogg19版本从oracle 19c ADG备库远程同步数据
linux·运维·oracle·goldengate·adg·远程抽取
路由侠内网穿透.1 小时前
本地部署消息代理软件 RabbitMQ 并实现外部访问( Windows 版本 )
linux·运维·服务器·远程工作
wanhengidc2 小时前
海外云手机是指什么
运维·服务器·游戏·智能手机·云计算
Fanmeang2 小时前
华为防火墙基础功能详解:构建网络安全的基石
运维·网络·安全·华为·防火墙·策略·安全域
孙同学_2 小时前
【Linux篇】System V IPC详解:共享内存、消息队列与信号量
linux·服务器
求知若渴,虚心若愚。3 小时前
手搓 OpenStack 部署 实战
运维·openstack
虚伪的空想家4 小时前
记录次etcd故障,fatal error: bus error
服务器·数据库·k8s·etcd
忧郁的橙子.4 小时前
二十一、kubernetes 1.29 之 运维 03
运维