Keepalived做HA
用Keepalived做HA是如此的简单,我们所有的精力都在配置Keepalived的VRRP子 进程上,而完全可以不管LVS的配置。这节我们假设给两台运行HAProxy的 机器做HA,提供VIP。架构如下:
HAProxy和web服务器配置
这部分不属于本文讨论范围内,我们只关注在haprox y的机器上 的Keepalived相关配置。
Keepalived 配置
假设haporxy和后端的web服务器都准备好了,现在就可以开始配 置Keepalived了。这种情况下,因为我们只用到Keepalived的HA,即做virtual router的功能,所以只需要完成第二章里面描述的全局和VRRP配置即可。 配置前需要准备的信息为:
1. VRID—我们使用默认的51
2. VIP—上图的 192.168.1.1, VIP也即Keepalived里面的vritual address的ip地 址
3. LB的IP—这里就是两台haproxy的地址(192.168.1.3和1.4,并假设前 者为 MASTER)
4. 优先级-priority,在多个BACKUP竞选MASTER的时候,优先级高 会获选。这里假设192.168.1.3的优先级为150,另外一台为100所以,实际要配置为:
不抢占
当MASTER出现问题后,BACKUP会竞选为新的MASTER,那么当 之前的MASTER重新0NLINE后,是继续成为MASTER还是变成BACKUP呢? 默认情况下,如果没设置不抢占,那么之前的MASTER起来后会继续抢占 成为MASTER,也就是说,整个过程需要发生2次切换:
1. MASTER->BACKUP
2. BACKUP->MASTER
这样对业务频繁的切换是不能容忍的,因此我们希望MASTER起来后, 成为BACKUP !所以要设置不抢占。Keepalived里面提供了nopreempt这 个配置,但是这个配置只能用在state为BACKUP的机器上,但是我们 明明希望的是MASTER不进行抢占,没办法,MASTER的state也得设置 成BACKUP。也就是说192.168.1.3和 192.168.1.4都要将state设置为BACKUP !
那么到底谁是MASTER?抢占吧,通过priority,所以我们在两台BACKUP上 面通过设置不同的priority来让他们一起来就抢占,高priority的192.168.1.3成 为最初的MASTER。
MASTER的配置
MASTER的配置一192.168.1.3的配置
global_defs {
notification_email {
finalbsd@gmail.com
}
notification_email_from finalbsd@gmail.com smtp_server 127.0.0.1 smtp_connect_timeout 30
router_id haproxy-ha
}
vrrp_sync_group VG1 {
group {
VI_1
}
}
vrrp_instance VI_1 {
state BACKUP
smtp_alert
notify_fault "/root/script/notify_mail.sh fault" notify_master "/root/script/notify_mail.sh master"
nopreempt
interface eth1
track_interface {
eth0
eth1
}
virtual_router_id 51
priority 150
advert_int 1
authentication {
auth_type PASS
auth_pass fsaf..7&f
}
virtual_ipaddress {
192.168.1.1/24 dev eth1 scope global
}
}
BACKUP的配置
BACKUP的配置一192.168.1.4的配置
BACKUP的配置和MASTER基本一样,但有2个不同点:
1. priority 设置为 100
2.不设置nopreempt
启动服务
分别在两台上执行service keepalived start启动服务。
3.2 用 Keepalived 配置 LVS
我们假设下面的情形:
4台web服务器通过一对LVS进行调度,LVS转发模式为NAT。一对LVS通 过 Keepalived 做HA,
virtual server就是VIP+VPORT,VIP需要通过VRRPD配置段进行配 置。
real server这里LVS调度的web服务器的IP地址,即图中的192.168.11-14
lb_algo调度算法,这里使用wlc
lb_kind包转发模式,这里使用NAT
weight权重,默认这里都设置为3
MASTER 和 BACKUP 配置
Keepalived的全局和vrrp配置段和前一节3.1.2完全一样,这里我们只需 要添加virtuaLserver配置段:
virtual_server 192.168.1.1 80 {
delay_loop 3
lb_algo wlc
lb_kind DR
persistence_timeout 1200
protocol TCP
ha_suspend
real_server 192.168.1.11 80 {
weight 3
TCP_CHECK {
connect_timeout 3
}
}
real_server 192.168.1.12 80 {
weight 3
TCP_CHECK {
connect_timeout 3
}
}
}