参考:
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 { [email protected] [email protected] [email protected] } notification_email_from [email protected] smtp_server 192.168.200.1 smtp_connect_timeout 30 router_id LVS_DEVEL } vrrp_instance VI_1 { state MASTER 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
时间: 2024-12-05 20:49:44