实验环境:
- 主机A:操作系统CentOS 7.6.1810,IP地址192.168.0.88,Keepalived版本2.0.12
- 主机B:操作系统CentOS 7.6.1810,IP地址192.168.0.110,Keepalived版本2.0.12
两台主机均运行Apache提供Web服务;VIP为192.168.0.5。
首先确认两台主机的Apache服务是否正常:
访问http://192.168.0.88
1、不设置不抢占模式
配置两台主机上的Keepalived,配置文件如下:
主机A
! 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
}
}这里没有设置不抢占模式,且没有配置邮件发送功能。
主机B
主机B的配置文件大部分同主机A,仅有其中的state和priority与主机A不同
! 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上:
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.5
实际访问的是主机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
2、设置不抢占模式
不抢占模式仅在优先级高的主机上进行设置,所以主机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,不会再次发生主备切换。






