第一部分: DR模式配置
OS:   Redhat AS4U4 内核:2.6.9-42
Server1: 192.168.1.91 (负载服务器)
虚拟服务IP: 192.168.1.99
Realserver: 192.168.1.92 (集群服务器)
实验目的:
在负载服务器上,配置LVS(DR模式),做web服务器的集群。实现最终用户访问虚拟IP,负载服务器,将请求分发到集群下的服务器,由集群服务器轮流提供web服务。
 
   Redhat AS4U4的内核版本已经集成了ipvsadm功能模块,所以不需要安装,直接使用即可。
  如果要用高版本的ipvsadm, 到[url]http://www.linuxvirtualserver.org/software/[/url] 注意对应自己的内核版本ipvsadm-1.24.tar.gz
tar zxvf ipvsadm-1.24.tar.gz
cd ipvsadm-1.24
make
make install
 
注意在make时可能会出现很多错误的信息,请按照如下操作就可以心编译正常
ln -s /usr/src/kernels/2.6.9-22.EL-i686/ /usr/src/linux
一、负载服务器
编辑一个shell文件,执行后,即启用LVS功能。
vi  /tmp/lvs.sh
#!/bin/bash
vip=192.168.1.99
rs1=192.168.1.91
rs2=192.168.1.92
gw=192.168.1.1
#set virttual ip address
/sbin/ifconfig eth1:0 $vip broadcast $vip netmask 255.255.255.255 up
/sbin/route add -host $vip dev eth1:0
#clear ipvs tables
/sbin/ipvsadm -C
#set LVS  Server
/sbin/ipvsadm -A -t $vip:80 -s rr
/sbin/ipvsadm -a -t $vip:80 -r $rs1:80 -g
/sbin/ipvsadm -a -t $vip:80 -r $rs2:80 -g
#run lvs
/sbin/ipvsadm
因为此实验本负载服务器也提供web服务,所以要在/var/www/html下建立一个测试文件 index.html,然后service httpd start 启动http服务。
 
二、集群服务器
所有集群服务器忽略ARP回应,在每台群服务器上都要进行如下设置
vi /tmp/lvs.sh
#!/bin/bash
vip=192.168.1.99
/sbin/ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up
/sbin/route add -host $vip dev lo:0
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
sysctl –p
 
在 /var/www/html 下新建立一个index.html测试文件,然后 service httpd start启动http服务。
 
三、测试
在客户端反复访问:http:.//192.168.1.99 如果能轮流显示出 192.168.1.91 和192.168.1.92的http测试文件,即LVS(DR模式)配置完成。
 
第二部分: NAT 模式配置
OS:   Redhat AS4U4 内核:2.6.9-42
Server1: eth0: 192.168.1.91 (负载服务器对外IP)
eth1: 192.168.3.1
Realserver: 192.168.3.2 (集群服务器)
掩码: 255.255.255.0  网关: 192.168.3.1
  实验目的:
在负载服务器上,配置LVS(NAT模式),做web服务器的集群。实现最终用户访问负载服务器的对外IP,负载服务器,将请求分发到集群下的服务器,由集群服务器轮流提供web服务。
 负载服务器
  需要在此服务器上配置NAT功能,使其eth1网卡所接的3.0网段能够通过它进行与外网进行联系.
   需要配置LVS功能,以实现集群功能.
以下是shell文件内容
vi /tmp/lvs-nat.sh
#!/bin/bash
echo "1">/proc/sys/net/ipv4/ip_forward
echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/default/send_redirects
#echo 0 > /proc/sys/net/ipv4/conf/eth1/send_redirects
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t nat -A POSTROUTING -s 192.168.3.0/24 -o eth1 -j MASQUERADE
ipvsadm -C
ipvsadm -A -t 192.168.1.91:80 -s rr
ipvsadm -a -t 192.168.1.91:80 -r 192.168.3.1:80 -m
ipvsadm -a -t 192.168.1.91:80 -r 192.168.3.2:80 -m
ipvsadm -a -t 192.168.1.91:80 -r 192.168.3.3:80 -m
ipvsadm
 集群中的节点服务器,只需要将网卡的IP及网关配置好,可以实现负载分担功能.
 
附: LVS介绍
 
1.LVS系统结构与特点
 
 
使用LVS架设的服务器集群系统从体系结构上看是透明的,最终用户只感觉到一个虚拟服务器.物理服务器之间可以通过高速的LAN或分布在各地的WAN相连。最前端是负载均衡器,它负责将各种服务请求分发给后面的物理服务器,让整个集群表现得象一个服务于同一IP地址的虚拟服务器。
 
