前言
本节内容是关于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安装包到服务器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高可用集群搭建的教程到这里就结束了,我们下期见。。。。。。