DR模式工作流程图
  
实验环境:

部署keepalived高可用
[root@LVS-keep-backup ~]# yum install -y openssl-devel kernel-devel
# wget http://www.keepalived.org/software/keepalived-1.2.24.tar.gz
# tar zxvf keepalived-1.2.24.tar.gz
# cd keepalived-1.2.24
 ./configure --prefix=/ --with-kernel-dir=/usr/src/kernels/2.6.32-696.10.2.el6.x86_64/
# make
# make install
# chkconfig --add keepalived
[root@LVS-keep-backup keepalived-1.2.24]# chkconfig keepalived on 
[root@LVS-keep-backup keepalived-1.2.24]# chmod +x /etc/init.d/keepalived 
[root@LVS-keep-backup keepalived-1.2.24]# cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak
[root@LVS-keep-backup keepalived-1.2.24]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
   notification_email {
     acassen@firewall.loc
   }
   notification_email_from keepalived@localhost
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
  }
vrrp_instance VI_1 {
    state MASTER                  [MASTER|BACKUP]
    interface eth0
    virtual_router_id 51
    priority 100                              [100|90]
#noreepmpt        #不抢占功能,ps:一般配置在BACKUP状态下
    advert_int 1
    authentication {
        auth_type PASS
 auth_pass 1111
    }
    virtual_ipaddress {
        192.168.2.200            #设置虚拟IP 
    }   
}   
virtual_server 192.168.2.200 80 {     #设置虚拟服务器,需要指定虚拟IP地址和服务,端口,IP之间要用空格隔开
    delay_loop 6      #设置运行检查时间
    lb_algo rr    #设置负载调度算法,这里设置RR。即轮询算法,
    lb_kind DR      #设置负载均衡模式,这里是DR模式
    persistence_timeout 50         #会话保持时间,单位秒
    protocol TCP            #指定转发类型,TCP和UDP两种
real_server 192.168.2.138 80 {        #配置服务节点,需要指定Real Server的真实IP地址和端口
        weight 1               #配置服务节点权重,不同性能服务器分配不同负载,而性能较低的服务器自然分配的权重值要小,这样才能更好的利用和分配系统资源
        TCP_GET {        #Real  Server的状态检测设置部分,
        connect_timeout 3         #表示3秒无响应超时
        nb_get_retry 3         #重试次数
        delay_before_retry 3    #表示重试时间间隔
connect_port 80 # 健康检查的端口,如果不指定,默认是real_server制定的端口
                }
        }
   real_server 192.168.2.139 80 {
        weight 1
        TCP_GET {
        connect_timeout 3
        nb_get_retry 3
        delay_before_retry 3
connect_port 80    #   健康检查的端口,如果不指定,默认是real_server制定的端口
                }
 }
     }
部署LVS
[root@LVS-keep-master ~]# yum install -y ipvsadm
[root@LVS-keep-master ~]# ipvsadm -v 
ipvsadm v1.26 2008/5/15 (compiled with popt and IPVS v1.2.1)
[root@LVS-keep-master ~]# ipvsadm -A -t 192.168.2.200:80 -s wrr
[root@LVS-keep-master ~]# ipvsadm -a -t 192.168.2.200:80 -r 192.168.2.138 -g -w 100
[root@LVS-keep-master ~]# ipvsadm -a -t 192.168.2.200:80 -r 192.168.2.139 -g  -w 100
[root@LVS-keep-master ~] ipvsadm-save > /etc/sysconfig/ipvsadm #保存LVS配置信息,一遍随时恢复
[root@LVS-keep-master ~]# ipvsadm -Ln

在后端Realserver web上绑定虚拟VIP并且抑制ARP响应(因为用户在请求VIP的同时,默认绑定在 real-server后端真实IP服务器上的VIP也会响应,这样会冲突)
[root@HTTP-web1 ~]# VIP=192.168.2.200 
[root@HTTP-web1 ~]# ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP
[root@HTTP-web1 ~]# echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
[root@HTTP-web1 ~]# echo "2" > /proc/sys/net/ipv4/conf/lo/arp_ignore
[root@HTTP-web1 ~]# echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@HTTP-web1 ~]# echo "2" > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@HTTP-web2 ~]# VIP=192.168.2.200
[root@HTTP-web2 ~]# ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP
[root@HTTP-web2 ~]# echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore 
[root@HTTP-web2 ~]# echo "2" > /proc/sys/net/ipv4/conf/lo/arp_ignore 
[root@HTTP-web2 ~]# echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore 
[root@HTTP-web2 ~]# echo "2" > /proc/sys/net/ipv4/conf/all/arp_ignore
在后端WEB服务简单配置一下,便于负载区分即可
[root@HTTP-web1 ~]# echo "Server Name WEB 1111" >/var/www/html/index.html
[root@HTTP-web2 ~]# echo "Server Name web 2222" > /var/www/html/index.html
-A 增加一台虚拟服务器VIP地址。
-t 虚拟服务器提供的是tcp服务。
-s 使用的调度算法。
-a 在虚拟服务器中增加一台后端真实服务器。
-r 指定真实服务器地址。
-m 设置当前转发方式为NAT模式;-g为直接路由模式;-i 模式为隧道模式。
-w 后端真实服务器的权重。
查看LVS转发列表命令为:ipvsadm –Ln
实现结果:LVS负载均衡高可用



原文:http://www.cnblogs.com/bixiaoyu/p/7565976.html