系统环境: 操作系统:Centos7.2 依赖软件:net-tools 网络环境: Keepalived Master:192.168.5.251 Keepalived Backup:192.168.5.252 VIP: 192.168.5.100 RIP: 192.168.5.254
Keepalived Master ! Configuration File for keepalived 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_script chk_mantaince_down { script "[[ -f /etc/keepalived/down ]] && exit 1 || exit 0" interval 1 weight 2 } vrrp_instance VI_1 { state MASTER interface eno16777736 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { } virtual_ipaddress { 192.168.5.100/24 label eno16777736:0 } track_script { chk_mantaince_down } notify_master "/etc/keepalived/notify.sh master" notify_backup "/etc/keepalived/notify.sh master" notify_fault "/etc/keepalived/notify.sh master" } virtual_server 192.168.5.100 80 { delay_loop 6 lb_algo rr lb_kind DR nat_mask 255.255.255.255 persistence_timeout 50 protocol TCP # real_server 192.168.5.254 80 { weight 1 HTTP_GET { url { path / status_code 200 } } } }
Keepalived Backup ! Configuration File for keepalived 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_script chk_mantaince_down { script "[[ -f /etc/keepalived/down ]] && exit 1 || exit 0" interval 1 weight 2 } vrrp_instance VI_1 { state BACKUP interface eno16777736 virtual_router_id 51 priority 99 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { } virtual_ipaddress { 192.168.5.100/24 label eno16777736:0 } track_script { chk_mantaince_down } notify_master "/etc/keepalived/notify.sh master" notify_backup "/etc/keepalived/notify.sh master" notify_fault "/etc/keepalived/notify.sh master" } virtual_server 192.168.5.100 80 { delay_loop 6 lb_algo rr lb_kind DR nat_mask 255.255.255.255 persistence_timeout 50 protocol TCP # real_server 192.168.5.254 80 { weight 1 HTTP_GET { url { path / status_code 200 } } } }
Real Script #!/bin/bash #!/bin/bash #chkconfig: 2345 79 20 #description:LVS realserver SNS_VIP=192.168.5.100 case "$1" in start) /sbin/ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP /sbin/route add -host $SNS_VIP dev lo:0 echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce sysctl -p >/dev/null 2>&1 echo "LVS RealServer Start OK" ;; stop) ifconfig lo:0 down route del $SNS_VIP >/dev/null 2>&1 echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce echo "LVS RealServer Stoped" ;; *) echo "Usage: $0 {start|stop}" exit 1 esac notify Scrip # !/bin/bash # Author: MageEdu <linuxedu@foxmail.com> # description: An example of notify script # vip=172.16.100.1 contact='root@localhost' notify() { mailsubject="`hostname` to be $1: $vip floating" mailbody="`date '+%F %H:%M:%S'`: vrrp transition, `hostname` changed to be $1" echo $mailbody | mailx -s "$mailsubject" $contact } case "$1" in master) notify master exit 0 ;; backup) notify backup exit 0 ;; fault) notify fault exit 0 ;; *) echo 'Usage: `basename $0` {master|backup|fault}' exit 1 ;; esac (责任编辑:IT) |