实验环境:html
两台主机均运行Apache提供Web服务;VIP为192.168.0.5。shell
首先确认两台主机的Apache服务是否正常:操作系统
访问http://192.168.0.88code
访问http://192.168.0.110router
配置两台主机上的Keepalived,配置文件以下:server
! Configuration File for keepalived global_defs { notification_email { 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 check_httpd { script "/usr/bin/killall -0 httpd" interval 2 fall 2 rise 2 } vrrp_instance HTTPD { state MASTER interface ens160 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass aaaa } virtual_ipaddress { 192.168.0.5/24 } track_script { check_httpd } }
这里没有设置不抢占模式,且没有配置邮件发送功能。htm
主机B的配置文件大部分同主机A,仅有其中的state和priority与主机A不一样blog
! Configuration File for keepalived global_defs { notification_email { 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 check_httpd { script "/usr/bin/killall -0 httpd" interval 2 fall 2 rise 2 } vrrp_instance HTTPD { state BACKUP interface ens160 virtual_router_id 51 priority 80 advert_int 1 authentication { auth_type PASS auth_pass aaaa } virtual_ipaddress { 192.168.0.5/24 } track_script { check_httpd } }
配置完成Keepalived后启动Keepalived,在主机A上经过ip addr命令能够查看到VIP已经绑定到主机A上:ip
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 00:0c:29:c0:e8:97 brd ff:ff:ff:ff:ff:ff inet 192.168.0.88/24 brd 192.168.0.255 scope global noprefixroute dynamic ens160 valid_lft 54444sec preferred_lft 54444sec inet 192.168.0.5/24 scope global secondary ens160 valid_lft forever preferred_lft forever inet6 fe80::ec4e:853a:570d:bf79/64 scope link noprefixroute valid_lft forever preferred_lft forever
此时访问http://192.168.0.5get
实际访问的是主机A提供的Web服务。
中止主机A的Apache服务,查看是否发生主备切换:
主机A上执行ip addr命令
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 00:0c:29:c0:e8:97 brd ff:ff:ff:ff:ff:ff inet 192.168.0.88/24 brd 192.168.0.255 scope global noprefixroute dynamic ens160 valid_lft 54183sec preferred_lft 54183sec inet6 fe80::ec4e:853a:570d:bf79/64 scope link noprefixroute valid_lft forever preferred_lft forever
能够看到VIP已经在主机A上解绑。在主机B上执行ip addr命令
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 00:0c:29:80:6a:31 brd ff:ff:ff:ff:ff:ff inet 192.168.0.110/24 brd 192.168.0.255 scope global noprefixroute dynamic ens160 valid_lft 76521sec preferred_lft 76521sec inet 192.168.0.5/24 scope global secondary ens160 valid_lft forever preferred_lft forever inet6 fe80::91ad:f9d8:5386:ba92/64 scope link noprefixroute valid_lft forever preferred_lft forever
能够看到VIP已经绑定到了主机B上,此时访问http://192.168.0.5
已是主机B在提供Web服务了。
由于这里没有配置不抢占模式,因此此时恢复主机A的Apache服务,查看是否会再次进行主备切换:
在主机A上执行ip addr命令
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 00:0c:29:c0:e8:97 brd ff:ff:ff:ff:ff:ff inet 192.168.0.88/24 brd 192.168.0.255 scope global noprefixroute dynamic ens160 valid_lft 53899sec preferred_lft 53899sec inet 192.168.0.5/24 scope global secondary ens160 valid_lft forever preferred_lft forever inet6 fe80::ec4e:853a:570d:bf79/64 scope link noprefixroute valid_lft forever preferred_lft forever
此时VIP又从新绑定到主机A上了,访问http://192.168.0.5
不抢占模式仅在优先级高的主机上进行设置,因此主机B上的Keepalived不用进行配置。修改主机A的Keepalived配置文件(仅展现主要部分):
vrrp_instance HTTPD { state BACKUP interface ens160 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass aaaa } virtual_ipaddress { 192.168.0.5/24 } track_script { check_httpd } nopreempt
此时中止主机A上的Apache:
主机A的IP信息
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 00:0c:29:c0:e8:97 brd ff:ff:ff:ff:ff:ff inet 192.168.0.88/24 brd 192.168.0.255 scope global noprefixroute dynamic ens160 valid_lft 53418sec preferred_lft 53418sec inet6 fe80::ec4e:853a:570d:bf79/64 scope link noprefixroute valid_lft forever preferred_lft forever
主机B的IP信息
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 00:0c:29:80:6a:31 brd ff:ff:ff:ff:ff:ff inet 192.168.0.110/24 brd 192.168.0.255 scope global noprefixroute dynamic ens160 valid_lft 75784sec preferred_lft 75784sec inet 192.168.0.5/24 scope global secondary ens160 valid_lft forever preferred_lft forever inet6 fe80::91ad:f9d8:5386:ba92/64 scope link noprefixroute valid_lft forever preferred_lft forever
访问http://192.168.0.5
从以上信息能够看出,发生了一次主备切换。此时恢复主机A的Apache服务,查看是否会再次发生主备切换:
主机A的IP信息
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 00:0c:29:c0:e8:97 brd ff:ff:ff:ff:ff:ff inet 192.168.0.88/24 brd 192.168.0.255 scope global noprefixroute dynamic ens160 valid_lft 53224sec preferred_lft 53224sec inet6 fe80::ec4e:853a:570d:bf79/64 scope link noprefixroute valid_lft forever preferred_lft forever
主机B的IP信息
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 00:0c:29:80:6a:31 brd ff:ff:ff:ff:ff:ff inet 192.168.0.110/24 brd 192.168.0.255 scope global noprefixroute dynamic ens160 valid_lft 75618sec preferred_lft 75618sec inet 192.168.0.5/24 scope global secondary ens160 valid_lft forever preferred_lft forever inet6 fe80::91ad:f9d8:5386:ba92/64 scope link noprefixroute valid_lft forever preferred_lft forever
访问http://192.168.0.5
从以上信息可见,在配置了不抢占模式后,在主机A的Apache恢复正常以后主机A并不会再次成为Master,不会再次发生主备切换。