路由算法

每种负载均衡器的路由算法不一样:

负载均衡类型 使用路由算法
ALB 默认使用round robin,可以配置使用LOR
NLB 使用flow hash算法将请求打到目标,根据协议/源IP/源端口/目标IP/目标端口/TCP序列号来计算
CLB 对于TCP请求,使用round robin算法;对于HTTP/HTTPS请求,使用LOR算法

ALB路由算法

target roup默认使用round robin路由算法,也可以配置使用 least outstanding requests (LOR)-最少未完成请求算法 。

Round Robin以轮询方式将请求分发给目标组的所有目标,而不考虑容量或利用率。当请求的处理时间不同或经常添加或删除目标时,这将导致目标组中的目标过度利用或利用不足。 对于LOR 算法,当新请求传入时,负载均衡器会将其发送到未完成请求数最少的目标。处理长期请求或处理能力较低的目标不会担负更多的请求,负载均匀地分布在各个目标上。这也有助于新目标有效地减少过载目标的负载。

round robin算法适用于每个请求都类似的场景;LOR适用于每个请求的复杂度差异很大的场景 。可以从CloudWatch的RequestCount, TargetConnectionErrorCount, TargetResponseTime监控中决定使用哪种路由算法

如果开启了会话保持(stick session),那么路由算法就不会生效

修改ALB路由算法

修改路由算法是在Target Group级别进行的,可以从Round robinLOR里面选择一个:

image-20220903131453225

NLB路由算法

使用flow hash算法将请求打到目标,根据协议/源IP/源端口/目标IP/目标端口/TCP序列号来计算:

image-20220903133141377

CLB路由算法

对于TCP请求,使用round robin算法; 对于HTTP/HTTPS请求,使用LOR算法