LVS理论学习

LVS负载均衡—理论学习

LVS:Linux Virtual Server,从Linux内核2.6开始作为linux内核的模块

LVS工作原理

	终端互联网用户从外部访问公司的外部负载均衡服务器,终端用户的Web请求会发送给LVS调
度器,调度器根据自己预设的算法决定将该请求发送给后端的某台Web服务器,比如,轮询算法可
以将外部的请求平均分发给后端的所有服务器,终端用户访问LVS调度器虽然会被转发到后端真实的
服务器,但如果真实服务器连接的是相同的存储,提供的服务也是相同的服务,最终用户不管是访问
哪台真实服务器,得到的服务内容都是一样的,整个集群对用户而言都是透明的。最后根据LVS工作
模式的不同,真实服务器会选择不同的方式将用户需要的数据发送到终端用户,
 	负载调度层:由一台或多台调度器组成,将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地址到一台服务器的映射。按‘最小连接‘原则从该服务器组中选出一一台服务器,若
服务器没有超载,将请求发送到该服务器;若服务器超载,则按‘最小连接‘原则从整个集群中选出一台服务器,将该服务器
加入到这个服务器组中,将请求发送到该服务器。同时,当该服务器组有一段时间没有被修改,将最忙的服务器从服务器组
中删除,以降低复制的程度

?

LVS理论学习

上一篇:Echarts美国地图


下一篇:MCU_STM32F4xx使用CCM RAM