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

相关推荐
德育处主任2 小时前
『NAS』轻松获取群晖自带的壁纸
服务器·docker
zzzsde2 小时前
【Linux】基础开发工具(3):编译器
linux·运维·服务器
..空空的人3 小时前
C++基于websocket的多用户网页五子棋 ---- 整合封装服务器模块设计实现
运维·服务器
愚戏师3 小时前
Python3 多线程
linux·运维·服务器·python
JSON_L4 小时前
Fastadmin中使用rabbitmq实现延迟队列
rabbitmq·php·fastadmin
n***33354 小时前
linux redis简单操作
linux·运维·redis
n***4435 小时前
Node.js HTTP模块详解:创建服务器、响应请求与客户端请求
服务器·http·node.js
q***69775 小时前
集成RabbitMQ+MQ常用操作
分布式·rabbitmq
2***s6725 小时前
【Go】Go语言基础学习(Go安装配置、基础语法)
服务器·学习·golang
xuchaoxin13755 小时前
cdn节点代理的副作用@fail2ban对接cdn封锁恶意请求ip@fail2ban封锁ip有效性问题
运维·网络·cdn·cloudflare