Linux虚拟服务器(Linux Virtual Server,LVS),是一个由章文嵩开发的一款自由软件。利用LVS可以实现高可用、可伸缩的Web、Mail、Cache和Media等网络服务。并在此基础上开发支持庞大用户数的、可伸缩的、高可用的电子商务应用。通过LVS要实现的最终目标是:利用Linux操作系统和LVS集群软件实现一个高可用、高性能、低成本的服务器应用集群。


1、  LVS集群的组成

    利用LVS架设的服务器集群系统由3个部分组成:最前端的是负载均衡层(这里用Load Balancer表示),中间是服务器集群组层(用Real Server表示),底层是数据共享存储层(用Shared Storage表示)。在用户看来,整个LVS集群系统的所有内部应用结构都是透明的,最终用户只是在使用一个虚拟服务器提供的高性能服务。


  • 负载均衡层:(Director Server)组成。LVS核心模版IPVS就安装在Director Server上,而Director的主要作用类似于一个路由器,它包含为完成LVS功能所设定的路由表,通过这些路由表把用户的请求分发给服务器组层的应用服务器(Real Server)。同时,在Director Server上还要安装对Real Server的监控模块(Ldirectord),此模块用于检测各个Real Server服务的监控状况。在Real Server不可用时可用将其从LVS路由表中剔除,在恢复时重新加入。

  • 服务器群组层:由一组实际运行应用服务的机器组成,Real Server可以是Web服务器、Mail服务器、FTP服务器、DNS服务器、视频服务器中的一个或多个,每个Real Server之间通过高速的LAN或分布在各地的WAN相连接。在实际的应用中,Director Server也可以同时兼任Real Server的角色。

  • 共享存储层:是为所有Real Server提供共享存储空间和内容一致性的存储区域,一般由磁盘阵列设备组成,为了提供内容的一致性,一般可以通过NFS网络文件系统共享数据,但是NFS在繁忙的业务系统中,性能并不是很好,此时可以采用集群文件系统,例如Red Hat的GFS文件系统,Oracle提供的OCFS2文件系统等。


从整个LVS结构可以看出,Director Server是整个LVS的核心。目前,用于Director Server的操作系统只有Linux和FreeBSD,Linux 2.6 内核完全内置了LVS的各个模块,不用任何设置就可以支持LVS功能。


2、IP负载均衡技术

    LVS的IP负载均衡技术是通过IPVS模块来实现的。IPVS是LVS集群系统的核心软件,它的主要作用是:安装在Director Server上,同时在Director Server上虚拟出一个IP地址,用户必须通过这个虚拟的IP地址访问服务器。这个虚拟IP一般称为LVS的VIP,即Virtual IP。访问的请求首先经过VIP到达负载调度器,然后由负载调度器从Real Server列表中选取一个服务节点响应用户的请求。

    在用户的请求到达负载调度器后,调度器如何将请求发送到提供服务的Real Server节点,而Real Server节点如何返回数据给用户,是IPVS实现的重点技术。IPVS实现负载均衡的方式有3种,分别是NAT、TUN和DR。


11.1.3 负载调度算法

    IPVS实现了10种负载调度算法:

静态调度:

  • rr(Round Robin):轮询调度,轮叫调度

  • wrr(weight Round Robin):加权轮叫调度(以权重之间的比例实现在各主机之间进行调度)

  • sh(source hashing):源地址散列。主要实现会话绑定,能够将此前建立的session信息保留了

  • Dh(Destination hashing):目标地址散列。把同一个IP地址的请求,发送给同一个server

动态调度:

  • lc(Least-Connection):最少连接

  • wlc(Weighted Least-Connection):加权最少连接

  • sed(Shortest Expected Delay):最短期望延迟

  • nq(never queue):永不排队(改进的sed)

  • LBLC(Locality-Based Least Connection):基于局部性的最少连接

  • LBLCR(Locality-Based Least Connections with Replication):带复制的基于局部性最少链接


参考:http://blog.csdn.net/scape1989/article/details/21085659