当RS的某一台机器宕机之后,LB依然还会把请求发送到宕机的机器上去,这样就会影响到用户的体验。
keepalived + LVS
LB上执行: yum install keepalived
说明:由于keepalived集成了LVS的功能,所以LB上不需要自己写脚本,之前如果做实验有执行那个脚本,需要执行如下命令
# ifdown ens33 && ifup ens33
# ipvsadm -C
编辑配置文件 vim /etc/keepalived/keepalived.conf //修改为如下内容:
vrrp_instance aminglinux_01 {
#备用服务器上为 BACKUP
state MASTER
#绑定vip的网卡为ens33
interface ens33
virtual_router_id 001
#优先级,优先级最高的为master,备用服务器上要低于100
priority 100
#发送VRRP包的间隔时间
advert_int 1
authentication {
auth_type PASS
auth_pass aminglinux
}
virtual_ipaddress {
192.168.222.100
}
}
virtual_server 192.168.222.100 80 {
#(每隔10秒查询realserver状态)
delay_loop 10
#(lvs 算法)
lb_algo wlc
#(DR模式)
lb_kind DR
#(同一IP的连接60秒内被分配到同一台realserver)
persistence_timeout 60
#(用TCP协议检查realserver状态)
protocol TCP
real_server 192.168.222.128 80 {
#(权重)
weight 100
TCP_CHECK {
#(10秒无响应超时)
connect_timeout 10
# 重新检测3次
nb_get_retry 3
# 每次检测间隔时间
delay_before_retry 3
connect_port 80
}
}
real_server 192.168.222.130 80 {
weight 100
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
systemctl start keepalived
定义脚本 vim /usr/local/sbin/lvs_rs.sh //内容如下:
#!/bin/bash
vip=192.168.222.100
ifdown lo
ifup lo
ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up
route add -host $vip lo:0
#更改arp内核参数,目的是为了让rs顺利发送mac地址给客户端
#参考文档https://www.imooc.com/article/79661
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
sh /usr/local/sbin/lvs_rs.sh