每种负载均衡器的路由算法不一样:
| 负载均衡类型 | 使用路由算法 |
|---|---|
| ALB | 默认使用round robin,可以配置使用LOR |
| NLB | 使用flow hash算法将请求打到目标,根据协议/源IP/源端口/目标IP/目标端口/TCP序列号来计算 |
| CLB | 对于TCP请求,使用round robin算法;对于HTTP/HTTPS请求,使用LOR算法 |
target roup默认使用round robin路由算法,也可以配置使用 least outstanding requests (LOR)-最少未完成请求算法 。
Round Robin以轮询方式将请求分发给目标组的所有目标,而不考虑容量或利用率。当请求的处理时间不同或经常添加或删除目标时,这将导致目标组中的目标过度利用或利用不足。 对于LOR 算法,当新请求传入时,负载均衡器会将其发送到未完成请求数最少的目标。处理长期请求或处理能力较低的目标不会担负更多的请求,负载均匀地分布在各个目标上。这也有助于新目标有效地减少过载目标的负载。
round robin算法适用于每个请求都类似的场景;LOR适用于每个请求的复杂度差异很大的场景 。可以从CloudWatch的RequestCount, TargetConnectionErrorCount, TargetResponseTime监控中决定使用哪种路由算法
如果开启了会话保持(stick session),那么路由算法就不会生效
修改路由算法是在Target Group级别进行的,可以从Round robin或LOR里面选择一个:

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

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