RabbitMQ HAProxy+KeepAlived搭建高可用集群
Hroxy+KeepAlived搭建高可用集群
为了保障集群的高可用,我们可以在集群的基础之上,在添加了2台HAProxy 用于数据的负载均衡和分发。
而为了确保HAProxy负载均衡服务器的高可用性,我们在这HAProxy服务器上在安装KeepAlived 做心跳检测和虚拟IP,其目的是用于检测HAPorxy服务是否正常,确保2台负载均衡服务器的高可用性。
KeepAlived会为2台负载均衡器创建一个VIP(虚拟IP),而我们业务服务器只需要连接到这个VIP上就可以进行消息的发送和消费。
RabbitMQ集群+HAproxy+Keepalived视频教程: https://video.javaxing.com/RabbitMQ%20HAProxy%2BKeepalived%E6%90%AD%E5%BB%BA%E9%AB%98%E5%8F%AF%E7%94%A8%E9%9B%86%E7%BE%A4.mp4
1)搭建HAProxy
官网HAProxy 官方下载地址为: https://www.haproxy.org/#down
本文章用到的版本: https://files.javaxing.com/haproxy-ss-LATEST.tar.gz
1.解压、编译、设置环境变量
1 |
下载源码 |
2.设置环境变量
1 |
设置环境变量 |
配置hosts
在HAProxy配置中,我们会以名称的形式指定rabbitMQ节点,所以我们还需要提前在hosts文件中映射好关系。
1 |
[root@s4 haproxy-ss-20230329]# vi /etc/hosts |
3.负载均衡配置
新建配置文件
haproxy.cfg
,位置为:/etc/haproxy/haproxy.cfg,文件内容如下:
1 |
global |
集群配置:server node1 rabbit1:5672 check inter 5000 rise 2 fall 3 weight 1
解释:HAProxy node1 节点每隔 5 秒进行一次健康检查,如果连续两次的检查结果都是正常,则认为该节点可用,此时可以将客户端的请求轮询到该节点上;如果连续 3 次的检查结果都不正常,则认为该节点不可用。weight 用于指定节点在轮询过程中的权重,这里我们默认都为1.
4.启动服务
1 |
haproxy -f /etc/haproxy/haproxy.cfg |
启动成功后,我们可通过IP:8100 (上面的配置文件里面开放的端口号)来查看监控页面:
http://172.17.1.68:8100/stats http://172.17.1.173:8100/stats
节点绿色代表健康,红色代表出问题了,能成功出现该监控页面代表HAProxy 搭建成功,并已经对RabbitMQ进行监控。
2)KeepAlived 环境搭建
接下来我们搭建KeepAlived 来检测HAProxy服务器,当HAProxy服务器宕机就进行故障转移,确保HAProxy的可用性。
1.安装Keepalived
1 |
[root@s4 ~]# yum install -y keepalived |
2.配置 主节点 keepalived.conf
1 |
[root@s6 keepalived]# vi /etc/keepalived/keepalived.conf |
1 |
global_defs { |
1、主KeepAlived服务器要设置成MASTER,而从KeepAlived服务器设置成BACKUP
2、为2台服务器设置一个虚拟IP地址,该IP地址只需要和服务器在同一个网卡就可以了,用于对外提供服务
3、主节点的priority一定要比从节点高
3.配置 从节点 keepalived.conf
1 |
[root@s6 keepalived]# vi /etc/keepalived/keepalived.conf |
keepalived.conf:
1 |
global_defs { |
4.创建监控HAProxy服务脚本
1 |
while true |
每3秒就监控HAProxy服务,进入无限循环,如果服务关闭了就尝试启动服务,如果3秒后还启动不起来,就关闭本机keepalived服务,那么VIP就会切换到另外一台keepalived服务器上。
为监控脚本赋予执行权限
1 |
chmod +x /etc/keepalived/haproxy_check.sh |
5.启动服务
1 |
[root@s4 ~]# systemctl start keepalived |
6.验证keepalived状态
我们在主keepalived服务上通过 ip addr,可以查看到我们的网卡上有一个 虚拟IP(VIP,172.17.1.254)
1 |
[root@s4 ~]# systemctl status keepalived |
7.验证故障转移
我们理想中的是,当我们其中一台Master HAproxy服务器挂掉后,会自动关闭keepalived服务,并将VIP漂移到 Backup HAProxy服务上。
1 |
[root@s4 ~]# systemctl stop keepalived |
当我们关闭后,我们查看一下keepalived状态,发现已经变成了未激活状态,并且VIP 虚拟IP已经没了,漂移给了BACKUP服务器。
查看BACKUP服务器
8.发送消息到VIP
1 |
|