标题：LVS
简介
LVS是Linux Virtual Server的简写，意即Linux虚拟服务器，是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立，是中国国内最早出现的自由软件项目之一。章文嵩博士目前工作于阿里集团，主要从事集群技术、操作系统、对象存储与数据库的研究。[1]
宗旨
使用集群技术和Linux操作系统实现一个高性能、高可用的服务器.
很好的可伸缩性（Scalability）
很好的可靠性（Reliability）
很好的可管理性（Manageability）。[1]
特点
可伸缩网络服务的几种结构，它们都需要一个前端的负载调度器（或者多个进行主从备份）。我们先分析实现虚拟网络服务的主要技术，指出IP负载均衡技术是在负载调度器的实现技术中效率最高的。在已有的IP负载均衡技术中，主要有通过网络地址转换（Network Address Translation）将一组服务器构成一个高性能的、高可用的虚拟服务器，我们称之为VS/NAT技术（Virtual Server via Network Address Translation）。在分析VS/NAT的缺点和网络服务的非对称性的基础上，我们提出了通过IP隧道实现虚拟服务器的方法VS/TUN （Virtual Server via IP Tunneling），和通过直接路由实现虚拟服务器的方法VS/DR（Virtual Server via Direct Routing），它们可以极大地提高系统的伸缩性。VS/NAT、VS/TUN和VS/DR技术是LVS集群中实现的三种IP负载均衡技术。
技术
【1】技术简介
LVS集群采用IP负载均衡技术和基于内容请求分发技术。调度器具有很好的吞吐率，将请求均衡地转移到不同的服务器上执行，且调度器自动屏蔽掉服务器的故障，从而将一组服务器构成一个高性能的、高可用的虚拟服务器。整个服务器集群的结构对客户是透明的，而且无需修改客户端和服务器端的程序。为此，在设计时需要考虑系统的透明性、可伸缩性、高可用性和易管理性。
【2】集群采用三层结构
一般来说，LVS集群采用三层结构，其主要组成部分为： 
A、负载调度器（load balancer），它是整个集群对外面的前端机，负责将客户的请求发送到一组服务器上执行，而客户认为服务是来自一个IP地址（我们可称之为虚拟IP地址）上的。
B、服务器池（server pool），是一组真正执行客户请求的服务器，执行的服务有WEB、MAIL、FTP和DNS等。 
C、共享存储（shared storage），它为服务器池提供一个共享的存储区，这样很容易使得服务器池拥有相同的内容，提供相同的服务。
【3】调度器
调度器是服务器集群系统的唯一入口点（Single Entry Point），它可以采用IP负载均衡技术、基于内容请求分发技术或者两者相结合。
在IP负载均衡技术中，需要服务器池拥有相同的内容提供相同的服务。当客户请求到达时，调度器只根据服务器负载情况和设定的调度算法从服务器池中选出一个服务器，将该请求转发到选出的服务器，并记录这个调度；当这个请求的其他报文到达，也会被转发到前面选出的服务器。在基于内容请求分发技术中，服务器可以提供不同的服务，当客户请求到达时，调度器可根据请求的内容选择服务器执行请求。因为所有的操作都是在Linux操作系统核心空间中完成的，它的调度开销很小，所以它具有很高的吞吐率。服务器池的结点数目是可变的。当整个系统收到的负载超过目前所有结点的处理能力时，可以在服务器池中增加服务器来满足不断增长的请求负载。
对大多数网络服务来说，请求间不存在很强的相关性，请求可以在不同的结点上并行执行，所以整个系统的性能基本上可以随着服务器池的结点数目增加而线性增长。 共享存储通常是数据库、网络文件系统或者分布式文件系统。服务器结点需要动态更新的数据一般存储在数据库系统中，同时数据库会保证并发访问时数据的一致性。静态的数据可以存储在网络文件系统（如NFS/CIFS）中，但网络文件系统的伸缩能力有限，一般来说，NFS/CIFS服务器只能支持3~6个繁忙的服务器结点。对于规模较大的集群系统，可以考虑用分布式文件系统，如AFS、GFS、Coda和Intermezzo等。分布式文件系统可为各服务器提供共享的存储区，它们访问分布式文件系统就像访问本地文件系统一样，同时分布式文件系统可提供良好的伸缩性和可用性。
【4】分布式锁管理器
此外，当不同服务器上的应用程序同时读写访问分布式文件系统上同一资源时，应用程序的访问冲突需要消解才能使得资源处于一致状态。这需要一个分布式锁管理器（Distributed Lock Manager），它可能是分布式文件系统内部提供的，也可能是外部的。开发者在写应用程序时，可以使用分布式锁管理器来保证应用程序在不同结点上并发访问的一致性。 
负载调度器、服务器池和共享存储系统通过高速网络相连接，如100Mbps交换网络、Myrinet和Gigabit网络等。使用高速的网络，主要为避免当系统规模扩大时互联网络成为整个系统的瓶颈。
【5】监视器
Graphic Monitor是为系统管理员提供整个集群系统的监视器，它可以监视系统的状态。Graphic Monitor是基于浏览器的，所以无论管理员在本地还是异地都可以监测系统的状况。为了安全的原因，浏览器要通过HTTPS（Secure HTTP）协议和身份认证后，才能进行系统监测，并进行系统的配置和管理。
优点
1、开源，免费
2、在网上能找到一些相关技术资源
3、具有软件负载均衡的一些优点
缺点
1、最核心的就是没有可靠的支持服务，没有人对其结果负责；
2、功能比较简单，支持复杂应用的负载均衡能力较差，如算法较少等；
3、开启隧道方式需重编译内核；
4、配置复杂；
5、主要应用于LINUX，目前没有专门用于WINDOWS的版本，不过可以通过配置，使windows成为LVS集群中的real server（win2008、win2008中）。

