LVS的负载均衡算法

静态算法

静态:根据LVS本身自由的固定的算法分发用户请求。

轮询(Round Robin 简写’rr’):轮询算法假设所有的服务器处理请求的能力都一样的,调度器会把所有的请求平均分配给每个真实服务器。(同Nginx的轮询)
加权轮询(Weight Round Robin 简写’wrr’):安装权重比例分配用户请求。权重越高,被分配到处理的请求越多。(同Nginx的权重)
源地址散列(Source Hash 简写’sh’):同一个用户ip的请求,会由同一个RS来处理。(同Nginx的ip_hash)
目标地址散列(Destination Hash 简写’dh’):根据url的不同,请求到不同的RS。(同Nginx的url_hash)

动态算法

动态:会根据流量的不同,或者服务器的压力不同来分配用户请求,这是动态计算的。

最小连接数(Least Connections 简写’lc’):把新的连接请求分配到当前连接数最小的服务器。
加权最少连接数(Weight Least Connections 简写’wlc’):服务器的处理性能用数值来代表,权重越大处理的请求越多。Real Server 有可能会存在性能上的差异,wlc动态获取不同服务器的负载状况,把请求分发到性能好并且比较空闲的服务器。
最短期望延迟(Shortest Expected Delay 简写’sed’):特殊的wlc算法。举例阐述,假设有ABC三台服务器,权重分别为1、2、3 。如果使用wlc算法的话,当一个新请求进来,它可能会分给ABC中的任意一个。使用sed算法后会进行如下运算:
• A:(1+1)/1=2
• B:(1+2)/2=3/2
• C:(1+3)/3=4/3
最终结果,会把这个请求交给得出运算结果最小的服务器。
最少队列调度(Never Queue 简写’nq’):永不使用队列。如果有Real Server的连接数等于0,则直接把这个请求分配过去,不需要在排队等待运算了(sed运算)。

总结:

LVS在实际使用过程中,负载均衡算法用的较多的分别为wlc或wrr,简单易用。

原文地址:https://www.cnblogs.com/hardy-wang/p/13840345.html