NAT模型下,director的工作能力是很有限的,每个用户访问服务器时,都要先访问director,在一定的范围内director可以承受,但超出这个范围director就无能为力,在较大规模应用场景中,director易成为系统瓶颈,为了解决这种状况,又引用了DR模型!

DRNAT不同的地方在与RIP在响应用户请求,不在进过director,而是直接连接路由转发出去,因为在realserver中有两个地址一个是RIP、一个是隐藏的VIPrealserver可以直接通过自身的VIP来响应,要记住通信是使用RIP来实现的!如图:

195708972.png

这种模型就大大地降低了director的压力,使得负载均衡更有效,更方便实现!而有的人可能产生这样的疑问,当client发送的请求时,目标地址是VIP,可是整个集群中VIP的地址有多个,要将这个请求报文交给那个VIP?NAT中已经提到过,用户访问的是director中的VIP,而非realserver中的VIP,因此为了让client直接将请求发给directorVIP,我们要关掉realserver中服务器的arp功能,使得VIP不去抢请求资源,而是等待director分发请求资源!

DR模型的实现:

目的:通过DR模型实现多个web服务器平均分配用户请求

前提:三台主机,两台作为realserver,分别为RS1RS2,一台作为director,通过软件ipvsadm来实现;

说明:

RS1RIP=172.16.15.1VIP=172.16.15.4

RS2RIP=172.16.15.2VIP=172.16.15.4

DirectorDIP=172.16.15.3VIP=172.16.15.4

修改ARP功能:

arp_ignore: 定义接收到arp请求时的响应级别

0:只要本地配置的有相应地址,就给予响应

1:仅在请求的目标地址配置请求到达的接口上的时候,才能给予响应

arp_announce: 定义将自己地址向外通告时的通告级别

0:将本地任何接口上的任何地址向外通告

1:试图仅向目标网络通告与其网络匹配的地址

2:仅向与本地接口上地址匹配的网络进行通告

配置DR模型:

Director:

# rpm -ivh ipvsadm-1.24.-13.el5.i386.rpm# ifconfig eth0:0 172.16.15.10/16 up# route add -host 172.16.15.10 dev eth0:0# ipvsadm -A -t 172.16.15.10:80 -s wlc# ipvsadm -a -t 172.16.15.10:80 -r 172.16.15.1 -g -w 2# ipvsadm -a -t 172.16.15.10:80 -r 172.16.15.3 -g -w 1

RS1:

# yum install httpd# echo “

RS1.jun.com

” >> /var/www/html/index.html# serive httpd start# sysctl -w net.ipv4.conf.eth0.arp_announce=2# sysctl -w net.ipv4.conf.all.arp_announce=2# echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore# ifconfig lo:0 172.16.15.10 broadcast 172.16.15.10 netmask 255.255.255.255 up# route add -host 172.16.15.10 dev lo:0

RS2

# yum install httpd# echo “

RS2.jun.com

” >> /var/www/html/index.html# service httpd start# sysctl -w net.ipv4.conf.eth0.arp_announce=2# sysctl -w net.ipv4.conf.all.arp_announce=2# echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore# ifconfig lo:0 172.16.15.10 broadcast 172.16.15.10 netmask 255.255.255.255 up# route add -host 172.16.15.10 dev lo:0

注意:

集群节点跟director必须在同一个物理网络中

RIP可以使用公网地址,实现便捷的远程管理和监控

director仅负责处理入站请求,响应报文则有realserve直接发往客户端

realserver不能将网关指向DIP

不支持端口映射