LVS_DR模式是一种负载均衡的模式,但是存在一个问题,当后端其中一台RS down掉后,LBserver是不会将请求都转发到另一台RS的,这样就会导致一半的请求会访问失败,keepalive解决了这个问题。
lvs的核心服务是ipvsadm,配置lvs_dr模式时通过脚本配置ip和ipvsadm。而keepalived实际上就是直接通过配置文件实现上述功能。
而且我们可以增加一台服务器做keepalived的从服务器,实现keepalived服务的高可用性。
具体步骤
1.当然是先要下载keepalived服务啦(主从服务器都要下载)。
yum install -y keepalived
2.编辑配置文件 /etc/keepalived/keepalived.conf
vrrp_instance VI_1 {
state MASTER #表示主服务器,从上写BACKUP
interface eth0
virtual_router_id 51
priority 100 #优先级,从上设置99
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.100.111 #VIP
}
}
virtual_server 192.168.100.111 80 { #VIP
delay_loop 6
lb_algo rr #轮询算法
lb_kind DR #DR模式
# persistence_timeout 0 #这个就是设置一直转发到某台RS
protocol TCP
real_server 192.168.100.13 80 { #RS1
weight 100 #权重
TCP_CHECK{
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 192.168.100.12 80 { #RS2
weight 100 #权重
TCP_CHECK{
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
这是主上的配置,从服务器上只需将state MASTER改为state BACKUP,priority 100改为priority 99即可。
*在测试之前有几个地方需要操作
1)LBserver上需要执行
echo 1 > /proc/sys/net/ipv4/ip_forward
2)RS上需要执行之前的lvs_rs.sh脚本
#!/bin/bash
vip=192.168.100.111
ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up
route add -host $vip lo:0
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce