LVS基本原理

LVS基本原理

简介

负载调度器、真实服务器群节点一起被称为LVS。LVS负载调度器(有时也称为负载平衡器),接收所服务的所有接入服务集群的请求,并决定集群中的哪个节点应该回复其请求。

1)负载调度器(Director):作为整个集群的前端,主要将用户请求分发至真实服务器中进行处理。

2)真实服务器池:由多个功能相同的真实服务器组成,为用户提供真正的网络服务,如Web服务、邮件服务等。且虚拟服务器集群作为一个可伸缩的集群,可自由添加或删除真实服务器而并不影响整个集群的正常工作。

3)共享存储:作用就是让每一个用户访问的资源都是一样的。服务器支持写操作,才建议使用。

一、LVS集群架构

用户(CIP,源IP)通过层层路由的Internet网络与负载均衡器(VIP,服务客户端的IP)联系,负载均衡器通过(DIP,与后端通信的IP)经过交换机(局域网)或路由器(Internet)连接。

在数据的传递过程中,发向真实服务器的入站数据先到达VIP,经过负载均衡器及到达DIP,最后到达真实服务器的RIP。

二、LVS在内核中的过程

1、当用户向负载均衡调度器(Director Server)发起请求,调度器将请求发往至内核空间

2、PREROUTING链首先会接收到用户请求,判断目标IP确定是本机IP,将数据包发往INPUT链

3、IPVS是工作在INPUT链上的,当用户请求到达INPUT时,IPVS会将用户请求和自己已定义好的集群服务进行比对,如果用户请求的就是定义的集群服务,那么此时IPVS会强行修改数据包里的目标IP地址及端口,并将新的数据包发往POSTROUTING链

4、POSTROUTING链接收数据包后发现目标IP地址刚好是自己的后端服务器,那么此时通过选路,将数据包最终发送给后端的服务器

三、lvs的组成

lvs有两段代码组成,ipvsadm和ipvs

ipvs(ip virtual server):一段代码工作在内核空间,叫ipvs,是真正生效实现调度的代码。

ipvsadm:另外一段是工作在用户空间,叫ipvsadm,负责为ipvs内核框架编写规则,定义谁是集群服务,而谁是后端真实的服务器(Real Server)。

四、lvs集群的类型

在LVS集群中,集群作为一个整体,通常使用负载均衡器(Director)作为 与外部通讯的中介,因此把如何将数据从外部请求经由负载均衡器转发至内部真实服务器的方式作为对LVS集群分类的依据。目前LVS数据转发主要有三种方式:网络地址转换(LVS-NAT),直接路由(LVS-DR)和IP隧道(LVS-TUN)。即使在一个负载均衡器上可以实现多种转发方法,一般在实际的使用中我们只选择其中一种转发方式。

在实除的集群部署中,我们发现与LVS配合使用的最佳的转发方法是LVS-DR,而其中最容易构建的方式是LVS-NAT。然而一般情况下,在使用LVS集群处理关键的数据转发时,我们不会用到LVS-TUN,因为LVS-TUN的转发方法允许真实服务器和负载均衡器在不同的物理网段中,这使得只要断开了负载均衡器和真实服务器之间的连接,客户端计算机发出的请求兢会丢失,从而增加整个集群发生崩溃的可能性。

1)直接路由(LVS-DR)

①、当用户请求到达Director Server,此时请求的数据报文会先到内核空间的PREROUTING链。 此时报文的源IP为CIP,目标IP为VIP 。

②、PREROUTING检查发现数据包的目标IP是本机,将数据包送至INPUT链

③、IPVS比对数据包请求的服务是否为集群服务,若是,将请求报文中的源MAC地址修改为DIP的MAC地址,将目标MAC地址修改RIP的MAC地址,然后将数据包发至POSTROUTING链。 此时的源IP和目的IP均未修改,仅修改了源MAC地址为DIP的MAC地址,目标MAC地址为RIP的MAC地址

④、由于DS和RS在同一个网络中,所以是通过二层来传输。POSTROUTING链检查目标MAC地址为RIP的MAC地址,那么此时数据包将会发至Real Server。

⑤、RS发现请求报文的MAC地址是自己的MAC地址,就接收此报文。处理完成之后,将响应报文通过lo接口传送给eth0网卡然后向外发出。 此时的源IP地址为VIP,目标IP为CIP

⑥、响应报文最终送达至客户端

特点:多了一个mac地址,作用是让rs可以找到客户端,直接发送响应报文,并且整个过程的客户端ip(cip)和负载均衡器的ip都没有改变,只是mac地址变了,目的是让客户知道,你发送请求的报文,和响应你报文的是一个人。

2)网络地址转换(LVS-NAT)

①、当用户请求到达Director Server,此时请求的数据报文会先到内核空间的PREROUTING链。 此时报文的源IP为CIP,目标IP为VIP 。

②、PREROUTING检查发现数据包的目标IP是本机,将数据包送至INPUT链

