001.LVS简介及算法

一 LVS简介

1.1 LVS介绍

LVS是linux virtual server的简写linux虚拟服务器,是一个虚拟的服务器集群系统,可以再unix/linux平台下实现负载均衡集群功能。

使用LVS需要达到的目标是:通过LVS提供的负载均衡技术和Linux操作系统实现一个高性能、高可用的服务器群集,它具有良好的可靠性,可扩展性和可操作性,从而以低廉的成本实现最优的服务性能。

1.2 LVS主要作用

作用:提供一种廉价、有效、透明的方法,来扩展网络设备和服务器的负载带宽、增加吞吐量,加强网络数据处理能力、提高网络的灵活性和可用性。

1)把单台计算机无法承受的大规模的并发访问或数据流量分担到多台节点设备上分别处理,减少用户等待响应的时间,提升用户体验。

2)单个重负载的运算分担到多台节点设备上做并行处理,每个节点设备处理结束后,将结果汇总,返回给用户,系统处理能力得到大幅度提高。

3)7*24小时的服务保证,任意一个或多个设备节点设备宕机,不能影响到业务。在负载均衡集群中,所有计算机节点都应该提供相同的服务,集群负载均衡获取所有对该服务的如站请求。

1.3 LVS体系结构

LVS集群系统由三部分组成:最前端的负载均衡层(Load Balancer)、中间的服务器群组层(Server Array)、最底层的数据存储共享层(Shared Storage)。

负载均衡层:位于整个集群最前端,由一台或多台负载调度器(Director Server)组成,LVS模块就安装在负载调度器上,其主要作用类似于路由器,具有完成LVS功能所设定的路由表,从而把用户的请求发送到服务器群组层的 应用服务器(Real Server)上。

服务器群组层:由一组实际运行应用服务的机器组成,Real Server可以是Web服务器、Mail服务器、FTP服务器、DNS服务器的一个或多个,每个Real Server之间通过高速LAN或分部不同区域的WAN连接起来。实际环境中,Director Server也可以同时兼任Real Server角色。

共享存储层:为所有Real Server提供共享存储空间和内容一致性的存储区域,在物理上一般由磁盘阵列设备组成。为了内容的一致性,一般可通过NFS共享存储,也支持GFS、OCFS2等文件系统。

二 LVS工作模式

  1. VS/NAT模式(Network address translation)
  2. VS/TUN模式(tunneling)
  3. DR模式(Direct routing)

2.1 VS/NAT-NAT模式:网络地址转换Virtualserver via Network address translation

通过网络地址转换的方法来实现调度。

首先调度器(LB)接收到客户的请求数据包时,根据调度算法决定将请求发送给哪个后端的真实服务器(RS)。然后调度就把客户端发送的请求数据包的目标IP地址及端口改成后端真实服务器的IP地址(RIP),则真实服务器(RS)就能够接收到客户的请求数据包了。真实服务器响应完请求后,查看默认路由,把响应后的数据包发送给LB,LB再接收到响应包后,把包的源地址改成虚拟地址(VIP)然后发送回给客户端。

注意:

请求的目的IP为VIP;

NAT模式下我们需要把RS的默认路由设置为LB服务器。

调度过程IP包详细图:

原理图简述:

  1. 客户端请求数据,目标IP为VIP。
  2. 请求数据到达LB服务器,LB根据调度算法将目的地址修改为RIP地址及对应端口(此RIP地址根据调度算法得出)并在连接HASH表中记录下这个连接。
  3. 数据包从LB服务器到达RS服务器webserver,然后webserver进行响应。Webserver的网关必须是LB,然后将数据返回给LB服务器。
  4. 收到RS的返回后的数据,根据连接HASH表修改源地址VIP,目标地址修改CIP,及对应端口80.然后数据就从LB出发到达客户端。
  5. 客户端收到的就只能看到VIP\DIP信息。

