|
keepalived非抢占模式,大致有三个地方需要配置
1,state BACKUP
2,主备的priority 的值不同
3,nopreempt
我的配置,分别在两台机器上配置
主机1:172.26.0.66
主机2:172.26.0.111
VIP:172.26.0.109
主机1的keepalived.conf配置
! 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_skip_check_adv_addr #vrrp_strict vrrp_garp_interval 0 vrrp_gna_interval 0 }
#vrrp_script check_run { # script "/usr/cloudland/keepalived/keepalived_check.sh" # script "/usr/cloudland/keepalived/sync_data.sh" # interval 3 #}
vrrp_instance VI_1 { state BACKUP interface ens192 virtual_router_id 109 priority 100 nopreempt advert_int 1 authentication { auth_type PASS auth_pass 1111 }
virtual_ipaddress { 172.26.0.109/24 dev ens192 }
#track_script { # check_run # } notify_master "/usr/cloudland/keepalived/update_companyId.sh" notify_backup "/usr/cloudland/keepalived/master_backup.sh backup" }
virtual_server 172.26.0.109 3306 { delay_loop 6 lb_algo wrr lb_kind Dr persistence_timeout 60 protocol UDP
real_server 172.26.0.66 3306 { weight 3 #notify_down /root/shutdown.sh UDP_CHECK { connect_timeout 10 nb_get_retry 3 delay_before_retry 3 connect_port 3306 } } }
主机2的keepalived配置
! 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_skip_check_adv_addr #vrrp_strict vrrp_garp_interval 0 vrrp_gna_interval 0 }
#vrrp_script check_run { # script "/usr/cloudland/keepalived/keepalived_check.sh" # script "/usr/cloudland/keepalived/sync_data.sh" # interval 3 #}
vrrp_instance VI_1 { state BACKUP interface ens192 virtual_router_id 109 priority 90 nopreempt advert_int 1 authentication { auth_type PASS auth_pass 1111 }
virtual_ipaddress { 172.26.0.109/24 dev ens192 }
#track_script { # check_run # } notify_master "/usr/cloudland/keepalived/update_companyId.sh" notify_backup "/usr/cloudland/keepalived/master_backup.sh backup" }
virtual_server 172.26.0.109 3306 { delay_loop 6 lb_algo wrr lb_kind Dr persistence_timeout 60 protocol TCP
real_server 172.26.0.111 3306 { weight 3 #notify_down /root/shutdown.sh TCP_CHECK { bindto 172.26.0.66 connect_timeout 10 nb_get_retry 3 delay_before_retry 3 connect_port 3306 } } }
配置好之后,实际测试的时候发现,通过断网线和kill掉keepalived服务,都可以实现切换,但是通过systemctl stop network就无法实现vip漂移
通过systemctl stop network停用网络服务是不能转移的,尽管这时候你ping不通,你会发现在keepalived的服务还在,拔掉网线或者systemctl stop keepalived 都可以转移,但是不能通过system stop network使VIP漂移,具体原理,应该是systemctl stop network只是停用了上层的网络服务吧,但是底层物理连接 还可以连接吧,而vrrp协议正是基于这种物理的真实连接,所以keepalived应该不能监测网卡故障,你可以写一个监控脚本,一定时间内,ping不通对端的IP,就 把自己的keepalived杀死 |