LVS集群系统具有良好的可扩展性和高可用性。
 
可扩展性是指,LVS集群建立后,可以很容易地根据实际的需要增加或减少物理服务器。而高可用性是指当检测到服务器节点或服务进程出错、失效时,集群系统能够自动进行适当的重新调整系统。
 
2.LVS是如何工作的
 
 
Linux Virtual Server的主要是在负载均衡器上实现的,负载均衡器是一台加了LVS Patch的2.2.x版内核的Linux系统。LVS Patch可以通过重新编译内核的方法加入内核,也可以当作一个动态的模块插入现在的内核中。
 
负载均衡器可以运行在以下三种模式下中的一种或几种: 1)Virtual Server via NAT(VS-NAT):用地址翻译实现虚拟服务器;2)Virtual Server via IP Tunneling (VS-TUN):用IP隧道技术实现虚拟服务器;3)Virtual Server via Direct Routing(VS-DR):用直接路由技术实现虚拟服务器。
 
另外,还需要根据LVS应用对物理服务器进行恰当的配置。
 
以下将分别讲述一下三种模式的工作原理和优缺点。
 
2.1.Virtual server via NAT(VS-NAT)
 
Virtual Server via NAT方法的最大优点是集群中的物理服务器可以使用任何支持TCP/IP操作系统,物理服务器可以分配Internet的保留私有地址,只有负载均衡器需要一个合法的IP地址。
 
这种实现方法的最大的缺点是扩展性有限。当服务器节点(普通PC服务器)数据增长到20个或更多时,负载均衡器将成为整个系统的瓶颈,因为所有的请求包和应答包都需要经过负载均衡器再生。假使TCP包的平均长度是536字节的话,平均包再生延迟时间大约为60us(在Pentium处理器上计算的,采用更快的处理器将使得这个延迟时间变短),负载均衡器的最大容许能力为8.93M/s,假定每台物理服务器的平台容许能力为400K/s来计算,负责均衡器能为22台物理服务器计算。
 
Virtual Server via NAT能够满足许多服务器的服务性能需求。即使是是负载均衡器成为整个系统的瓶颈,如果是这样也有两种方法来解决它。一种是混合处理,另一种是采用Virtual Server via IP tunneling或Virtual Server via direct routing。如果采用混合处理的方法,将需要许多同属单一的RR DNS域。你采用Virtual Server via IP tunneling或Virtual Server via direct routing以获得更好的可扩展性。也可以嵌套使用负载均衡器,在最前端的是VS-Tunneling或VS-Drouting的负载均衡器,然后后面采用VS-NAT的负载均衡器。
 
2.2.Virtual server via IP tunneling(VS-TUN)
 
采用VS-NAT方式,请求与应答包都需要经过负载均衡器,那么当服务器节点增长到20个或更多时,这个负载均衡器就可能成为新的瓶颈。我们发现,许多Internet服务(例如WEB服务器)的请求包很短小,而应答包通常很大。
 
而使用VS-TUN方式的话,负载均衡器只负责将请求包分发给物理服务器,而物理服务器将应答包直接发给用户。所以,负载均衡器能处理很巨大的请求量,这种方式,一台负载均衡能为超过100台的物理服务器服务,负载均衡器不再是系统的瓶颈。使用VS-TUN方式,如果你的负载均衡器拥有100M的全双工网卡的话,就能使得整个Virtual Server能达到1G的吞吐量。
 
IP tunneling(IP隧道)能够用于架构一个高性能的virtual server,非常适合构建virtual proxy server,因为当代理服务器收到了请求,能够让最终用户直接与服务器联系。
 
但是,这种方式需要所有的服务器支持IP Tunneling(IP Encapsulation)协议,我仅在Linux系统上实现了这个,如果你能让其它操作系统支持,还在探索之中。
 
2.3.Virtual Server via Direct Routing(VS-DR)
 
就象VS-TUN一下,在VS-DR方式下,负载均衡器也只是分发请求,应答包通过单独的路由方法返回给客户端。这种方式能够大大提高Virtual Server的可扩展性。与VS-TUN相比,VS-DR这种实现方式不需要隧道结构,但它要求负载均衡器的网卡必须与物理网卡在一个物理段上。
 
而且VS-DR模式,可以使用大多数操作系统做为物理服务器,其中包括:Linux 2.0.36、2.2.9、2.2.10、2.2.12;Solaris 2.5.1、2.6、2.7;FreeBSD 3.1、3.2、3.3;NT4.0无需打补丁;IRIX 6.5;HPUX11等