直接路由实现虚拟服务器(VS/DR)

VS/NAT 的集群系统中,请求和响应的数据报文都需要通过负载调度器,当真实服务器的数目在10 台和20 台之间时,负载调度器将成为整个集群系统的新瓶

颈。大多数 Internet 服务都有这样的特点:请求报文较短而响应报文往往包含大量的数据。如果能将请求和响应分开处理,即在负载调度器中只负责调度请求而响应直接返回给客户,将极大地提高整个集群系统的吞吐量。

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

VS/DR 的体系结构如图4-10 所示:

 

 


 

4-10

 

 

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

 

4-11 TurboMail 服务器集群的网络拓扑图,其中VIP 代表对外公布的Web服务器的IP 地址,DIP 是调度器的真实地址,RIP Web 服务器的真实地址。

 

 


 Director服务器:负载均衡调度器

 Realserver1服务器:TurboMailA服务器

 Realserver2服务器:TurboMailB服务器




首先将TurboMail邮件系统分别在192.168.0.158、192.168.0.159两台服务器上部署完毕。
本案例的具体配置步骤如下:
1.安装软件:

director(192.168.0.169)上安装上面的方法安装内核和管理软件。

2. 配置LVS

(1)、在192.168.0.169 (负载均衡调度器)上:

修改内核运行参数,即修改/etc/sysctl.conf 文件的内容如下:

net.ipv4.ip_forward = 0

net.ipv4.conf.all.send_redirects = 1

net.ipv4.conf.default.send_redirects = 1

net.ipv4.conf.eth0.send_redirects = 1

然后执行下面的命令是对内核修改的参数立即生效:

sysctl -p

配置VIP 地址:

/sbin/ifconfig eth0:160 192.168.0.160 broadcast 192.168.0.160 netmask 255.255.255.255 up

/sbin/route add -host 192.168.0.160 dev eth0:160

清除ipvsadm :

/sbin/ipvsadm -C

使用ipvsadm 安装LVS 服务:

/sbin/ipvsadm -A -t 192.168.0.160:http -s rr

增加realserver

/sbin/ipvsadm -a -t 192.168.0.160:8080 -r 192.168.0.158 -g -w 1

/sbin/ipvsadm -a -t 192.168.0.160:8080 -r 192.168.0.159 -g -w 1

(2)realserver1(192.168.0.158)TurboMailA服务器

     realserver2(192.168.0.159)TurboMailB服务器

修改内核运行参数,即修改/etc/sysctl.conf 文件的内容如下:

net.ipv4.ip_forward = 0

net.ipv4.conf.lo.arp_ignore = 1

net.ipv4.conf.lo.arp_announce = 2

net.ipv4.conf.all.arp_ignore = 1

net.ipv4.conf.all.arp_announce = 2

然后执行下面的命令是对内核修改的参数立即生效:

sysctl -p

配置VIP 地址:

/sbin/ifconfig lo:0 192.168.0.160 broadcast 192.168.0.160 netmask 255.255.255.255 up

/sbin/route add -host 192.168.0.160 dev lo:0

在客户端使用浏览器多次访问:http://192.168.0.160:8080,然后再192.168.0.169

运行ipvsadm 命令,应该有类似下面的输出:

IP Virtual Server version 1.2.0 (size=4096)

Prot LocalAddress:Port Scheduler Flags

-> RemoteAddress:Port Forward Weight ActiveConn InActConn

TCP 202.99.59.110:http rr

-> 192.168.0.158:8080 Route 1 0 28

-> 192.168.0.159:8080 Route 1 0 29

 

 

 

 

从上面的结果可以看出,我们的LVS 服务器已经成功运行。但是在访问的过程中,集群系统是如何工作的呢?

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