③、IPVS比对数据包请求的服务是否为集群服务,若是,修改数据包的目标IP地址为后端服务器IP,然后将数据包发至POSTROUTING链。 此时报文的源IP为CIP,目标IP为RIP ④、POSTROUTING链通过选路,将数据包发送给Real Server

⑤、Real Server比对发现目标为自己的IP,开始构建响应报文发回给Director Server。 此时报文的源IP为RIP,目标IP为CIP

⑥、Director Server在响应客户端前,此时会将源IP地址修改为自己的VIP地址,然后响应给客户端。 此时报文的源IP为VIP,目标IP为CIP

3)IP隧道(LVS-TUN)

①、当用户请求到达Director Server,此时请求的数据报文会先到内核空间的PREROUTING链。 此时报文的源IP为CIP,目标IP为VIP 。

②、PREROUTING检查发现数据包的目标IP是本机,将数据包送至INPUT链

③、IPVS比对数据包请求的服务是否为集群服务,若是,在请求报文的首部再次封装一层IP报文,封装源IP为为DIP,目标IP为RIP。然后发至POSTROUTING链。 此时源IP为DIP,目标IP为RIP ④、POSTROUTING链根据最新封装的IP报文,将数据包发至RS(因为在外层封装多了一层IP首部,所以可以理解为此时通过隧道传输)。 此时源IP为DIP,目标IP为RIP

⑤、RS接收到报文后发现是自己的IP地址,就将报文接收下来,拆除掉最外层的IP后,会发现里面还有一层IP首部,而且目标是自己的lo接口VIP,那么此时RS开始处理此请求,处理完成之后,通过lo接口送给eth0网卡,然后向外传递。 此时的源IP地址为VIP,目标IP为CIP

⑥、响应报文最终送达至客户端

三种类型比较

五、LVS的调度方法

在讨论了将数据包转发给集群内部的节点的王种方式后,来看一下如何在集群节点么间分配工作负荷。当有用户访问负载均衡器上的VIP请求集群服务时,负载均衡器需要从真实服务器池中选择一台真实服务器为其提供服务。负载均衡器可用于作出该决定的调度方法分成两个基本的类别;静态调度和动态调度。

静态:仅根据调度算法本身,不考虑背后服务器的负载

(1)rr:round robin,轮流,轮询

调度器通过“轮询”的调度算法,按照顺序将请求分配到后端的真实服务器上,无论后端服务器的负载状态如何,都会平均“轮询”调度。

(2)WRR:weightd round robin,带权重的轮序

指的是能者多劳,服务器性能强的,就会分配的比较多。所以根据后端真实服务器的性能来进行调度,根据后端真实服务器负载情况,修改权重值来实现动态的调度

(3)sh:source hashing 源地址hash

源地址与挑选地址绑定,将来自于同一个源IP的请求将始终被定向至同一个RS,这个目的是为了session持久功能,仅实现session的绑定.

(4)dh:destination hashing,目标地址hash,主要用于实现当你的内部主机上有多个防火墙出口时有用。 (仅作了解)

动态:根据算法及各RS当前的负载状况进行调度

(1)lc:least connection,最少连接,通过监控后端RS的连接数,根据TCP协议中的某些计数器来判断。将请求调度到已建立的连接数最少后端的真实服务器上。

计算方法:Overhead=Active*256+Inactive,Overhead越小,表示负载越低

(2)wlc:weight lc,加权的lc

计算方法:Overhead=(Active*256+Inactive)/weight

(3)sed:shortest expertion delay最短期望延迟

Overhead = (ACTIVE+1)*256/加权,数目最小的,接受下次请求

(4)nq:Never Queue,永不排队

无需队列。如果有台 realserver的连接数=0就直接分配过去,不需要再进行sed运算,保证不会有一个主机很空间。

(5)lblc:Locality-Based Least connection基于本地的最小连接

该算法根据请求的目标IP地址找出该目标IP地址最近使用的Real Server,若该服务器是可用的且没有超载,就会使用“最少链接”来挑选一台可用的服务器,将请求发送到该服务器

(6)lblcr:Replicated lblc带复制功能的lblc,是dh算法的一种改进

该算法根据请求的目标IP地址找出该目标IP地址对应的服务器组,按”最小连接”原则从服务器组中选出一台服务器,若服务器没有超载,将请求发送到该服务器;若服务器超载,则按“最小连接”原则从这个集群中选出一台服务器,将该服务器加入到服务器组中,将请求发送到该服务器?同时,当该服务器组有一段时间没有被修改,将最忙的服务器从服务器组中删除,以降低复制的程度。

转载:linux运维部落

时间: 2024-10-20 14:00:51

LVS基本原理的相关文章

LVS原理详解以及部署

linux virtual server简称LVS,Internet的快速增长使多媒体网络服务器面对的访问数量快速增加,服务器需要具备提供大量并发访问服务的能力,因此对于大负载的服务器来讲, CPU.I/O处理能力很快会成为瓶颈.由于单台服务器的性能总是有限的,简单的提高硬件性能并不能真正解决这个问题.为此,必须采用多服务器和负载均衡技术才能满足大量并发访问的需要.Linux 虚拟服务器(Linux Virtual Servers,LVS) 使用负载均衡技术将多台服务器组成一个虚拟服务器.它为适

