一、DR模式

   VS/DR利用大多数Internet服务的非对称特点,负载调度器中只负责调度请求,而服务器直接将响应返回给客户(NAT模式,服务器返回给调度器,调度器通过地址转化之后响应给客户端),可以极大地提高整个集群系统的吞吐量。


   调度器和服务器组都必须在物理上有一个网卡通过不分断的局域网相连,如通过高速的交换机或者HUB相连。VIP地址为调度器和服务器组共享,调度 器配置的VIP地址是对外可见的,用于接收虚拟服务的请求报文;所有的服务器把VIP地址配置在各自的Non-ARP网络设备上,它对外面是不可见的,只 是用于处理目标地址为VIP的网络请求。


   在VS/DR 中,调度器根据各个服务器的负载情况,动态地选择一台服务器,不修改也不封装IP报文,而是将数据帧的MAC地址改为选出服务器的MAC地址,再将修改后 的数据帧在与服务器组的局域网上发送。因为数据帧的MAC地址是选出的服务器,所以服务器肯定可以收到这个数据帧,从中可以获得该IP报文。当服务器发现 报文的目标地址VIP是在本地的网络设备上,服务器处理这个报文,然后根据路由表将响应报文直接返回给客户。


   在VS/DR中,根据缺省的TCP/IP协议栈处理,请求报文的目标地址为VIP,响应报文的源地址肯定也为VIP,所以响应报文不需要作任何修改,可以直接返回给客户,客户认为得到正常的服务,而不会知道是哪一台服务器处理的。

   

   更多请参考:http://7944938.blog.51cto.com/7934938/1405752


二、两个网络参数的说明

     a).arp_ignore :        

            定义不同的应答模式,在arp请求地址是本机ip(本机能有多个ip)的情况下。

          0-默认值:代表对于arp请求,任何配置在本机的ip地址都会回应,不管该arp请求的目的地址是不是接口的ip;如果有多个网卡,并且网卡的ip都是一个子网,那么从一个端口进来的arp请求,别的端口也会发送回应。

              1:收到arp请求的网卡,确定arp请求的地址是自己,才回应也就是对广播包不做响应。

              2:收到arp请求的网卡,确定arp请求的地址是自己,且发起请求的主机地址也与自己处于同一子网内,才回应。(同一网段arp请求)

       b).arp_announce:

             用来限制,是否使用发送端口(被请求ip所在)的ip地址来设置ARP的源地址:

           0-默认值:用ip包的源地址(eth0)来设置ARP请求的源地址。

           1:不使用ip包的源地址来设置ARP请求的源地址如果ip包的源地址与arp请求包中的目的ip地址,在相同的子网,那么用ip包的源地址,来设置ARP请求的源地址,否则使用”2″的设置

           2:不使用ip包的源地址来设置ARP请求的源地址,而由系统来选择最好的接口来发送。

# echo "1">/proc/sys/net/ipv4/conf/all/arp_ignore
# echo "2">/proc/sys/net/ipv4/conf/all/arp_announce
其实真正要执行的是:
# echo "1">/proc/sys/net/ipv4/conf/eth0/arp_ignore
# echo "2">/proc/sys/net/ipv4/conf/eth0/arp_announce
建议把上面两条也加到你的脚本里去,万一系统里上面两条默认的值不是0,那有可能是会出问题滴。因为all/ 和{interface}/ 下两者同时比较,取较大一个值生效.


三、DR模式实现

   提高整个集群系统的吞吐量,负载调度器中只负责调度请求,而服务器直接将响应返回给客户。

    在VS/DR 中,调度器根据各个服务器的负载情况,动态地选择一台服务器,不修改也不封装IP报文,而是将数据帧的MAC地址改为选出服务器的MAC地址,再将修改后的数据帧在与服务器组的局域网上发送。

   172.16.0.0网段

   1.Director基础配置

//清空防火墙规则
# iptables -t filter -F
//配置vip
# ifconfig eth0:0 172.16.1.100/24 up
# route add default gw 172.16.0.1

 2.RS1/RS2配置

# echo "1">/proc/sys/net/ipv4/conf/all/arp_ignore
# echo "1">/proc/sys/net/ipv4/conf/all/arp_announce
# echo "1">/proc/sys/net/ipv4/conf/eth0/arp_ignore
# echo "1">/proc/sys/net/ipv4/conf/eth0/arp_announce
# ifconfig lo:0 172.16.1.100 netmask 255.255.255.255 broadcast 172.16.1.100 up
# route add -host 172.16.1.100 dev lo0:0
# route add default gw 172.16.0.1

 3.Director集群配置

# ipvsadm -A -t 172.16.1.100 -s rr  //定义一个集群服务
# ipvsadm -a -t 172.16.1.100:80 -r 172.16.1.2 -g  //在DR模式下添加服务
# ipvsadm -a -t 172.16.1.100:80 -r 172.16.1.3 -g
# ipvsadm -L -n  //查看服务


  VIP在172.16.0.0网段(gw:172.16.0.1),DIP/RIP在192.168.1.1网(gw:192.168.0.254),路由器将两网段相连

   1.Director基础配置

# ifconfig eth0 192.168.1.1/24 up
# route add default gw 192.168.0.254
# ifconfig eth0:0 172.16.1.100 netmask 255.255.255.255 broadcast 172.16.1.100 up

     2.RS1/RS2配置

#  echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
#  echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
#  echo 1 > /proc/sys/net/ipv4/conf/all/arp_announce
#  echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_announce
#ifconfig lo:0 172.16.1.100 netmask 255.255.255.255 broadcast 172.16.249.100 up
#route add -host 172.16.1.100 dev lo:0

  3.Director集群配置

# ipvsadm -A -t 172.16.1.100 -s rr  //定义一个集群服务
# ipvsadm -a -t 172.16.1.100:80 -r 192.16.1.2 -g  //在DR模式下添加服务
# ipvsadm -a -t 172.16.1.100:80 -r 192.16.1.3 -g
# ipvsadm -L -n  //查看服务