首页 > 其他分享 >RabbitMQ实战——rabbitmq高可用集群搭建

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

时间:2024-07-29 15:30:02浏览次数:11  
标签:RabbitMQ rabbitmqctl 集群 rabbitmq 服务器 节点 内存

本文详细介绍了如何在CentOS7系统上部署RabbitMQ高可用集群,包括安装ERlang和RabbitMQ服务器,设置Web客户端,配置主机名映射,同步cookie,加入和退出集群,以及使用镜像队列实现数据同步。
摘要由CSDN通过智能技术生成
前言
本节内容是关于rabbitmq高可用集群的部署搭建,使用的是centos7系统,我们准备三台服务器作为rabbitmq的高可用服务器,rabbitmq集群本身不是天然支持高可用的,我们通过配置rabbitmq服务器的镜像队列,以确保消息可以在集群中的多个节点上进行复制存储,提高可用性和容错性,避免单节点故障。

rabbitmq高可用集群服务器规划
主机名 IP 服务
hadoop101 192.168.10.101 rabbitmq
hadoop102 192.168.10.102 rabbitmq
hadoop103 192.168.10.103 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,副本数恢复

 

一、内存控制

vm_memory_high_watermark该值为内存阈值,默认为0.4。意思为物理内存的40%。40%的内存并不是内存的最大的限制,它是一个发布的节制,当达到40%时Erlang会做GC。最坏的情况是使用内存80%。如果把该值配置为0,将关闭所有的publishing 。命令如下:

 

rabbitmqctl set_vm_memory_high_watermark 0

Paging内存阈值,该值为默认为0.5,该值为vm_memory_high_watermark的20%时,将把内存数据写到磁盘。
如机器内存16G,当RABBITMQ占用内存1.28G(16*0.4*0.2)时把内存数据放到磁盘。

 

二、硬盘控制

当RabbitMQ的磁盘空闲空间小于50M(默认),生产者将被BLOCK。

如果采用集群模式,磁盘节点空闲空间小于50M将导致其他节点的生产者都被block。可以通过disk_free_limit来对进行配置。
-----------------------------------
centos7搭建rabbitmq高可用集群 rabbitmq集群部署详解
https://blog.51cto.com/u_12947/10982368

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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/yprufeng/article/details/136896274

标签:RabbitMQ,rabbitmqctl,集群,rabbitmq,服务器,节点,内存
From: https://www.cnblogs.com/cheyunhua/p/18330174

相关文章

  • tidb集群部署
    ####################################################集群IP例子172.21.243.141172.21.243.69172.21.243.47172.21.243.33172.21.243.184172.21.243.64172.21.243.223机器配置我这边是7台机器,每台2c8g100g####################################################离线部署方......
  • Elasticsearch跨集群搜索
    Elasticsearch(简称ES)是一种基于Lucene的搜索引擎,以其高性能、可扩展性和实时搜索能力而广受欢迎。在大型分布式系统中,跨集群搜索成为了一个重要的需求,它允许用户从多个Elasticsearch集群中联合查询数据,以提高搜索效率和数据一致性。ES|QL(ElasticsearchQueryLanguage)作为一......
  • elasticsearch8单机/集群部署
    目录一、ES8单节点部署集群架构1.环境准备2.创建用户和目录3.下载解压安装包3.1下载es83.2解压安装3.3授权目录4.修改配置文件5.使用system启动es5.1使用oracle-jdk启动(二选一)6.查看日志7.访问验证8.重置elastic密码8.1重置随机密码8.2自定义密码9.jvm内存调整9.1重启验证......
  • Kubernetes 集群中 Pod 使用镜像的批量导出脚本
    目录动机脚本使用实例获取指定命名空间获取所有命名空间生成csv文件动机最近,由于DockerHub镜像的失效,在重新启动Pod时,拉取镜像失败,导致Pod无法正常启动。因此,我需要批量检查集群中有哪些Pod使用了官方的DockerHub镜像,并将这些镜像保存到本地的Harbor仓库中。为此,......
  • 使用 Docker Compose 部署 RabbitMQ 的一些经验与踩坑记录
    前言RabbitMQ是一个功能强大的开源消息队列系统,它实现了高效的消息通信和异步处理。本文主要介绍其基于Docker-Compose的部署安装和一些使用的经验。特点成熟,稳定消息持久化灵活的消息路由高性能,高可用性,可扩展性高支持插件系统:RabbitMQ具有丰富的插件系统,可以通......
  • 2、K8S集群监控
    目录一、KubeStateMetrics简介二、集群组件2.0、部署KubeStateMetrics2.0.1部署RBAC2.0.2部署deploy、svc2.0.3确认验证null2.1、集群组件监控2.1.1、kube-apiserver更新配置导入grafana模板2.1.2、controller-manager2.1.3、scheduler2.1.4、kube-state-metrics2.1.5、coredn......
  • 生产环境CDH集群主机加内存导致系统无法启动,重装系统后CDH数据修复的过程
    原因:因为主机扩容内存重启以后发现有七台服务器无法进入系统,重启之前Centos7的启动项被修改过导致无法重启,只能重新安装操作系统,但是HDFS的数据是保存到data盘中.系统OS:CentOSLinuxrelease7.6.1810(Core)CDH版本:6.2.1重新安装操作系统的服务器10.170.12.43db-p......
  • [AI]在家中使用日常设备运行您自己的 AI 集群.适用于移动、桌面和服务器的分布式 LLM
    创作不易只因热爱!!热衷分享,一起成长!“你的鼓励就是我努力付出的动力”AI发展不可谓不快,从ollama个人电脑CPU运行到现在,日常设备AI集群.下面对比一下,两款开源AI大模型的分布式推理应用,exo和cake.1.AI集群推理应用exo和cake的简单对比......
  • flutter中使用rabbitmq
    依赖dart_amqp:^0.3.1#rabbitMq接收发送消息工具封装import'package:dart_amqp/dart_amqp.dart';///封装RabbitMQ的服务类classRabbitMQService{lateConnectionSettings_settings;//RabbitMQ连接设置lateClient_client;//RabbitMQ客户端late......
  • 分布式集群与多线程高并发
     后台数据的处理语言有很多,Java是对前端采集的数据的一种比较常见的开发语言。互联网移动客户端的用户量特别大,大量的数据处理需求应运而生。可移动嵌入式设备的表现形式很多,如PC端,手机移动端,智能手表,Google眼镜等。Server2client的互联网开发模式比较常见,有一种新的数......