由于DR模式中,VS/DR只负责数据的转发,而数据的返回则是由后端服务器直接返回给客户端,从而降低了VS/DR的负载,所以DR模式是大多数公司的第一选择。

以下是DR模式的官方网络拓扑:

LVS(dr)模式部署指南_DR


从上图可以看中,后端服务器与dr之间,必须处于同一物理网段。但是根据TCP层的协议,如果数据包是客户端传向VIP的,那么客户端收到的也必须是VIP地址,所以在配置LVS后端服务器的时候,也需要配置VIP。而仅仅配置VIP也不能满足负载均衡本身的要求(在有任意一台服务器宕机时,另外的服务器可以随时托管业务),假如有任意的一台后端服务器宕机,VIP返回时,会同时携带其ARP信息致客户端,因此,在配置的时候也需要忽略ARP的返回才可以避免出现问题(具体配置可参考Linux调优-网络调优章节)。

LVS的部署需要以下条件支持:

Director Server服务端:

    安装包:

        ipvsadm:通过yum info ipvsadm(官方源)可以查看到其安装包的相关信息(如版本,大小等),通过yum install ipvsadm即可。

    转发开启:

        net.ipv4.ip_forward = 1 (配置/etc/sysctl.conf后,执行sysctl -p启用参数)

    配置文件:

        修改/etc/sysconfig/ipvsadm,加入restart和stop时保存已配置或修改的功能,以防配置后没有save导致配置丢失

        IPVS_SAVE_ON_STOP="yes"

        IPVS_SAVE_ON_RESTART="yes"

    VIP配置:

        ifconfig eth0:0 VIP broadcast VIP netmask 255.255.255.255 up    #配置VIP网卡

        route add -host VIP dev eth0:0    #配置VIP的路由

        ipvsadm -A -t VIP:80 -s wrr -p 3    

            -A:添加一个虚拟服务

            -t:指定为TCP服务,对外提供VIP的80端口进行服务,如果需要配置NAT,也是配置VIP的相应端口

            -s:调度方法,这里的wrr是指加权轮询。具体的可支持方法可以参考man手册

            -p:指定服务器持久性会话的超时时长,默认为300s

        ipvsadm -a -t VIP:80 -r RIP1:80 -g -w 1

            -a:添加一个后端服务器

            -t:指定其占用的VIP以及VIP的端口

            -r:指定后端服务器的RIP和应用端口

            -g:使用指定的网关

            -w:权重值

        ipvsadm -a -t VIP:80 -r RIP2:80 -g -w 1

RS客户端配置:

    ARP返回忽略,返回地址改变为可与客户端通信的地址(announce为通告模式):

        net.ipv4.conf.default.arp_announce = 2

        net.ipv4.conf.all.arp_announce = 2

        net.ipv4.conf.default.arp_ignore = 1

        net.ipv4.conf.all.arp_ignore = 1

    配置VIP网卡:

    ifconfig lo:0 VIP netmask 255.255.255.255 broadcast VIP

    route add -host VIP dev lo:0