本文详细介绍了如何在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