主机A的角色为LB,主机BC角色为后端RS。这里仅实现负载均衡,而不对LB作高可用集群。html
这里不使用Keepalived邮件发送和VRRP功能,因此全局配置使用默认,而VRRP不进行配置,仅配置LVS部分。Keepalived配置以下:算法
! 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 } virtual_server 192.168.0.5 80 { delay_loop 5 lb_algo rr lb_kind DR persistence_timeout 100 protocol TCP real_server 192.168.0.88 80 { inhibit_on_failure TCP_CHECK { connect_timeout 5 nb_get_retry 3 delay_before_retry 5 } } real_server 192.168.0.110 80 { inhibit_on_failure TCP_CHECK { connect_timeout 5 nb_get_retry 3 delay_before_retry 5 } } }
由于在Keepalived中没有配置VRRP功能,因此必须手动为主机A的ens160网卡接口绑定VIP:shell
[root@localhost keepalived]# ip addr add 192.168.0.5/24 dev ens160
启动Keepalived:后端
[root@localhost keepalived]# systemctl start keepalived
Keepalived启动后能够经过ipvsadm查看当前的RS组:bash
[root@localhost keepalived]# ipvsadm -L -n IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 192.168.0.5:80 rr persistent 100 -> 192.168.0.88:80 Route 1 0 0 -> 192.168.0.110:80 Route 1 0 0
经过如下脚本为lo绑定VIP并配置ARP抑制:负载均衡
#!/bin/bash VIP=192.168.0.5 /usr/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up 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
注意:脚本中调用了ifconfig命令,请确保该命令已经安装。oop
编写完脚本后,经过chmod命令为脚本赋予可执行权限,而后执行该脚本。操作系统
首先直接访问主机B跟主机C:3d
http://192.168.0.88code
http://192.168.0.110
主机B与主机C均正常提供Web服务。此时经过VIP192.168.0.5进行访问:
因为没有设置后端节点的权重,因此这里访问会平均分配给两个后端RS。经过在主机A上使用ipvsadm也能够查看到当前各个后端RS的负载状况:
[root@localhost keepalived]# ipvsadm -L -n IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 192.168.0.5:80 rr -> 192.168.0.88:80 Route 1 1 0 -> 192.168.0.110:80 Route 1 1 0
此时,将主机B上的Web服务中止,查看集群状况:
[root@localhost keepalived]# ipvsadm -L -n IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 192.168.0.5:80 rr -> 192.168.0.88:80 Route 0 0 0 -> 192.168.0.110:80 Route 1 0 0
主机B的权重已经被调整为0了,说明Keepalived已经检测到主机B出现故障,接下去的请求就不会再转发给主机B了。