LVS 验证
1 LVS 工作原理和基本流程
LVS全称Layout Versus Schematics， 是 Dracula 的验证工具，用来验证版图和逻辑图是否匹配。LVS 在晶体管级比较版图和逻辑图的连接性，而且输出所有不一致的地方。Dracula 从图形系统中产生版图数据。Dracula 把 GDS2 格式的 Layout 文件转换为 Layout 网表，LOGLVS，Dracula网络编辑器，将 Schematic 或 CDL 描述的门级和晶体管级的网表转化为 LVS 网表。LVS 能够把每一个网络转化为一个电路模型。从一个电路的输入和输出开始，LVS 跟踪两种电路模型。Dracula 利用启发式每一次搜索电路的一步。首先，LVS 跟踪、I/O 模型，然后搜索要求最少回溯的路径。当 LVS 在跟踪的过程中检测到匹配的话，Dracula 就给这个匹配的器件和节点一个匹配的标识。当 LVS 检测到一个不匹配，它就停止在那个搜索的路径。如果 LVS 指定了所有的器件和给出了一个匹配的标识的话或者在搜索路径上没有一致的地方的话，LVS 会考虑到这两个模型的连续性。当 Dracula 检测到不一致的地方，它会以输出列表和图表形式表示出来。除了比较两个网络，LVS 也比较器件的衬底类型（在 COMS 电路中 NMOS 和 PMOS）和一些器件参数。
2 LVS 工具包括下列的检查

LVS 的错误类型
LVS 的错误类型大体分为两类：不一致的点和失配器件。不一致点可分为节点不一
致和器件不一致。节点不一致是指版图和逻辑图中各有一节点，这两个节点所连器件的
情况相似，但是又不完全相同。器件不一致是指版图和逻辑图各有一器件，这两个器件
相同，所连接的节点情况很相似，但又不完全相同。失配器件是指所有的器件在逻辑图
中有而在版图中没有，或在版图中有而在逻辑图中没有。具体来讲，LVS 的错误类型有
以下十五种：
1) 匹配的节点上没有器件；
2) 匹配的器件上有不匹配的节点；
3) 器件不匹配；
4) 匹配的节点上有多余的版图器件；
5) 匹配的节点上有多余的线路图器件；
6) 匹配的节点上有非匹配的版图和线路图器件；
7) 其他不匹配的版图器件；
8) 其他不匹配的线路图器件；
9) 器件的类型（N 型和 P 型，多晶电阻或扩散电阻）不匹配；
10) 器件得尺寸（W 或 L）不匹配；
11) MOS 可逆性错误；
12) 衬底连接不匹配；
13) 器件的电源连接不匹配（多电源供电的情况）；
14) 简化多个 MOS 拼接为单个 MOS 时出错（与 LVSCHK 中命令得 K 选项有关）；
15) 过滤多余的器件出错（与 LVSCHK 中命令的 F 选项有关）。
LVS 错误既指单个器件、单个节点，又指组合结构（子电路）。不匹配的子电路（子
电路中有多个器件和节点）往往只是其中的一个和几个节点或器件不匹配，并不是所有
的都不匹配。与一个不匹配点关联的一切器件和节点都作为错误的个数，LVS 报告文
件里分别列出了每一个不匹配点。错误报告与人们通常的理解有出入，例如：两根信号
线调换了位置，按常理来说，只能算一个错误，但 LVS 报告有两个错误。