LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器。这是一个由章文嵩博士发起的一个开源项目,本文介绍了一些关于LVS的基本概念。
一、LVS概念
LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器。这是一个由章文嵩博士发起的一个开源项目,它的官方网站是http://www.linuxvirtualserver.org/
.现在LVS已经是Linux内核标准的一部分。
使用LVS可以达到的技术目标是:通过LVS达到的负载均衡技术和Linux操作系统实现一个高性能高可用的Linux服务器群集,它具有良好的可靠性,可拓展性和可操作性。从而以低廉的成本实现最优的性能。
LVS从1998年开始,发展到现在已经是一个比较成熟的项目了。利用LVS技术可以实现高性能,高可压缩的网路服务,例如WWW服务,FTP服务,MAIL服务等。比较著名的就是www.linux.com以及www.real.com.
二、LVS的体系架构
使 用LVS架设的服务器集群系统有三个部分组成:最前端的负载均衡层(Loader Balancer),中间的服务器群组层,用Server
Array表示,最底层的数据共享存储层,用Shared
Storage表示。在用户看来所有的应用都是透明的,用户只是在使用一个虚拟服务器提供的高性能服务。
LVS的体系架构如图:
LVS的各个层次的详细介绍:
Load Balancer层:位于整个集群系统的最前端,有一台或者多台负载调度器(Director
Server)组成,LVS模块就安装在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文件系统等。
从整个LVS结构可以看出,Director Server是整个LVS的核心,目前,用于Director
Server的操作系统只能是Linux和FreeBSD,linux2.6内核不用任何设置就可以支持LVS功能,而FreeBSD作为
Director Server的应用还不是很多,性能也不是很好。对于Real
Server,几乎可以是所有的系统平台,Linux、windows、Solaris、AIX、BSD系列都能很好的支持。
三、 LVS集群的特点
3.1 IP负载均衡与负载调度算法
1.IP负载均衡技术
负载均衡技术有很多实现方案,有基于DNS域名轮流解析的方法、有基于客户端调度访问的方法、有基于应用层系统负载的调度方法,还有基于IP地址的调度方法,在这些负载调度算法中,执行效率最高的是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实现负载均衡机制有三种,分别是NAT、TUN和DR,详述如下:
VS/NAT: 即(Virtual Server via Network Address Translation)
也就是网络地址翻译技术实现虚拟服务器,当用户请求到达调度器时,调度器将请求报文的目标地址(即虚拟IP地址)改写成选定的Real
Server地址,同时报文的目标端口也改成选定的Real Server的相应端口,最后将报文请求发送到选定的Real
Server。在服务器端得到数据后,Real
Server返回数据给用户时,需要再次经过负载调度器将报文的源地址和源端口改成虚拟IP地址和相应端口,然后把数据发送给用户,完成整个负载调度过
程。可以看出,在NAT方式下,用户请求和响应报文都必须经过Director
Server地址重写,当用户请求越来越多时,调度器的处理能力将称为瓶颈。
VS/TUN :即(Virtual Server via IP Tunneling)
也就是IP隧道技术实现虚拟服务器。它的连接调度和管理与VS/NAT方式一样,只是它的报文转发方法不同,VS/TUN方式中,调度器采用IP隧道技术
将用户请求转发到某个Real Server,而这个Real Server将直接响应用户的请求,不再经过前端调度器,此外,对Real
Server的地域位置没有要求,可以和Director
Server位于同一个网段,也可以是独立的一个网络。因此,在TUN方式中,调度器将只处理用户的报文请求,集群系统的吞吐量大大提高。
VS/DR: 即(Virtual Server via Direct Routing)
也就是用直接路由技术实现虚拟服务器。它的连接调度和管理与VS/NAT和VS/TUN中的一样,但它的报文转发方法又有不同,VS/DR通过改写请求报
文的MAC地址,将请求发送到Real Server,而Real
Server将响应直接返回给客户,免去了VS/TUN中的IP隧道开销。这种方式是三种负载调度机制中性能最高最好的,但是必须要求Director
Server与Real Server都有一块网卡连在同一物理网段上。
2.负载调度算法
上面我们谈到,负载调度器是根据各 个服务器的负载情况,动态地选择一台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),对于这四种调度算法的含义,本文不再讲述,如果想深入了解这其余四种调度策略的话,可以登陆LVS中文站点
zh.linuxvirtualserver.org,查阅更详细的信息。
3.2 高可用性
LVS是一个基于内核级别的应用
软件,因此具有很高的处理性能,用LVS构架的负载均衡集群系统具有优秀的处理能力,每个服务节点的故障不会影响整个系统的正常使用,同时又实现负载的合
理均衡,使应用具有超高负荷的服务能力,可支持上百万个并发连接请求。如配置百兆网卡,采用VS/TUN或VS/DR调度技术,整个集群系统的吞吐量可高
达1Gbits/s;如配置千兆网卡,则系统的最大吞吐量可接近10Gbits/s。
3.3 高可靠性
LVS负载均衡集群软
件已经在企业、学校等行业得到了很好的普及应用,国内外很多大型的、关键性的web站点也都采用了LVS集群软件,所以它的可靠性在实践中得到了很好的证
实。有很多以LVS做的负载均衡系统,运行很长时间,从未做过重新启动。这些都说明了LVS的高稳定性和高可靠性。
3.4 适用环境
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等。
3.5 开源软件
LVS集群软件是按GPL(GNU Public License)许可证发行的自由软件,因此,使用者可以得到软件的源代码,并且可以根据自己的需要进行各种修改,但是修改必须是以GPL方式发行。
分享到:
相关推荐
这份文档提供了LVS的基本介绍,包括其工作原理、主要功能和优势。LVS利用IP层或TCP层的负载均衡技术,通过调度器将来自客户端的请求分发到后端的真实服务器上,以实现高并发处理能力和故障切换能力。 2. **LVS手册...
本文详细介绍了如何搭建LVS集群环境,包括理解LVS的重要性及其与Nginx的区别,以及如何通过ipvsadm进行具体的配置操作。通过学习本文,读者可以掌握LVS集群的基本配置方法,并将其应用于实际的项目中,提升系统的...
LVS可以采用以下两种基本架构: - **全虚拟化模型(Full NAT Model)**:所有服务器都被映射到同一VIP(虚拟IP)下,客户端无法直接识别真实服务器。 - **IP透明代理模型(IP Transparency Model)**:客户端可以...
Linux LVS(Linux Virtual Server)是一种高性能的网络负载均衡技术,它通过在内核级别实现虚拟服务器集群,将流入的网络...通过学习和实践本文档,读者将能够掌握基本的LVS安装和配置,为后续的高级应用打下坚实基础。
首先,Piranha方案的基本介绍包含了其配置的简洁性、高效性以及其完整的功能。Piranha的配置文件只有一个lvs.conf,类似于keepalived方案,这样的配置方式简化了操作,对于初次接触LVS配置的人员来说非常友好。同时...
本文将详细介绍如何搭建一个基本的LVS集群环境,并解释每一步的具体操作与目的。 #### 二、环境准备 为了搭建LVS集群,首先需要准备以下几部分环境: 1. **客户端(Client)**:IP地址为`192.168.1.7`。 2. **默认...
本教程将详细介绍LVS的安装、配置过程,并对其中涉及的负载均衡算法进行深入解析。 ### 一、LVS安装 在大多数Linux发行版中,LVS并不是默认安装的组件。你可以通过以下步骤在系统中安装LVS: 1. 更新包列表:`...
#### 二、LVS软件介绍 **Linux Virtual Server (LVS)** 是一套开源软件,用于构建高性能和高可用性的服务器集群。它最初由张文嵩博士于国防科技大学期间创立。 - **目标**:LVS旨在利用Linux操作系统和LVS集群软件...
本文详细介绍了LVS的基本概念、工作原理以及三种工作模式的特点,并给出了VS/NAT模式的具体配置实例。通过这些知识点的学习,可以帮助读者更好地理解和掌握LVS的相关技术,并能够实际操作和配置LVS负载均衡系统。
- **基本 LVS 配置**: - 定义了 LVS 基础配置的概念,包括前端调度器、真实服务器和负载均衡策略。 - **数据复制与共享**:介绍了在不同真实服务器之间进行数据复制和共享的方法,确保数据的一致性和完整性。 - ...
本文详细介绍了LVS-DR模式的基本原理及其配置方法,通过具体的操作过程和配置实例,帮助读者深入了解LVS-DR的工作机制。LVS-DR模式由于其高效的数据转发能力和低延迟特性,在实际的应用场景中得到了广泛的应用。此外...
本操作手册将详细介绍如何配置LVS,包括安装系统和工具、内核参数调整、Sysctl配置、网卡参数设置、关闭特定服务、LocalAddress配置、Zebra与OSPF配置以及Keepalived的使用。 **一、安装系统和工具** 在开始配置前...
本篇文档主要介绍如何在 LVS 环境中安装 Piranha,并配置基本的服务。 #### 二、环境准备与基础配置 根据提供的信息,我们有以下几台机器: - **LVS1**: 192.168.1.51 - **LVS2**: 192.168.1.52 - **RS1**: 192....
书中首先介绍了LVS的基本配置,包括如何搭建一个简单的LVS集群,涉及的数据复制和数据共享机制,确保了不同真实服务器之间的数据一致性。 ### 三层LVS配置 随后,书本进一步讨论了更为复杂的三层LVS配置模型,即...
在本文档中,我们将介绍如何使用 LVS+Keepalived 实现网站负载均衡。我们的拓扑图如下所示: * LVS(master):eth0:172.24.100.6, eth1:202.168.128.101 * LVS(backup):eth0:172.24.100.7, eth1:202.168.128....
本文将详细介绍如何通过配置LVS(Linux Virtual Server)集群来实现大流量Web架构,重点包括LVS的基本原理、集群配置步骤以及实际操作命令等内容。 #### LVS集群配置概述 LVS是一种基于Linux内核的负载均衡技术,...