参考:
http://my.oschina.net/ahanflw/blog/286206 某人的KeepAlived安装步骤
http://my.oschina.net/9981/blog/473209
http://my.oschina.net/ahanflw/blog/286206
下面是KeepAlived的配置模板,以后直接用就行了。
! Configuration File for keepalived
vrrp_script chk_haproxy {
script "/etc/keepalived/check_haproxy.sh" //这里是具体的执行的脚本,包括时间参数
interval 2
weight 2
}
global_defs {
notification_email {
837500869@qq.com }
notification_email_from
smtp_server smtp.qq.com
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state MASTER
nopreempt 这个只要MASTER设置就可以了,SLAVE不用设置,已经亲自测试过。
interface eth0
virtual_router_id 51
mcast_src_ip 这里填上与虚拟IP同一个网段的本机IP!!!
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
chk_haproxy //这里写上要执行的脚本ID
}
virtual_ipaddress {
192.168.200.16
192.168.200.17
192.168.200.18
}
}
#virtual_server 192.168.200.100 443 {
#delay_loop 6
#lb_algo rr
#lb_kind NAT
#nat_mask 255.255.255.0
#persistence_timeout 50
#protocol TCP
#real_server 192.168.201.100 443 {
# weight 1
# SSL_GET {
#url {
# path /
#digest ff20ad2481f97b1754ef3e12ecd3a9cc
# }
#url {
#path /mrtg/
#digest 9b3a0c85a887a256d6939da88aabd8cd
#}
#connect_timeout 3
#nb_get_retry 3
#delay_before_retry 3
#}
#}
#}
#virtual_server 10.10.10.2 1358 {
#delay_loop 6
#lb_algo rr
#lb_kind NAT
#persistence_timeout 50
#protocol TCP
#sorry_server 192.168.200.200 1358
#
#real_server 192.168.200.2 1358 {
#weight 1
# HTTP_GET {
# url {
# path /testurl/test.jsp
#digest 640205b7b0fc66c1ea91c463fac6334d
#}
#url {
# path /testurl2/test.jsp
# digest 640205b7b0fc66c1ea91c463fac6334d
# }
# url {
# path /testurl3/test.jsp
# digest 640205b7b0fc66c1ea91c463fac6334d
# }
# connect_timeout 3
# nb_get_retry 3
# delay_before_retry 3
#}
#}
#real_server 192.168.200.3 1358 {
# weight 1
#HTTP_GET {
#url {
# path /testurl/test.jsp
# digest 640205b7b0fc66c1ea91c463fac6334c
# }
# url {
# path /testurl2/test.jsp
# digest 640205b7b0fc66c1ea91c463fac6334c
#}
# connect_timeout 3
# nb_get_retry 3
# delay_before_retry 3
#}
#}
#}
#virtual_server 10.10.10.3 1358 {
#delay_loop 3
# lb_algo rr
#lb_kind NAT
#nat_mask 255.255.255.0
# persistence_timeout 50
#protocol TCP
#real_server 192.168.200.4 1358 {
# weight 1
# HTTP_GET {
# url {
# path /testurl/test.jsp
# digest 640205b7b0fc66c1ea91c463fac6334d
# }
# url {
# path /testurl2/test.jsp
# digest 640205b7b0fc66c1ea91c463fac6334d
# }
# url {
# path /testurl3/test.jsp
# digest 640205b7b0fc66c1ea91c463fac6334d
# }
# connect_timeout 3
# nb_get_retry 3
# delay_before_retry 3
# }
# }
#real_server 192.168.200.5 1358 {
# weight 1
# HTTP_GET {
# url {
# path /testurl/test.jsp
# digest 640205b7b0fc66c1ea91c463fac6334d
# }
# url {
# path /testurl2/test.jsp
# digest 640205b7b0fc66c1ea91c463fac6334d
# }
# url {
# path /testurl3/test.jsp
# digest 640205b7b0fc66c1ea91c463fac6334d
# }
# connect_timeout 3
# nb_get_retry 3
# delay_before_retry 3
# }
# }
#}
真正执行的脚本check_haproxy.sh定义为:需要修改的地方请自行修改。
#!/bin/bash
status=$(ps aux|grep haproxy | grep -v grep | grep -v bash | wc -l)
echo "Start Status:" $status
if [ $status = "0" ] ; then
echo "haproxy stoped.starting haproxy ..."
cd /root/haproxy-1.4.23/haproxy-1.4.23/haproxy-1.4.23
./haproxy -f ./examples/haproxy.cfg
sleep 3
status=$(ps aux|grep haproxy | grep -v grep | grep -v bash | wc -l)
#status="1"
if [ $status = "0" ] ; then
pkill keepalived
echo "haproxy start failed. so keepalived stoped.";
else
echo "haproxy started.";
fi
fi
echo "End Status:" $status
启动KeepAlived的命令:
./bin/keepalived -f /root/keepalived-1.2
.
8
/keepalived/etc/keepalived/keepalived.conf -P -l 如果想前台启动则加上-n
问题:
1 如何手动删除虚拟IP?
启动两个KeepAlived前,务必清除虚拟IP
ip addr del 这里填写虚拟IP dev eth0
2