实施案例 公司首页>实施案例>用LVS实现20台邮件服务器的负载均衡
用LVS实现20台邮件服务器的负载均衡
    Linux Virtual Server,简称LVS。是由中国一个Linux程序员发起的开发项目计划,其实现目标是创建一个具有良好的扩展性、高可靠性、高性能和高可用性的,基于Linux系统的服务器集群使用LVS架设的服务器集群系统从体系结构上看是透明的,最终用户只感觉到一个虚拟服务器物理服务器之间可以通过高速的LAN或分布在各地的WAN相连。最前端是负载均衡器,它负责将各种服务请求分发给后面的物理服务器,让整个集群表现得象一个服务于同一IP地址的虚拟服务器。

    LVS集群系统具有良好的可扩展性和高可用性。可扩展性是指,LVS集群建立后,可以很容易地根据实际的需要增加或减少物理服务器。而高可用性是指当检测到服务器节点或服务进程出错、失效时,集群系统能够自动进行适当的重新调整系统。

    利用LVS的NAT技术,可以很容易地构建20台邮件服务器的负载均衡器。

    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应用对物理服务器进行恰当的配置。

    以下将分别讲述一下三种模式的工作原理和优缺点。

    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.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系统上实现了这个,如果你能让其它操作系统支持,还在探索之中。

    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等。

    下面这张表概括地比较了VS-NAT、VS-TUN、VS-DR的特点:

    表21-1 三种实现方式对比表
    特性模式 VS-NAT VS-TUN VS-DR
    服务器操作系统 任何操作系统 须支持隧道技术大多数系统
    服务器模式 无 隧道、 无ARP Lo、 无ARP
    端口映射 有 无 无
    服务器网络 私有网 LAN/WAN LAN
    服务器数量 少(10-20) 多(100) 多(100)
    用户访问IP LVS虚拟IP LVS虚拟IP LVS虚拟IP
    服务器网关 负载均衡器 原有的路由器 原有的路由器