负载均衡算法可以分为两类:静态负载均衡算法,基于服务器的容量,就是高配置的服务器比低配置的服务器分配更多的请求;动态负载均衡算法根据服务器的状况,比如通过监控可以得到平均响应时间,或者CPU占用率,内存占用率按照某种方式进行计算,作为权重值
静态负载均衡算法
随机(Random):利用随机数生成算法选取一个服务器,然后把连接发送给他。虽然许多负载产品都支持该算法,但是它的有效性一直受到质疑,除非把服务器的可运行时间看的很重。
轮询(Round Robin):按顺序把每个新的连接请求分配给下一个服务器,最终把所有请求平分给所有服务器。轮询算法在大多数情况下都工作不错,但是如果负载均衡的设备在处理速度、连接速度和内存等方面不是完全均等,那么效果会打折扣
加权轮询(Weighted Round Robin):在该算法中每台服务器的连接数量是按权重比例分配的。它是对普通轮询算法的改进
优先权(Priority):给所有的服务器分组,每组都定义优先权,把请求优先分配给优先级最高的服务器组(同一组内,采用轮询或加权轮询来分配请求);当最高优先级组中的所有服务器都出现故障时,才把请求发送给次优先级的服务器组。
IP-Hash:通过生成请求源IP的哈希值,并通过这个哈希值来找到正确的真实服务器。这意味着对于同一主机来说他对应的服务器总是相同。使用这种方式,你不需要保存任何源IP。但是需要注意,这种方式可能导致服务器负载不平衡
动态负载均衡算法
动态轮询(Dynamic Round Robin):类似于加权轮询,但是权重值是基于各个拂去其的持续监控,并且不断更新的。根据服务器的实时性能分析来分配请求。
最少的连接(Least Connection):系统把新的请求分配给当前连接数目最少的服务器。该算法在各个服务器运算能力基本类似的环境中非常有效。
最少连接数慢启动时间(Least Connection Slow Start Time):对最少连接数和带权重的最小连接数调度方法来说,当一个服务器刚加入线上环境是,可以为其配置一个时间段,在这段时间内连接数是有限制的而且是缓慢增加的。这为服务器提供了一个'过渡时间'以保证这个服务器不会因为刚启动后因为分配的连接数过多而超载。这个值在L7配置界面设置。
加权最少连接(Weighted Least Connection):
如果服务器的资源容量各不相同,那么"加权最少连接"方法更合适:由管理员根据服务器情况定制的权重所决定的活跃连接数一般提供了一种对服务器非常平衡的利用,因为他它借鉴了最少连接和权重两者的优势。通常,这是一个非常公平的分配方式,因为它使用了连接数和服务器权重比例;集群中比例最低的服务器自动接收下一个请求。但是请注意,在低流量情况中使用这种方法时,请参考"最小连接数"方法中的注意事项。
最快算法(Fastest):最快算法基于所有服务器中响应时间最快的给分配连接。该算法在服务器跨不同网络的环境中特别有用。
观察算法(Observed):该算法同时利用最小连接算法和最快连接算法来实施负载均衡。服务器根据当前的连接数和相应时间得到一个分数,分数越高代表性能越好,分配的连接也就越多。
预判算法(Predictive):该算法使用观察算法来计算分数,但是它会分析分数的变化趋势来判断某台服务器的性能,是正在改善还是降低,具有改善趋势的服务器会得到更多的连接。该算法适用于大多数环境。