李斯特 发表于 2015-9-4 07:46:44

Keepalived + haproxy双机高可用方案

  上一篇文章已经讲到了keepalived实现双机热备,且遗留了一个问题

  master的网络不通的时候,可以立即切换到slave,但是如果只是master上的应用出现问题的时候,是不会
  主动切换的。
  上篇文章地址:Keepalived 实现双机热备(一)
  那么这篇文章主要讨论解决这个问题
  我的方案是:
  写一个脚本,用于监控haproxy,当然,keepalive支持脚本扩展
  当master haproxy出现问题时,重启haproxy,如果重启不成功,则停掉master上面的keepalived
  也可以不重启haproxy,直接停掉keepalived,让backup服务器接管master
  这样haproxy出现故障,网站依然可用
  系统分布如下:
  ha主机 192.168.1.227:80
  ha备机 192.168.1.246
  keepalived 主机 192.168.1.227
  keepalived备机 192.168.1.246
  web1 http://192.168.1.226:8081/login
  web2 http://192.168.1.246:8888/login
  虚拟ip 192.168.1.99
  keepalive master 和 backup 配置
  vi /etc/keepalived/keepalived.conf  增加红色部分

! Configuration File for keepalived
#定义检查脚本
vrrp_script check_haproxy {
script "/etc/keepalived/check_haproxy.sh"
interval 2
weight 2
}
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 99
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.99
}
#执行检查脚本
track_script {
check_haproxy
}
}  编辑检查haproxy脚本
  /etc/keepalived/check_haproxy.sh


#!/bin/bash
A=`ps -C haproxy --no-header |wc -l`
if [ $A -eq 0 ];then
/etc/init.d/keepalived stop
fi  增加执行权限,注意别忘记了
  chmod 777 check_haproxy.sh
  重启keepalived即可
页: [1]
查看完整版本: Keepalived + haproxy双机高可用方案