文章目录
通过对keepalived的学习,我们知道之前的学习LVS+keepalived可以实现一个四层的负载均衡+高可用,但是不能实现七层上的调度。这里我们可以用keepalived+haproxy实现一个七层的负载均衡+高可用 。
实验思路:使用haproxy作为调度节点,使用keepoalived的高可用,最后实现七层(应用层)的调度。
实验环境:
后端服务器:server3[172.25.5.3]、server4[172.25.5.4]
haproxy主机: server1[172.25.5.1]、server2[172.25.5.2]
首先在server1、server2上安装keepalived
注意:需要提前配置好高可用的yum仓库
yum install keepalived -y
这里将server1作为mastar,server2作为backup
对server1上的keepalived进行配置(须删除掉调度的部分,只留下高可用部分即可,在配置时,须使用外部脚本/opt/haproxy.sh):
[root@server1 ~]# cat /opt/check_haproxy.sh
#!/bin/bash
systemctl status haproxy &> /dev/null || systemctl restart haproxy &> /dev/null
killall -0 haproxy
if [ $? -ne 0 ];then
systemctl stop keepalived
fi
脚本解释:首先使用 systemctl status haproxy
查看haproxy服务的状态,如果服务状态正常(在运行中)不执行任何操作,如果服务没有正常运行,执行systemctl restar haproxy
来启动haproxy服务。使用[ $? -ne 0 ]
通过对执行结果的判断,如果执行成功,不做操作;如果执行失败,关闭keepalived,此时vip资源会迁移到备机(server2)。
keepalived配置文件:
! Configuration File for keepalived
global_defs {
notification_email {
root@localhost
}
notification_email_from keepalived
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
#vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
##定义外部脚本
vrrp_script check_haproxy {
script "/opt/check_haproxy.sh"
interval 2
weight 0
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 56
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
check_haproxy
}
virtual_ipaddress {
172.25.5.100
}
}
此时keepalived主机就配置完成。
同样,在server2上安装keepalived,并且将刚才的外部脚本复制到/opt/ 下。
修改server2上的keepalived配置文件:
! Configuration File for keepalived
global_defs {
notification_email {
root@localhost
}
notification_email_from keepalived
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
#vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
##定义外部脚本
vrrp_script check_haproxy {
script "/opt/check_haproxy.sh"
interval 2
weight 0
}
vrrp_instance VI_1 {
state BACKUP //修改状态为backup
interface eth0
virtual_router_id 56
priority 50 advert_int 1 //优先级修改为小于master的优先级
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
check_haproxy
}
virtual_ipaddress {
172.25.5.100
}
}
此时,启动server1、server2上的keepalived和haproxy
七层副在均衡+高可用就完成!