Keepalived做HA

来自Linux78|wiki

用Keepalived做HA是如此的简单,我们所有的精力都在配置Keepalived的VRRP子 进程上,而完全可以不管LVS的配置。这节我们假设给两台运行HAProxy的 机器做HA,提供VIP。架构如下:

Keepalived-2.jpg

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所以,实际要配置为:

Keepalived-3.jpg

不抢占

当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,

Keepalived-4.jpg

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 
     }
  }
}