NAT模式优缺点:

  1. NAT技术请求报文和响应报文都需要经过LB进行地址改写,因此网站访问量比较大的时候LB负载均衡调度器有比较大的瓶颈,一般要求最多只能10-20台节点;
  2. 只需要在LB上配置一个公网IP地址就可以了;
  3. 每台内部的节点服务器的网关地址必须是调度器LB的内网地址;
  4. NAT模式支持对IP地址和端口进行转换,即用户请求的端口和真实服务器的端口可以不一致。

2.2 TUN模式:virtual server via ip tunneling模式

采用NAT模式时,由于请求和响应报文必须通过调度器地址重写,当客户请求过多时,调度器处理能力将成为瓶颈。为了解决这个问题,调度器把请求的报文通过IP隧道转发到真实服务器。真实服务器将响应处理后的数据直接返回给客户端。即调度器就只处理请求入站报文,由于一般网络服务应答数据比请求报文大很多,采用VS/TUN模式后,集群系统的最大吞吐量可以提高10倍。

注意:RS节点服务器需要在本地回环接口配置VIP。

VS/TUN调度过程IP包详细图:

原理图过程简述:

  1. 客户请求数据包,目标地址VIP发送到LB上。
  2. LB接收到客户请求包,进行IP Tunnel封装,即在原有的包头加上IP Tunnel的包头。
  3. RS节点服务器根据IP Tunnel包头信息(即逻辑上的隐形隧道,只有LB和RS之间匹配)收到请求包,然后解开IP Tunnel包头信息,得到客户的请求包并进行响应处理。
  4. 响应处理完毕之后,RS服务器使用RS出公网的线路,将响应数据包发送给客户端,源IP地址依旧为VIP地址。

TUN模式优缺点:

  1. VS/TUN模式和NAT模式不同的是,它在LB和RS之间的传输不用改写IP地址。
  2. 将客户请求包封装在一个IP tunnel里面,然后发送给RS节点服务器,节点服务器接收到之后解开IP tunnel后,进行响应处理。
  3. 响应报文直接通过RS的外网地址发送给客户不用经过LB服务器。

2.3 DR模式:直接路由模式,Virtual server via direct routing

DR模式是通过改写请求报文的目标MAC地址,将请求发给真实服务器,而真实服务器响应后的处理结果直接返回给客户端用户。同TUN模式一样,DR模式可以极大的提高集群系统的伸缩性。而且DR模式没有IP隧道的开销,对集群中的真实服务器也没有必须支持IP隧道协议的要求。但是要求调度器LB与真实服务器RS都有一块网卡连接到同一物理网段上,必须在同一个局域网环境。

DR模式是互联网使用比较多的一种模式。

DR模式调度过程IP包详细图:

DR模式原理过程简述:

  1. 客户请求数据包,目标地址VIP发送到LB上。
  2. LB根据各个真实服务器的负载情况,连接数多少等,动态地选择一台服务器,不修改目标IP地址和目标端口,也不封装IP报文,而是将请求报文的数据帧的目标MAC地址改为真实服务器的MAC地址。
  3. 将修改的数据帧在服务器组的局域网上发送,因为数据帧的MAC地址是真实服务器的MAC地址,并且在同一个局域网。那么根据局域网的通讯原理,RS是一定能够收到由LB发出的数据包。
  4. 真实服务器接收到请求数据包,其IP包头的目标IP是VIP(RS的lo接口也必须配置此IP),处理之后直接将响应数据包通过自身的网络发送至客户,源IP地址为VIP。

DR模式优缺点:

1、通过在调度器LB上修改数据包的目的MAC地址实现转发,源地址仍然是CIP,目的地址仍然是VIP地址。

2、请求的报文经过调度器,而RS响应处理后的报文无需经过调度器LB,因此并发访问量大时使用效率很高(和NAT模式比)。

3、DR模式是通过MAC地址改写机制实现转发,因此所有RS节点和调度器LB只能在一个局域网里面。

4、RS主机需要绑定VIP地址在LO接口上,并且需要配置ARP抑制。

