当前位置: 首页 > news >正文

单个服务器部署多个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=RabbitMQ03 broker
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 -n rabbit03@localhost  stop
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@localhost cluster_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

http://www.dtcms.com/a/477448.html

相关文章:

  • 银行资产管理系统核心业务架构设计
  • 面向快餐店的全程无人化自动化餐厅深度研究方案
  • 开源 C++ QT QML 开发(十八)多媒体--音频播放
  • 【开题答辩全过程】以 宾馆客房管理系统为例,包含答辩的问题和答案
  • 宁波网站建设设计价格我需要做网站
  • 使用 PyTorch 实现 MNIST 手写数字识别
  • ComfyUI安装和启动攻略1
  • h5移动端开发民治网站优化培训
  • uniapp 微信小程序蓝牙接收中文乱码
  • 多制式基站综合测试线的架构与验证实践 (1)
  • Ceph 分布式存储学习笔记(四):文件系统存储管理
  • ceph设置标志位
  • 系统升级丨让VR全景制作更全面、更简单
  • PyTorch 实现 MNIST 手写数字识别全流程
  • PyTorch实现MNIST手写数字识别:从数据到模型全解析
  • PostgreSQL 测试磁盘性能
  • 北京网站开发科技企业网站
  • 干货|腾讯 Linux C/C++ 后端开发岗面试
  • 【深度学习新浪潮】如何入门分布式大模型推理?
  • 基于单片机的螺旋藻生长大棚PH智能控制设计
  • 分布式专题——42 MQ常见问题梳理
  • mapbox基础,使用矢量切片服务(pbf)加载symbol符号图层
  • Linux中setup_arch和setup_memory相关函数的实现
  • 智能合约在分布式密钥管理系统中的应用
  • Spark大数据分析与实战笔记(第六章 Kafka分布式发布订阅消息系统-01)
  • 做网络竞拍的网站需要什么厦门网站设计哪家公司好
  • React Native:从react的解构看编程众多语言中的解构
  • C++ 手写 List 容器实战:从双向链表原理到完整功能落地,附源码与测试验证
  • 化工课设代做网站网络宣传网站建设价格
  • 【第1篇】2025年羊城工匠杯nl2sql比赛介绍