Cluster

LVS: 类型: NAT:地址转换 DR: 直接路由 TUN:隧道 NAT: 集群节点跟director必须在同一个IP网络中: RIP通常是私有地址,仅用于各集群节点间的通信: director位于client和real server之间,并负责处理进出的所有通信: realserver必须将网关指向DIP: 支持端口映射: realserver可以使用任意OS: 较大规模应该场景中,director易成为系统瓶颈: DR: 集群节点跟director必须在同一个物理网络中: RIP可以使用公

LVS集群的基本原理、LVS/NAT模式的配置、LVS/DR模式的配置、编写自动脚本检查LVS上realserver健康性

Linux 虚拟服务器(LVS)由章文嵩在国防科技大学就读博士期间创建利用LVS可以实现高可用的.可伸缩的Web.Mail.Cache和Media等网络服务,已经被集成到linux内核里了. 1.什么是集群? 使用一组服务器提供相同的服务2.使用集群的目的? 增强可靠性   降低成本   提高可扩展性   提高性能3.集群分类? HPC 高性能计算集群    (气象   航天   航空)    LB    负载均衡集群 (平均地分摊处理)    * LVS    hproxy HA    高可用

企业集群平台LVS负载均衡算法分析与实现

一.LVS集群常见架构图 Load Balancer层:位于整个集群系统的最前端,由一台或多台负载调度器(Director Server)组成.LVS核心模板IPVS就安装在Director Server上,而Director的主要作用类似于一个路由器,它含有为完成LVS功能所设定的路由表,通过这些路由表把用户的请求分发给Server Array层的应用服务器(Real Server).同时,在Director Server上还要安装对Real Server的监控模块Ldirectord,此模块

搞懂分布式技术10:LVS实现负载均衡的原理与实践

搞懂分布式技术10:LVS实现负载均衡的原理与实践 浅析负载均衡及LVS实现 原创: fireflyc 写程序的康德 2017-09-19 负载均衡 负载均衡(Load Balance,缩写LB)是一种网络技术,它在多个备选资源中做资源分配,以达到选择最优.这里有三个关键字: 网络技术,LB要解决的问题本质上是网络的问题,所以它实际上就是通过修改数据包中MAC地址.IP地址字段来实现数据包的"中转": 资源,这里的资源不仅仅是计算机也可以是交换机.存储设备等: 最优,它则是针对业务而言

企业——LVS的集中转发模型的转发原理

LVS的几种转发模型的基本原理 1.NAT模型 通过修改请求报文的目标IP地址(同时可能修改目标端口,支持端口映射),改为某Real Server的IP地址实现数据包的转发. 1)客户端将请求报文发往前端的负载均衡器,请求报文源地址为CIP目标地址为VIP 2)负载均衡器接受到报文,发现请求的是在ipvs规则里面存在的地址,那么它将客户端的请求报文的目标地址改为了后端服务器的RIP地址并将报文根据算法发送出去. 3)报文送到Real Server上,由于报文的目标地址是自己,所以会响应请求,并将

使用LVS实现负载均衡原理及安装配置详解

转:http://www.cnblogs.com/liwei0526vip/p/6370103.html 使用LVS实现负载均衡原理及安装配置详解 负载均衡集群是 load balance 集群的简写,翻译成中文就是负载均衡集群.常用的负载均衡开源软件有nginx.lvs.haproxy,商业的硬件负载均衡设备F5.Netscale.这里主要是学习 LVS 并对其进行了详细的总结记录. 一.负载均衡LVS基本介绍 LB集群的架构和原理很简单,就是当用户的请求过来时,会直接分发到Director

heartbeat+LVS

####heartbeat简介####Heartbeat 项目是 Linux-HA 工程的一个组成部分,它实现了一个高可用集群系统.心跳服务和集群通信是高可用集群的两个关键组件,在 Heartbeat 项目里,由 heartbeat 模块实现了这两个功能.这个集群方案是利用第三方软件搭建的,要比RedHat自带的集群软件在功能上简化一些,但是搭建起来非常的方便.而且是一种快速解决方案.heartbeat的高可用集群采用的通信方式是udp协议和串口通信,而且heartbeat插件技术实现了集群间的

LVS集群之工作原理

  首先我们要了解LVS的工作机制: LVS里Director本身不响应请求,只是接受转发请求到后方,Realservers才是后台真正响应请求. LVS 工作原理基本类似DNAT,又不完全相像,它是一种四层交换,默认情况下通过用户请求的地址和端口来判断用户的请求,从而转发到后台真正提供服务的主机,而判断这种请求的是通过套接字来实现,所以四层就可以实现. 而且这个转发的过程对用户而言是透明的(简单的讲,就是用户访问DR的IP,而DR转发给RSS,而用户不知道这个过程) LVS的工作模式: 1.D