5、RS节点的默认网关不需要配置成LB,而是直接配置为上级路由的网关,能让RS直接和用户网络互通即可。

6、由于DR模式的调度器仅做MAC地址的改写,所以调度器LB就不能改写目标端口,那么RS服务器就得使用和VIP相同的端口提供服务。

三 调度算法

3.1 算法简介

Lvs的调度算法决定了如何在集群节点之间分布工作负荷。当director调度器收到来自客户端访问VIP的集群服务的入站请求时,director调度器必须决定哪个集群节点应该处理请求。

Director调度器用的调度方法基本分为两类:

固定调度算法:rr,wrr,dh,sh

动态调度算法:wlc,lc,lblc,lblcr

rr:轮询算法,它将请求依次分配给不同的rs节点,也就是RS节点中均摊分配。这种算法简单,但只适合于RS所有节点处理性能接近的情况。

wrr:加权轮训调度,它将依据不同RS的权值分配任务。权值较高的RS将优先获得任务,并且分配到的连接数将比权值低的RS更多。相同权值的RS得到相同数目的连接数。

dh:目的地址哈希调度(destination hashing)以目的地址为关键字查找一个静态hash表来获得所需RS。

sh:源地址哈希调度(source hashing)以源地址为关键字查找一个静态hash表来获得需要的RS。

wlc:加权最小连接数调度,假设各台RS的权值依次为Wi,当前tcp连接数依次为Ti,依次去Ti/Wi为最小的RS作为下一个分配的RS

lc:最小连接数调度(least-connection),IPVS表存储了所有活动的连接。LB会比较将连接请求发送到当前连接最少的RS。

lblc:基于地址的最小连接数调度(locality-based least-connection):将来自同一个目的地址的请求分配给同一台RS,此时这台服务器是尚未满负荷的。否则就将这个请求分配给连接数最小的RS,并以它作为下一次分配的首先考虑。

3.2 调度算法常用场景

  •       一般的网络服务,如http,mail,mysql等常用的LVS调度算法为:

a.基本轮询调度rr

b.加权最小连接调度wlc

c.加权轮询调度wrc

  • 基于局部性的最小连接lblc和带复制的给予局部性最小连接lblcr主要适用于web cache和DB cache
  • 源地址散列调度SH和目标地址散列调度DH可以结合使用在防火墙集群中,可以保证整个系统的出入口唯一。

参考:http://www.it165.net/admin/html/201401/2248.html

更多LVS知识参考官网:

http://www.linuxvirtualserver.org/zh/lvs1.html 项目介绍

http://www.linuxvirtualserver.org/zh/lvs2.html 体系结构

http://www.linuxvirtualserver.org/zh/lvs3.html 工作模式

http://www.linuxvirtualserver.org/zh/lvs4.html 算法调度

原文地址:https://www.cnblogs.com/itzgr/p/10158428.html

时间: 2024-09-30 10:15:39

001.LVS简介及算法的相关文章

LVS简介

----------------------------------- 一.LVS简介 二.LVS体系结构 三.LVS集群的特点 四.适用环境 五.ipvsadm常用命令 ----------------------------------- 一.LVS简介 LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器, 是一个由章文嵩博士发起的自由软件项目,它的官方站点是www.linuxvirtualserver.org.现在LVS已经是 Linux标准内核的一部分,在

LVS简介及其调度算法说明

LVS简介及其调度算法说明 虚拟服务器(LVS)的体系结构如图所示,一组服务器通过高速的局域网或者地理分布的广域网相互连接,在它们的前端有一个负载调度器(Load Balancer).负载调度器能无缝地将网络请求调度到真实服务器上,从而使得服务器集群的结构对客户是透明的,客户访问集群系统提供的网络服务就像访问一台高性能.高可用的服务器一样.客户程序不受服务器集群的影响不需作任何修改.系统的伸缩性通过在服务机群中透明地加入和删除一个节点来达到,通过检测节点或服务进程故障和正确地重置系统达到高可用性

