WEB运维手册

双机热备

双机热备之Keepalived

Keepalived的作用是检测服务器状态,如果LVS1挂了之后会自动切换到LVS2。后端的WEB服务器如果有故障,将被移除集群,直到恢复之后Keepalived将自动把WEB服务器加入集群中。

不过这样有点浪费,如果LVS1正常的话,LVS2将处于空闲状态。我们可以使用双主双备,使用两个虚拟IP。

#

安装

[root@localhost ~]# yum install keepalived

配置文件/etc/keepalived/keepalived.conf,以下是一简单示例。

vrrp_instance vip1 {
    state MASTER
    interface eth0
    virtual_router_id 51 #vrrp组id
    priority 99 #对应备用节点值应该比此值小
    advert_int 1 #心跳间隔s
authentication {
    auth_type PASS #验证方式
    auth_pass 1111 #验证密码
}
virtual_ipaddress {
    192.168.1.100 #虚拟IP地址
}
}

在Keepalived调用LVS

virtual_server 192.168.0.200 80 {
     delay_loop 6 #每隔6秒查询realserver状态
     lb_algo rr   #算法
     lb_kind DR   #运行模式
     # persistence_timeout 5 #5s内连接同一web
     protocol TCP

     real_server 192.168.1.104 80 {
         weight 3 #权重
         TCP_CHECK {
           connect_timeout 3 #连接超时时间
           nb_get_retry 3    #失败重试次数
           delay_before_retry 3 #失败重试时间
           connect_port 80
         }
     }

     real_server 192.168.0.105 80 {
         weight 3
         TCP_CHECK {
           connect_timeout 3
           nb_get_retry 3
           delay_before_retry 3
           connect_port 80
         }
     }

}

Keepalived健康检查

HTTP_GET {
    url {
      path /testurl/index.html
      digest 640205b7b0fc66c1ea91c463fac6334d #md5值
      #status_code 200 http返回码
    }

以上md5生成方法如下

genhash -s 192.168.1.104 -p 80 -u /index.html

你也可以用自己的脚本进行检查

MISC_CHECK {
    misc_path "/data/web_check.sh"
    misc_timeout 30
    misc_dynamic #失败后权重自动减去返回码
}