(二)RabbitMQ实战——rabbitmq高可用集群搭建

前言

本节内容是关于rabbitmq高可用集群的部署搭建,使用的是centos7系统,我们准备三台服务器作为rabbitmq的高可用服务器,rabbitmq集群本身不是天然支持高可用的,我们通过配置rabbitmq服务器的镜像队列,以确保消息可以在集群中的多个节点上进行复制存储,提高可用性和容错性,避免单节点故障。

主机名 IP 服务
hadoop101 192.168.10.101 rabbitmq
hadoop102 192.168.10.102 rabbitmq
hadoop103 192.168.10.103 rabbitmq
[rabbitmq高可用集群服务器规划]

正文

①上传rabbitmq安装包到服务器hadoop101、hadoop102、hadoop103

②服务器分别使用rpm命令安装erlang环境

命令:

复制代码
sudo rpm -ivh erlang-26.2.3-1.el7.x86_64.rpm

查看erlang是否安装成功:

③使用rpm命令安装rabbitmq服务器

命令:

复制代码
sudo rpm -ivh rabbitmq-server-3.13.0-1.el8.noarch.rpm

④启动rabbitmq服务器

命令:

复制代码
#设置rabbitmq服务器开机自启
systemctl enable rabbitmq-server
#启动rabbitmq服务器
systemctl start rabbitmq-server
#查看rabbitmq服务器状态
systemctl status rabbitmq-server
#停止rabbitmq服务器
systemctl stop rabbitmq-server
#重启rabbitmq服务器
systemctl restart rabbitmq-server

⑤开启rabbitmq的web客户端rabbitmq_management

-开启rabbitmq服务器的web客户端

复制代码
rabbitmq-plugins enable rabbitmq_management
  • 使用浏览器访问rabbitmq客户端
  • 添加rabbitmq访问的账号

    创建用户

    rabbitmqctl add_user <用户名> <密码>

    设置用户角色

    rabbitmqctl set_user_tags <用户> <角色>

    设置用户权限

    rabbitmqctl set_permissions [-p <vhostpath>] <user> <conf> <write> <read>

    查看用户

    rabbitmqctl list_users

  • 使用创建的rabbitmq账户admin登录web端

⑥配置主机名和host地址的映射,便于服务器通过主机名相互访问,关于服务器之间的免密访问,以及服务器文件之间的互传可参考作者往期博客内容

⑦同步分发hadoop101服务器rabbitmq的cookie到hadoop102和hadoop103,确保各个节点使用的是同一个cookie

复制代码
scp /var/lib/rabbitmq/.erlang.cookie root@hadoop102:/var/lib/rabbitmq/.erlang.cookie
scp /var/lib/rabbitmq/.erlang.cookie root@hadoop103:/var/lib/rabbitmq/.erlang.cookie

⑧在hadoop102、hadoop103节点分别执行以下命令,使节点加入集群

  • 后台启动rabbitmq服务

    rabbitmq-server -detached

  • 关闭rabbitmq服务器

    rabbitmqctl stop_app

  • 重置rabbitmq服务器

    rabbitmqctl reset

  • rabbitmq加入集群

    rabbitmqctl join_cluster rabbit@hadoop101

  • 启动应用

    rabbitmqctl start_app

  • 查看集群状态

    rabbitmqctl cluster_status

⑨ rabbitmq节点退出集群,以hadoop103节点退出为例

  • 停止hadoop103节点应用

    rabbitmqctl -n rabbit@hadoop103 stop_app

  • 在hadoop101或者hadoop102任意节点移除hadoop103

    rabbitmqctl forget_cluster_node rabbit@hadoop103

  • 查看集群

⑩创建镜像队列,实现rabbitmq消息集群间同步

  • 正常情况下,rabbitmq集群并不是高可用的,节点间的数据是不能共享的,需要使用镜像队列同步节点数据,引入镜像队列(Mirror Queue)的机制,如果集群中的一个节点失效了,队列能自动地切换到镜像中的另一个节点上以保证服务的可用性
  • 镜像策略添加完成,可根据具体实际需求添加多个策略
  • 查看策略是否生效
  • 停掉节点101,集群还能正常使用,故障发生转移,其它节点生效
  • 重启节点101,副本数恢复

结语

至此,关于rabbitmq高可用集群搭建的教程到这里就结束了,我们下期见。。。。。。

相关推荐
黄俊懿10 小时前
【架构师从入门到进阶】第二章:系统衡量指标——第一节:伸缩性、扩展性、安全性
分布式·后端·中间件·架构·系统架构·架构设计
koping_wu14 小时前
常用中间件面试汇总:Mysql、Mq、Redis、操作系统、Nacos、Es、Mybatis
mysql·中间件·面试
江沉晚呤时15 小时前
.NET 9 快速上手 RabbitMQ 直连交换机:高效消息传递实战指南
开发语言·分布式·后端·rabbitmq·.net·ruby
爱学习的小可爱卢16 小时前
Redis从入门到精通:入门到精通(万字详解)
数据库·redis·中间件
老毛肚19 小时前
八股中间件
中间件
彭于晏Yan1 天前
MQTT消息服务
spring boot·后端·中间件
Nandeska2 天前
1、RocketMQ核心概念详解
中间件·rocketmq
⑩-2 天前
RabbitMQ 架构和工作原理?RabbitMQ 延迟队列如何实现?
java·分布式·架构·rabbitmq
Tezign_space2 天前
Context System vs. API网关与中间件:重新定义AI时代的“连接”逻辑
中间件·agentic ai·gea·主动规划·企业级智能体·proactive agent
七夜zippoe2 天前
消息队列选型:Kafka vs RabbitMQ vs Redis 深度对比
redis·python·kafka·消息队列·rabbitmq