LVS负载均衡(LVS简介、三种工作模式、、调度原理以及十种调度算法)

LVS简介 LVS(Linux Virtual Server)即Linux虚拟服务器,是由章文嵩博士主导的开源负载均衡项目,目前LVS已经被集成到Linux内核模块中.该项目在Linux内核中实现了基于IP的数据请求负载均衡调度方案,其体系结构如图1所示,终端互联网用户从外部访问公司的外部负载均衡服务器,终端用户的Web请求会发送给LVS调度器,调度器根据自己预设的算法决定将该请求发送给后端的某台Web服务器,比如,轮询算法可以将外部的请求平均分发给后端的所有服务器,终端用户访问LVS调度器虽然

LVS负载均衡(LVS简介、三种工作模式、十种调度算法)《转》

一.LVS简介 LVS(Linux Virtual Server)即Linux虚拟服务器,是由章文嵩博士主导的开源负载均衡项目,目前LVS已经被集成到Linux内核模块中.该项目在Linux内核中实现了基于IP的数据请求负载均衡调度方案,其体系结构如图1所示,终端互联网用户从外部访问公司的外部负载均衡服务器,终端用户的Web请求会发送给LVS调度器,调度器根据自己预设的算法决定将该请求发送给后端的某台Web服务器,比如,轮询算法可以将外部的请求平均分发给后端的所有服务器,终端用户访问LVS调度器

001.Redis简介及安装

原文:001.Redis简介及安装 一 Redis简介 1.1 Redis 简介 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis 与其他 key-value 缓存产品有以下三个特点: Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用. Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储. Redis支持数据的备份,即master-sla

001.HAProxy简介

一 HAProxy简介 HAProxy是可提供高可用性.负载均衡以及基于TCP(从而可以反向代理mysql等应用)和HTTP应用的代理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案.HAProxy非常适用于并发大(并发达1w以上)web站点,这些站点通常又需要会话保持或七层处理.HAProxy的运行模式使得它可以很简单安全的整合至当前的架构中,同时可以保护web服务器不被暴露到网络上. HAProxy实现了一种事件驱动.单一进程模型,此模型支持非常大的并发连接数.多进程或多线程模型受内存限

001 Windows 简介

001 Windows简介 #Windows 简介 Windows版本历史 16位图形用户界面 16位和32位混合操作系统 64位操作系统 移动设备操作系统 NT架构 #Windows与编程语言 Windows API SDK&API&MFC SDK (SoftWare Development Kit) API (Application Programming Interface) MFC (Microsoft Foundation Classes) Windows API分类 基础服务

卡尔曼滤波简介及其算法实现代码(C++/C/MATLAB)

卡尔曼滤波器简介 近来发现有些问题很多人都很感兴趣.所以在这里希望能尽自己能力跟大家讨论一些力所能及的算法.现在先讨论一下卡尔曼滤波器,如果时间和能力允许,我还希望能够写写其他的算法,例如遗传算法,傅立叶变换,数字滤波,神经网络,图像处理等等. 因为这里不能写复杂的数学公式,所以也只能形象的描述.希望如果哪位是这方面的专家,欢迎讨论更正. 卡尔曼滤波器 – Kalman Filter 一.什么是卡尔曼滤波器(What is the Kalman Filter?) 在学习卡尔曼滤波器之前,首先看看

负载均衡介绍、LVS介绍、算法介绍、LVS_NAT负载均衡模式配置

负载均衡 主流开源软件:LVS.keepalived.haproxy.nginx等:OSI层:LVS(4).nginx(7).haproxy(4.7):keepalived的负载均衡功能其实就是lvsLVS负载均衡可以分发除了80以外的其他端口通信,比如MySQL,而nginx仅仅支持http.https.mail: LVS介绍 最新版本:基于Linux内核2.6常见三种模式:NAT.DR.IP TunnelLVS架构中有一个核心角色叫分发器(Load Balance),用来分发用户的请求,还有