原理就是让 路由器把所有的80端口请求都分给VIP,分发器再分给每个web服务器,而web服务器处理完请求后跟客户连接就不走分发器了,直接通过路由器去外网了,这样就实现了只用一个公网IP也能用DR模式,具体配置如下
先从内网找了三台服务器分别是:
192.168.1.166 web1
192.168.1.167 web2
192.168.1.160 分发器
192.168.1.169 VIP
192.168.1.1   路由器内网ip(网关) 
211.83.113.119 路由器的WAN口IP 

先安装ipvsadm 直接yum install ipvsadm就行了,不多说
我用的是keepalived,这个工具不错,至于安装我就不说了
只把配置文件贴上来吧,以下是分发器上的设置
global_defs {
   notification_email {
        ufo@xman.com
   }

notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server smtp.qq.com
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}

vrrp_sync_group VG1 {
        group{
        VI_1
                }
                    }
vrrp_instance VI_1 {
        state MASTER
        interface eth0
        virtual_router_id 51
        priority 100
        advert_int 1

        authentication {
        auth_type PASS
        auth_pass 33210
                        }

        virtual_ipaddress {
        192.168.1.169
                          }

        virtual_server 192.168.1.169 80 {
        delay_loop 6
        lb_algo rr
        lb_kind DR
        protocol TCP

                real_server 192.168.1.166 80 {
                weight 1
                inhibit_on_failure
                TCP_CHECK {
                connect_timeout 5
                nb_get_retry 3
                delay_before_retry 3
                connect_port 80
                          }
                                              }
                real_server 192.168.1.167 80 {
                weight 1
                inhibit_on_failure
                TCP_CHECK {
                connect_timeout 5
                nb_get_retry 3
                delay_before_retry 3
                connect_port 80
                          }
                                              }
配置文件写完了,然后就是
mkdir /etc/keepalived  #系统默认会到这里去找配置文件
cp /usr/local/keepalive/etc/keepalived/keepalived.conf /etc/keepalived/
cp /usr/local/keepalive/etc/rc.d/init.d/keepalived /etc/init.d/
cp /usr/local/keepalive/etc/sysconfig/keepalived /etc/sysconfig/
cp /usr/local/keepalive/sbin/keepalived /bin/ #将可执行程序放入sbin 或者 bin目录里

vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
保存退出 后执行sysctl -p
route add defaule gw 192.168.1.1 把路由内网地址添加为默认网关
web服务器设置
两台web服务器也要修改 /etc/sysctl.conf 修改内容如下
vim /etc/sysctl.conf
# LVS
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
sysctl -p
之后还要增加vip
ifconfig lo:1 192.168.1.169 netmask 255.255.255.255 别忘了加到rc.local里面
route add defaule gw 192.168.1.1 把路由内网地址添加为默认网关

路由器设置
路由器的设置没什么好说的,除了上网设置以外还要做一个端口映射,就是把80端口映射到 vip上也就是192.168.1.169

现在启动keepalived吧
/etc/init.d/keepalived start

最后我们访问一下 http://211.83.113.119看看是否测试成功