LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器。也是国人章文嵩博士发起的一个开源项目,现在LVS已经是Linux内核标准的一部分。利用LVS技术可以实现高性能,高可压缩的网络服务,例如www服务,FTP服务,MAIL服务等。
使用LVS架设的服务器集群系统有三个部分组成:最前端的负载均衡层(Loader Balancer),中间的服务器群组层,用Server Array 表示,最底层的数据共享存储层,用Shared Storage表示。在用户看来所有的应用都是透明的,用户只是在使用一个虚拟服务器提供的高性能服务。
Load Balancer层:位于整个集群系统的最前端,有一台或者多台负载调度器(Director Server)组成,LVS模块就安装在Director Server 上,而Director 的主要作用类似于一个路由器,它含有完成LVS功能所设定的路由表,通过这些路由表把用户的请求分发给Server Array层的应用服务器上。同时,在Director Server上还要安装对Real Server服务的监控模块Ldirectord,此模块用于监测各个Real Server服务的健康状况。在Real Server不可用时把它从LVS路由表中剔除,恢复时加入。
Server Array层:由一组实际运行应用服务的机器组成,Real Server可以是WEB服务器、MAIL服务器、FTP服务器、DNS服务器、时评服务器中的一个或多个,每个Real Server之间通过高速的LAN或分布在各地的wan相连接。在实际的应用中,Director Server也可以同时兼任Real Server的角色。
Shared Storage层:是为所有Real Server提供共享存储空间和内容一致性的存储区域,在物理上,一般有磁盘阵列设备组成,为了提供内容的一致性,一般可以通过NFS网络文件系统共享数据,但是NFS在繁忙的业务系统中,性能并不是很好,此时可以采用集群文件系统。
从整个LVS结构可以看出,Director Server是整个LVS的核心,对于Real Server,可以是所有的系统平台,Linux、windows、Solaris、AIX、BSD系列都能很好的支持。
(1)静态
wrr 加权轮循调度 (Weighted Round-Robin Scheduling)
sh 源地址散列调度 (Source Hashing Scheduling)
dh 目的地址散列调度 (Destination Hashing Scheduling)
(2)动态
wlc 加权最小连接调度 (Weighted Least-Connection Scheduling)
sed 最短预期延时调度 (Shortest Expected Delay Scheduling)
nq 不排队调度 (Never Queue Scheduling)
lblc 基于局部性的最少连接调度 (Locality-Based Least Connections Scheduling)
lblcr 带复制的基于局部性的最少连接调度 (Locality-Based Least Connections with Replication Scheduling)
(1)IPVS/NAT
网络结构图:
负载均衡内核空间原理图
IPVS/NAT模式的基本原理
首先CIP发送请求package给VIP,VIP收到package后,会根据LVS设置的LB算法选择一个合适的RS?然后把package的目标IP修改为RIP,RIP收到这个package后判断目标ip为自己,就处理这个package,处理完后把这个包发送给LVS VIP,LVS 收到这个package 后把sorce ip改成VIP的IP,dst ip改成 CIP,然后发给CIP。其中的转换我们可以这样理解:所有发送到VIP的数据包全部转换为RIP的地址以及对应端口。IPVS/NAT模式优缺点
优点:
缺点:
(2)IPVS/DR
网络结构图
IPVS/DR模式的基本原理
LVS节点接收到请求报文后,会改写报文的数据链路层格式。将VIP MAC写成RIP的Mac,但是网络层和传输层报文不会改写,然后重新回发给交换机。这里就涉及一个问题,现在RIP和 IP的对应关系的错误的,这个数据报文到了交换机后,由于这种错位的关系,是不能进行三层交换的,只能进行二层交换(一旦进行IP交换,数据报文的验证就会出错,被丢弃)。所以LVS-DR方式要求Real Server和LVS节点必须在同一个局域网内,或者这样说更确切:LVS节点需要找到一个二层链路,将改写了Mac地址的报文发送给Real Server,而不能进行三层交换的校验。
简单来说就是CIP发送一个PV请求给VIP,VIP收到这个请求后会跟LVS设置的LB算法选择一个LB比较合理的realserver,然后将此请求的package的MAC地址修改为realserver的MAC地址;VIP会把这个包广播到当前这个LAN里面,所以,要提前保证VIP和所有的realserver在同一个网段
IPVS/DR 模式的优缺点
优点
缺点
(3)IPVS/TUN
首先这里需要理解以下关于IP隧道的概念
将一个完整的IP报文封装成另一个新的IP报文的数据部分,并通过路由器传送到指定的地点。在这个过程中路由器并不在意被封装的原始协议的内容。到达目的地点后,由目的地方依靠自己的计算能力和对IP隧道协议的支持,打开封装协议,取得原始协议。如图:
其实数据转发原理和DR是一样的,不过这个我个人认为主要是位于不同位置(不同机房);LB是通过隧道进行了信息传输,虽然增加了负载,可是因为地理位置不同的优势,还是可以参考的一种方案;
优点
缺点