首页 > 代码库 > LVS(DR) + Keepalive实现负载均衡

LVS(DR) + Keepalive实现负载均衡

环境:

MASTER:192.168.10.34 (LVS+KEEPALIVE)

SLAVE: 192.168.10.33 (LVS+KEEPALIVE)

WEB1: 192.168.10.35  (NGINX)

WEB2: 192.168.10.38  (NGINX)

VIP:192.168.10.201


一.服务端:

  1. 安装lvs、keepalive服务

    yum -y install keepalive ipvsadm

  2. 开启转发

    echo "1" > /proc/sys/net/ipv4/ip_forward

  3. 进行keepalive的主要配置

   vim /etc/keepalived/keepalived.conf

<1>.vrrp_instance VI_1 {

        state MASTER/BACKUP #定义主/从DR

        interface eth0 #定义绑定的端口

        priority 100 #定义优先级,从调度的值要小于主调度

        virtual_ipaddress {

            192.168.10.201 #定义VIP

         }        

  }

 <2>.vitrual_server 192.168.10.201 80 {

            delay 1 #探测的时间间隔

            lb_algo rr #轮询调度

            lb_kind DR #MAC路由模式

            persistence_timeout 0 #一定时间内对于同一IP的请求调度到同一Server上

            protocol TCP #TCP协议

            real_server 192.168.10.35 80 {   #定义后端服务器

               weight 1             #权重

               http_check {

                connect_timeout 3    #探测超时

                nb_get_retry 3       #重试次数

                delay_before_retry 3 #重试时间间隔

                }

             }

             

            real_server 192.168.10.38 80 {   #定义后端服务器

               weight 1             #权重

               http_check {

                connect_timeout 3    #探测超时

                nb_get_retry 3       #重试次数

                delay_before_retry 3 #重试时间间隔

                }

             }

   }

 4.开启服务

   /etc/init.d/keepalived start

当开启keepalived服务时,也会自带启动Ipvsadm.此时用ip addr可以查看到vip已经绑定到相应端口,而通过

ipvsadm -Ln 可以检测相应的调度配置与调度情况。

技术分享

二.后端服务器组

1.调整arp响应

<1>.echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore

<2>.echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore

<3>.echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce

<4>.echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce

2.vip绑定

<1>.ifconfig lo:0 192.168.10.201 broadcast 192.168.10.201  netmask 255.255.255.255 up

<2>.route add -host 192.168.10.201 dev lo:0

技术分享

3.开启WEB服务(略)


三.测试

1.客户端多次访问,检测是否可以分别从web组的设备获取数据

<--

for i in `seq 10`

do

     wget -e http_proxy="192.168.10.201" www.baidu.com -O /dev/null

done

-->

2.故障处理

(1).关闭MASTER端的Keepalive,检测VIP漂移

<1>.master:ipvsadm -Ln 为空

<2>.网卡的vip已取消

技术分享

<3>.Slave端的VIP与ipvsadm自动衔接

技术分享

技术分享



(2).关闭集群中的某台web服务器

检测ipvsadm -Ln ,相应的调度已经删除

技术分享

技术分享


(3).“主”调度恢复,“从”调度自动退还VIP,并置状态为BACKUP,由“主”调度接管

技术分享

(4).后端服务器恢复,自动将节点加入调度队列

技术分享






LVS(DR) + Keepalive实现负载均衡