使用Keepalived实现Haproxy主备切换高可用

     使用Keepalived实现Haproxy主备切换高可用

1.案例概述
Keepalived可提供虚拟路由功能以及health-check功能,实现双机热备份高可用功能,来避免Haproxy单点故障问题,一台为主的Haproxy服务器,一台为备份Haproxy服务器,对为表现为一个虚拟IP,当主服务器出现故障时,备份服务就会接管虚拟IP,继续提供服务,因为keepalived没有配置真实服务器器所以不能做到IP漂移所以我们需要编写一个脚本让keepalived实现IP漂移并监控haproxy的状态,来实现haproxy服务器的高可用性能。

在这里插入图片描述
2.案例环境
Haproxy keepalived 主:172.16.16.100
Haproxy keepalived 备:172.16.16.200
VIP :172.16.16.172
添加一台haproxy服务器作为主服务器,再添加一台haproxy服务器作副服务器配置和主haproxy服务器基本相同。

主服务器配置:
先下载haproxy和keepalived源
[root@kgc3 ~]# yum install -y keepalived haproxy
(1)修改haproxy配置文件添加后台真实web服务器地址:
在这里插入图片描述

(1.1)修改haproxy的keepalived配置文件 /etc/keepalived/keepalived.conf

global_defs {
router_id LVS_HA_TEST_R1

}
global_defs {
router_id LVS_HA_TEST_R1

}
vrrp_script check_haproxy { //定义Haproxy的检测脚本路径
script “/etc/keepalived/check_haproxy.sh”
interval 2

weight 2

}
vrrp_instance VI_1 {
state MASTER //为主服务器
interface ens33
virtual_router_id 1
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress { //绑定VIP地址
172.16.16.172
}
track_script {
check_haproxy //追踪脚本状态
}
}

编写监控脚本
root@kgc3 ~]# vim /etc/keepalived/check_haproxy.sh
加入下面内容
#!/bin/bash
#HAPROXY down
A=ps -C haproxy --no-header | wc -l
if [ $A -eq 0 ]
then
systemctl start haproxy
if [ ps -C haproxy --no-header | wc -l -eq 0 ]
then
killall -9 haproxy
echo “HAPROXY down” | mail -s “haproxy” 1665547553@qq.com
sleep 3600
fi

fi
添加执行权限:
[root@kgc3 ~]# chmod +x /etc/keepalived/check_haproxy.sh

重启haproxy主服务器上的keepalived服务和haproxy服务:
[root@kgc3 ~]# systemctl restart keepalived
[root@kgc3 ~]# systemctl restart haproxy
主服务器配置完成

(2)配置备份机haproxy服务器也可以直接从主服务器上拷贝过来修改一下即可
副服务器配置:
也需要先下载haproxy和keepalived源
[root@kgc3 ~]# yum install -y keepalived haproxy
(2.1)配置备份机的haproxy配置文件:
在这里插入图片描述

然后重主服务器上拷贝配置文件过去:
[root@kgc3 ~]#
scp /etc/keepalived/keepalived.conf root@172.16.16.200:/etc/keepalived/keepalived.conf
root@172.16.16.200’s password:
输入密码即可:

备份haproxy服务器上的keepalived配置与主haproxy服务器类似,只需要将配置文件Keepalived.conf中的 MASTER改为BACKUP状态,priority值修改小即可,
配置如下:在这里插入图片描述

[root@kgcc keepalived]# vim /etc/keepalived/keepalived.conf

global_defs {
router_id LVS_HA_TEST_R1

}
vrrp_script check_haproxy {
script “/etc/keepalived/check_haproxy.sh”
interval 2

weight 2

}
vrrp_instance VI_1 {
state BACKUP
interface ens33
virtual_router_id 1
priority 80
advert_int 1
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
172.16.16.172
}
track_script {
check_haproxy
}

添加备份haproxy服务器的检测脚本如下:
[root@kgcc keepalived]# vim /etc/keepalived/check_haproxy.sh
#!/bin/bash
#HAPROXY down
A=ps -C haproxy --no-header | wc -l
if [ $A -eq 0 ]
then
systemctl start haproxy
if [ ps -C haproxy --no-header | wc -l -eq 0 ]
then
killall -9 haproxy
echo “HAPROXY down” | mail -s “haproxy” 1665547553@qq.com
sleep 3600
fi

fi

添加执行权限:
[root@kgcc ~]# chmod +x /etc/keepalived/check_haproxy.sh
重启haproxy主服务器上的keepalived服务和haproxy服务:
[root@kgcc ~]# systemctl restart keepalived
[root@kgcc ~]# systemctl restart haproxy
(1)浏览器验证,如果浏览网页是遇到这样的问题:
在这里插入图片描述

需要去修改主副haproxy的配置文件即可如下:
在这里插入图片描述

然后再访问:
在这里插入图片描述

刷新一下:
在这里插入图片描述

说明负载均衡配置成功。
下面验证主备切换高可用:
先查看主haproxy服务器上的VIP地址:
在这里插入图片描述

因为我们编写的脚本是应用自愈能力的所有我们去改下配置文件的名字验证:
在这里插入图片描述

可以看到监控脚本生效了,再去查看主haproxy服务的VIP地址
在这里插入图片描述

再去查看副haproxy上的VIP地址:
在这里插入图片描述

可以看到已经切换成功了。

再去把主haproxy的服务器启动看是否能抢占回来。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值