标签:lvs
标题索引
追溯原因
出口结构
调度算法
问题处理
追溯原因
根据同事信息反馈:教育云平台服务器对外提供服务请求不均衡,其中一台服务器对外提供服务数量远大于其他服务器,锁定出现问题原因在于出口负载均衡调度器的调度算法,针对此现象组织运维小团队进行再次入学习负载均衡调度算法,解决负载不均衡情况。
出口结构
出口采用两台深信服应用交付做负载均衡,下联DP8000安全防火墙做透明传输,核心采用两台h3c10508做交换,出口网络拓扑结构如下图:
图1-1 出口网络拓扑图
两台负载均衡做主被模式,防火墙和核心交换机采用虚拟机技术分别虚拟为1台逻辑防火墙和1台逻辑交换机,且为双主模式,以备出口负载均衡随时业务切换。
调度算法
考虑到国内多数产品基于开源软件进行二次开发,因此决定追根溯源从开源产品LVS的调度算法为基础进行深度学习,并将学习方法及解决问题案例记录知识库。
从动静角度划分,LVS的调度算法主要分为4种静态调度算法和6种动态调度算法,静态调度算法相对较为简单,不依赖服务器的性能及连接数进行调度,动态算法根据在线访提供服务连接数及性能等进行动态调度,只要指标参数为通过对应的调度算法公式计算出Overhead=value的值,value值越小说明服务器负载越小,因此会优先调度。
静态调度算法如下:
1.轮询调度算法
轮询调度算法不考虑服务器性能和在线连接数,傻瓜式的进行轮询调度。
2.权重轮询算法
基于权重进行轮询调度,性能好的服务器可以基于权重进行加权轮询调度。
3.源IP hash算法
根据源IP地址进行hash计算,对于相同源IP地址的请求或已建立的连接调度到同一台服务器,可实现会话绑定,但基于国内网络现状,N多用户共用同一公网IP地址上网请求调度到同一服务器,有可能导致服务器负载严重不均衡。
4.目的IP hash算法
基于目的IP地进行hash计算,对于同一目的IP地址的请求或已建立的连接调度到同一目的服务器,考虑到国内网络现状,多数用户运营商或CDN内容发布商,利用缓存机制,为用户请求加速提供服务。
动态调度算法如下:
在动态调度算法中,提前知晓几个概念:
Activeconns:指活动连接数,即处于ESTABLISH状态已经建立的连接。
Inactiveconns:指非活跃连接数,即处于TCP ESTABLISH 状态以外的连接,如SYN_RECV、TIME_WAIT 等。
5.最少连接调度算法
最少连接调度算法,简称LC,Least Connections,其计算公式为:Overhead=Activeconns*256+Inactiveconnns,由计算公式可知,在服务器集群节点数中已建立连接数较少的Overhead值也较小,因此会被优先调度。由此可知调度算可以被理解为“不考虑集群服务器的节点性能,仅根据服务器连接数进行提供服务,连接数越少,优先会被调度”。
6.加权最少连接调度算法
简称:WLC,Weighted Least Connections,在LVS中为默认策略,其具体调度算法和调度含义如下解释:
在最少连接调度算法的基础之上加权重,其计算公式为:Overhead=(Activeconns*256+Inactiveconnns)/weight,由公式可知,在服务器集群节点数中权重越大Overhead的值越小。由此可知调度算法可以被理解为“考虑服务器的节点性能,根据服务器连接数进行提供服务,连接数越少,权重越大,优先会被调度”。
7.初始连接高权重优先
简称:SED,Shortest Expection Delay,其计算公式为:Overhead=(activeconns+1)*256/weight,由公式可知在负载均衡调度时,权重优先级越高Overhead值越小,越是优先被调用。问题是当连接数量规模相对较小的情况下,有可能出现仅有高权重服务器对外提供服务,其他服务器空闲。
8.无队列调度算法
简称:NQ,Never Queue,在第一轮调度时均衡调度,后续采用SED调度算法,防止仅有一台高性能服务器提供服务,而其他服务器处于空闲状态。
9.动态DH算法
简称:LBLC:Locality-Based LC,动态基于目的IP进行负载均衡,可用于根据负载状态实现正向代理,目前大多用在cache集群,当LVS接收到请求时,该算法根据最近调动情况调动到就近服务器,若该服务器是可用的且没有超载,将请求发送到该服务器;若服务器不存在,或者该服务器超载且有服务器处于一半的工作负载,则用“最少链接”的原则选出一个可用的服务器,将请求发送到该服务器
10.动态DH算法+复制功能
简称:LBLCR:LBLC with Replication,在动态DH算法的基础之上,它与LBLC算法的不同之处是它要维护从一个目标IP地址到一组服务器的映射,而LBLC算法维护从一个目标IP地址到一台服务器的映射该算法根据请求的目标IP地址找出该目标IP地址对应的服务器组,按”最小连接”原则从服务器组中选出一台服务器,若服务器没有超载,将请求发送到该服务器;若服务器超载,则按“最小连接”原则从这个集群中选出一台服务器,将该服务器加入到服务器组中,将请求发送到该服务器同时,当该服务器组有一段时间没有被修改,将最忙的服务器从服务器组中删除,以降低复制的程度。
问题处理
综合调动算法原理和会话管理的因素,估计当时实施工程师考虑到会话绑定的问题,因此将调度算法策略设定位静态源IP hash算法,而平台访问量多数来自几个固定的源IP地址,所以导致服务器对外提供服务不均衡。
沟通联系云平台开发商,云平台早已支持会话同步(会话同步:会话绑定、会话同步、会话统一管理),因此只需将负载均衡调度算法更改为默认wlc策略即可实现服务器负载均衡。
本文出自 “一步一印,有印为证” 博客,谢绝转载!
标签:lvs
原文地址:http://weiboxue.blog.51cto.com/6506379/1975824