欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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地址到一台服务器的映射。按'最小连接'原则从该服务器组中选出一一台服务器,若
服务器没有超载,将请求发送到该服务器;若服务器超载,则按'最小连接'原则从整个集群中选出一台服务器,将该服务器
加入到这个服务器组中,将请求发送到该服务器。同时,当该服务器组有一段时间没有被修改,将最忙的服务器从服务器组
中删除,以降低复制的程度