一、LVS(Linux Virtual Server)简介:

    背景:在Internet的飞速发展下,对于网络宽带和服务器的要求越来越高。因此,对用硬件和软件的方法实现高可用伸缩、高可用网络服务的需求不断增长。针对高可用伸缩、高可用网络服务的需求章文嵩博士在1988年5月成立了LVS自由软件项目,是基于IP层和基于内容请求分发的负载平衡调度方法,并在Linux内核中实现了这些方法,将一组服务器构成一个实现可伸缩的、高可用网络服务的虚拟服务器。


    项目目标:使用集群技术和Linux操作系统实现一个高性能、高可用的服务器,它具有很好的伸缩性、可靠性和可管理性。


二、LVS(Linux Virtual Server)体系结构:

spacer.gif        wKiom1cu6y3io8y2AAB6Srku99g230.jpg

                                    (该图片来源于网络)


    Load Balancer:是整个集群对外的前端机,由一台或者多台负载调度器(Director Server)组成,负责将客户的请求分发到Server Cluster的服务器上执行,而客户认为服务是来自一个IP地址(虚拟IP地址)。调度器是服务器集群系统的唯一的入口点,它可以采用IP负载均衡技术、基于内容请求分发技术或者两者相结合。它的所有操作都是在Linux操作系统的内核中完成,开销很小,具有很高的吞吐率。

    Server Cluster:是由多个Real Server通过高速的LAN或分布在各地的WAN相连接组成的,服务器池的服务器数目是可变的。当负载超过目前所有服务器的处理能力时,可以在服务器池中增加服务器来增加处理能力以解决此问题。


    Storage:为所有的Real Server提供共享的存储区,可以让服务器拥有相同的内容,提供相同的服务。


三、LVS(Linux Virtual Server)的内核模型:

wKioL1cu7N3gLTmnAABur1Hvpmk534.png

    1、当客户端的请求到达负载调度器时,首先到达PREROUTING链;

    2、当该请求数据包的目的地址是本机时,将数据包通过PREROUTING链送往INPUT链;

    3、当数据包到达INPUT链时,IPVS会对数据包进行检查,数据包的目的地址和端口不在规则内的话,数据包被送往用户空间;

    4、如果数据包的目的地址和端口在规则内,那么将修改该数据包的目的地址为Real Server中某一选定好的的服务器的地址,并把该数据包送往POSTROUTING链;

    5、该数据包通过POSTROUTING链发送到Real Server中选定好的服务器。


    注:ipvsadm:用户空间的命令行工具,用于管理集群服务及集群服务上的Real Server等;

        ipvs:工作于内核上的INPUT链上的程序代码,其集群功能依赖于ipvsadm定义的集群服务器规则。


四、LVS(Linux Virtual Server)的类型:

    1、VS/NAT技术(Virtual Server via Network Address Translation):

    wKiom1cu8q6R30sJAACnqA4h99s820.jpg

(该图片来源于网络)

    

    2、VS/DR(Virtual Server via Direct Routing):

    wKioL1cu8_HQkjYuAACzH2kj6gw326.jpg

(该图片来源于网络)


    3、VS/TUN(Virtual Server via IP Tunneling):

    wKioL1cu9H7gwEApAAC0kcML3jE463.jpg

(该图片来源于网络)