RabbitMQ实战——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

posted @ 2024-07-29 15:20  技术颜良  阅读(626)  评论(0)    收藏  举报