在NAT模型下,director的工作能力是很有限的,每个用户访问服务器时,都要先访问director,在一定的范围内director可以承受,但超出这个范围director就无能为力,在较大规模应用场景中,director易成为系统瓶颈,为了解决这种状况,又引用了DR模型! DR与NAT不同的地方在与RIP在响应用户请求,不在进过director,而是直接连接路由转发出去,因为在realserver中有两个地址一个是RIP、一个是隐藏的VIP,realserver可以直接通过自身的VIP来响应,要记住通信是使用RIP来实现的!如图:
这种模型就大大地降低了director的压力,使得负载均衡更有效,更方便实现!而有的人可能产生这样的疑问,当client发送的请求时,目标地址是VIP,可是整个集群中VIP的地址有多个,要将这个请求报文交给那个VIP呢?在NAT中已经提到过,用户访问的是director中的VIP,而非realserver中的VIP,因此为了让client直接将请求发给director的VIP,我们要关掉realserver中服务器的arp功能,使得VIP不去抢请求资源,而是等待director分发请求资源! DR模型的实现: 目的:通过DR模型实现多个web服务器平均分配用户请求 前提:三台主机,两台作为realserver,分别为RS1、RS2,一台作为director,通过软件ipvsadm来实现; 说明: RS1:RIP=172.16.15.1VIP=172.16.15.4 RS2:RIP=172.16.15.2VIP=172.16.15.4 Director:DIP=172.16.15.3VIP=172.16.15.4 修改ARP功能: arp_ignore: 定义接收到arp请求时的响应级别 0:只要本地配置的有相应地址,就给予响应 1:仅在请求的目标地址配置请求到达的接口上的时候,才能给予响应 arp_announce: 定义将自己地址向外通告时的通告级别 0:将本地任何接口上的任何地址向外通告 1:试图仅向目标网络通告与其网络匹配的地址 2:仅向与本地接口上地址匹配的网络进行通告 配置DR模型: Director:
[Shell] 纯文本查看 复制代码
# 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:
[Shell] 纯文本查看 复制代码
# yum install httpd
# echo “<h1>RS1.jun.com</h1>” >> /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:
[Shell] 纯文本查看 复制代码
# yum install httpd
# echo “<h1>RS2.jun.com</h1>” >> /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 不支持端口映射
|