LVS理论学习
程序员文章站
2024-02-21 12:12:22
...
LVS理论学习
LVS:Linux Virtual Server,从Linux内核2.6开始作为linux内核的模块
负载调度层:由一台或多台调度器组成,将ipvs模块加载到作为调度器的这太主机,将会在调度器上生成虚拟
IP(VIP)以及虚拟端口,客户端通过VIP将请求交给调度器,调度器根据所配置的调度算法将该请求交给合适的后端节点
服务器节点:处理调度器转发来的客户端的请求并作出响应
共享存储层:保证服务器节点之间的数据同步
LVS基于IP进行负载调度,有三种调度模式:NAT、DR、TUN
NAT:网络地址转换,客户端通过VIP(源ip:CIP 目的ip:VIP)将请求包交给调度器,调度器根据调度算法选择一台合适的后
端服务器节点来处理该请求,调度器将客户端发来的请求包的目的IP改为该后端服务器节点的IP地址后请求包交给该节点,
该节点处理完请求后将响应包(源ip:RIP 目的ip:CIP)交给调度器,调度器将响应包的源ip转换为VIP后发送给客户端
DR:直接路由,调度器与后端节点都配置VIP,调度器通过VIP接收客户端的请求,通过调度算法选择一台合适的后端节点,将
客户端发来的请求包的目的mac地址改为后端节点的mac地址之后,将请求交给该节点,服务节点处理完请求直接将响应包交
给客户端,不再经过调度器,相较于NAT模式,环节了调度器的压力
在该模式下需要注意两个问题:
1、最好将后端节点的VIP配置在lo网卡上,并且禁用虚拟IP所在网卡的arp响应功能,
2、由服务器节点的物理网卡来发送arp请求包
TUN:IP隧道,调度器通过虚拟IP接收客户端的请求,然后对该请求包进行二次封装,源IP为DIP(调度器自己
的IP),目的IP为RIP(后端节点的IP),后端节点接收到这个包之后进行解封装,对客户端发来的请求包进行处理,并
将响应包通过IP隧道直接交给客户端,成本高
LVS调度算法分为两种:
1、静态调度算法
RR:轮询调度(Round Robin)算法就是按依次循环的方式将请求调度到不同的服务器上,该算法最大的
特点就是实现简单,轮询算法假设所有的服务器处理请求的能力都一样的,调度器会将所有的请求平均分配给每个真实
服务器
WRR:加权轮询(Weight Round Robin )算法主要是对轮询算法的一种优化与补充,LVS会考虑每台服务器的性能,并给每台服务器添加一个权值,如果服务器A的权值为1,服务器B的权值为2,则调度器调度到服务器B的请求会是服务器A的
两倍。权值越
SH:源地址散列调度(Source Hashing)算法先根据请求的源IP地址,作为散列键(Hash Key)从静态分配的散
列表找出对应的服务器,若该服务器是可用的且并未超载,将请求发送到该服务器,否则返回空。它采用的散列函数与目
标地址散列调度算法的相同,它的算法流程与目标地址散列调度算法的基本相似
DH:目标地址散列调度(Destination Hashing)算法先根据请求的目标IP地址,作为散列键(Hash Key)从静态分
配的散列表找出对应的服务器,若该服务器是可用的且并未超载,将请求发送到该服务器,否则返回空
2、动态调度算法
LC:最小连接调度(Least Connections)算法是把新的连接请求分配到当前连接数最小的服务器,最小连接调
度是一种动态的调度算法,它通过服务器当前活跃的连接数来估计服务器的情况,调度器需要记录各个服务器已建立连接
的数目,当一个请求被调度到某台服务器,其连接数加1;当连接中断或者超时,其连接数减1。
(集群系统的真实服务器具有相近的系统性能,采用最小连接调度算法可以比较好地均衡负载。)
WLC:加权最少连接(Weight Least Connections)算法是最小连接调度的超集,各个服务器相应的权值表示其处
理性能。服务器的缺省权值为1,系统管理员可以动态地设置服务器的权值。加权最小连接调度在调度新连接时尽可能使
服务器的已建立连接数和其权值成比例。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。
LBLC:基于局部的最少连接调度(Locality-Based Least Connections )算法是针对请求报文的目标IP地址的
负载均衡调度,目前主要用于Cache集群系统,因为在Cache集群客户请求报文的目标IP地址是变化的。这里假设任何后端服
务器都可以处理任一请求,算法的设计目标是在服务器的负载基本平衡情况下,将相同目标IP地址的请求调度到同一台服务
器,来提高各台服务器的访问局部性和Cache命中率,从而提升整个集群系统的处理能力。LBLC调度算法先根据请求的目标I
P地址找出该目标IP地址最近使用的服务器,若该服务器是可用的且没有超载,将请求发送到该服务器;若服务器不存在,或
者该服务器超载且有服务器处于一半的工作负载,则使用'最少连接'的原则选出一个可用的服务器,将请求发送到服务器。
LBLCR:带复制的基于局部性的最少连接(Locality-Based Least Connections with Replication)算法也是针对
目标IP地址的负载均衡,目前主要用于Cache集群系统,它与LBLC算法不同之处是它要维护从一个目标IP地址到一组服务器
的映射,而LBLC算法维护从一个目标IP地址到一台服务器的映射。按'最小连接'原则从该服务器组中选出一一台服务器,若
服务器没有超载,将请求发送到该服务器;若服务器超载,则按'最小连接'原则从整个集群中选出一台服务器,将该服务器
加入到这个服务器组中,将请求发送到该服务器。同时,当该服务器组有一段时间没有被修改,将最忙的服务器从服务器组
中删除,以降低复制的程度
上一篇: jzxx2860引水入城
下一篇: 深度解析dubbo过滤器之泛化调用
推荐阅读
-
LVS理论学习
-
三大主流软件负载均衡器对比(LVS、Nginx、HAproxy)
-
配置LVS + Keepalived高可用负载均衡集群之图文教程 博客分类: 网站架构
-
配置LVS + Keepalived高可用负载均衡集群之图文教程 博客分类: 网站架构
-
Ubuntu下LVS + Keepalived 实现MySQL高可用负载均衡实现
-
[ZT]基于LVS的Linux负载均衡技术实现 博客分类: 系统 LinuxPHPBBS.netBlog
-
[ZT]基于LVS的Linux负载均衡技术实现 博客分类: 系统 LinuxPHPBBS.netBlog
-
lvs实现四层负载DR模式
-
LVS 负载均衡 ---- DR模式
-
LVS DR模式负载均衡