每种负载均衡器的路由算法不一样:
负载均衡类型 | 使用路由算法 |
---|---|
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算法