LVS集群技术
1、LVS#
1.1、LVS 是什么?#
LVS 是 Linux Virtual Server 的简称,也就是 Linux 虚拟服务器。现在 LVS 已经是 Linux 标准内核的一部分.
1.2、LVS 可以干什么?#
通过 LVS 提供的负载均衡技术和 Linux 操作系统实现一个高性能、高可用的服务器群集。它具有良好可靠性、可扩展性和可操作性。从而以低廉的成本实现最优的服务性能。
1.3、LVS 架设的服务器集群系统组成#
- Load Balancer 层
Load Balancer 是整个集群系统的前端,负责把客户请求转发到 Real Server 上。
Load Balancer 通过 Ldirectord 监测各 Real Server 的健康状况。在 Real Server 不可用时
把它从群中剔除,恢复时重新加入。
- Load Balancer 由一台或者多台负载调度器(Director Server)组成。
- Director 的主要作用类似于一个路由器,它含有完成 LVS 功能所设定的路由表,通过这些路由表把用户的请求分发给 Server Array 层的应用服务器(Real Server)上。
- 在 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 在繁忙的业务系统中,性能并不是很好,此时可以采用集群文件系统,例如 Red hat 的 GFS 文件系统,oracle 提供的 OCFS2 文件系统等。
二、负载均衡方案#
2.1 负载均衡技术的实现方案有以下几种:#
- 有基于 DNS 域名轮流解析的方法、
- 基于客户端调度访问的方法
- 基于应用层系统负载的调度方法
- 基于 IP 地址的调度方法
在这些负载调度算法中,执行效率最高的是 IP 负载均衡技术
2.2 IPVS 模块#
LVS 的 IP 负载均衡技术是通过 IPVS 模块来实现的,IPVS 模块是安装在 Director Server 上的。IPVS 模块它的主要作用是在 Director Server 上虚拟出一个 IP 地址,用户必须通过这个虚拟的 IP 地址访问服务 **。这个虚拟 IP 一般称为 LVS 的 VIP,即 Virtual IP。
访问的请求首先经过 VIP 到达负载调度器,然后由负载调度器从 Real Server 列表中选取一个服务节点响应用户的请求。
2.2.1 IPVS 的负载均衡#
当用户的请求到达负载调度器后,调度器如何将请求发送到提供服务的 Real Server 节点? |
IPVS 模块有三种实现负载均衡的机制,分别是 NAT、TUN 和 DR,详述如下:
- VS/NAT(Virtual Server via Network Address Translation)
网络地址翻译技术实现虚拟服务器,当用户请求到达调度器时,调度器将请求报文的目标地址(即虚拟 IP 地址)改写成选定的 Real Server 地址,同时报文的目标端口也改成选定的 Real Server 的相应端口,最后将报文请求发送到选定的 Real Server。在服务器端得到数据后,Real Server 返回数据给用户时,需要再次经过负载调度器将报文的源地址和源端口改成虚拟 IP 地址和相应端口,然后把数据发送给用户,完成整个负载调度过程。
- VS/TUN(Virtual Server via IP Tunneling)
IP 隧道技术实现虚拟服务器。与 NAT 方式就是报文转发方法不同,VS/TUN 方式中,调度器采用 IP 隧道技术将用户请求转发到某个 Real Server,而这个 Real Server 将直接响应用户的请求,不再经过前端调度器,此外,对 Real Server 的地域位置没有要求,可以和 Director Server 位于同一个网段,也可以是独立的一个网络。因此,在 TUN 方式中,调度器将只处理用户的报文请求,集群系统的吞吐量大大提高。
- VS/DR(Virtual Server via Direct Routing)
直接路由技术实现虚拟服务器,与前两种不同的也是转发方式。VS/DR 通过改写请求报文的 MAC 地址,将请求发送到 Real Server,而 Real Server 将响应直接返回给客户,免去了 VS/TUN 中的 IP 隧道开销。这种方式是三种负载调度机制中性能最高最好的,但是必须要求 Director Server 与 Real Server 都有一块网卡连在同一物理网段上。
负载调度器如何动态选择一台 Real Server 响应用户请求 |
取决于负载调度算法, IPVS 实现了十种负载调度算法,这里详细介绍最常用的四种调度算法:
轮叫调度(Round Robin)
“轮叫” 调度也叫 1:1 调度,调度器通过 “轮叫” 调度算法将外部用户请求按顺序 1:1 的分配到集群中的每个 Real Server 上,这种算法平等地对待每一台 Real Server,而不管服务器上实际的负载状况和连接状态。加权轮叫调度(Weighted Round Robin)
“加权轮叫” 调度算法是根据 Real Server 的不同处理能力来调度访问请求。可以对每台 Real Server 设置不同的调度权值,对于性能相对较好的 Real Server 可以设置较高的权值,而对于处理能力较弱的 Real Server,可以设置较低的权值,这样保证了处理能力强的服务器处理更多的访问流量。充分合理的利用了服务器资源。同时,调度器还可以自动查询 Real Server 的负载情况,并动态地调整其权值。最少链接调度(Least Connections)
“最少连接” 调度算法动态地将网络请求调度到已建立的链接数最少的服务器上。如果集群系统的真实服务器具有相近的系统性能,采用 “最小连接” 调度算法可以较好地均衡负载。加权最少链接调度(Weighted Least Connections)
“加权最少链接调度” 是 “最少连接调度” 的超集,每个服务节点可以用相应的权值表示其处理能力,而系统管理员可以动态的设置相应的权值,缺省权值为 1,加权最小连接调度在分配新连接请求时尽可能使服务节点的已建立连接数和其权值成正比。基于局部性的最少链接(Locality-Based Least Connections)
带复制的基于局部性最少链接(Locality-Based Least Connections with Replication)
目标地址散列(Destination Hashing )
源地址散列(Source Hashing)
最短期望延迟 (Shortest Expected Delay)
无须队列等待(Never Queue)
3. 高可用、高可靠体现在哪里#
3.1 高可用性#
LVS 是一个基于内核级别的应用软件,因此具有很高的处理性能,用 LVS 构架的负载均衡集群系统具有优秀的处理能力,每个服务节点的故障不会影响整个系统的正常使用,同时又实现负载的合理均衡,使应用具有超高负荷的服务能力,可支持上百万个并发连接请求。如配置百兆网卡,采用 VS/TUN 或 VS/DR 调度技术,整个集群系统的吞吐量可高达 1Gbits/s;如配置千兆网卡,则系统的最大吞吐量可接近 10Gbits/s。
3.2 高可靠性#
LVS 负载均衡集群软件已经在企业、学校等行业得到了很好的普及应用,国内外很多大型的、关键性的 web 站点也都采用了 LVS 集群软件,所以它的可靠性在实践中得到了很好的证实。有很多以 LVS 做的负载均衡系统,运行很长时间,从未做过重新启动。这些都说明了 LVS 的高稳定性和高可靠性。
3.3 适用环境#
LVS 对前端 Director Server 目前仅支持 Linux 和 FreeBSD 系统,但是支持大多数的 TCP 和 UDP 协议,支持 TCP 协议的应用有:HTTP,HTTPS ,FTP,SMTP,,POP3,IMAP4,PROXY,LDAP,SSMTP 等等。支持 UDP 协议的应用有:DNS,NTP,ICP,视频、音频流播放协议等。
LVS 对 Real Server 的操作系统没有任何限制,Real Server 可运行在任何支持 TCP/IP 的操作系统上,包括 Linux,各种 Unix(如 FreeBSD、Sun Solaris、HP Unix 等),Mac/OS 和 Windows 等。
参考资料:#
blog.51cto.com/ixdba/552947
zh.linuxvirtualserver.org/node/95
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: