AWS ALB如何从挂载2个实例的Target group中选择目标实例?
AWS ALB 挂载2台目标实例时的请求转发规则
首先明确结论:这个选择过程不是随机选择,ALB的目标选择有明确的规则逻辑,具体流程如下:
- 第一步:健康状态过滤
ALB转发请求前首先会剔除所有健康检查状态为unhealthy、draining等非可用状态的实例,只有状态为healthy的实例才会进入候选池。如果挂载的2台实例里只有1台健康,所有请求会直接打到这台可用实例上,不会进入后续选路流程。 - 第二步:按配置的路由算法选目标
候选池里2台实例都健康的前提下,选路逻辑由目标组配置的路由算法决定:- 默认采用加权轮询算法:默认配置下两台实例的转发权重都是1(权重相等),请求会按顺序交替分配给两台实例,长期运行下两台实例的请求接收量基本均等。如果手动给两台实例配置了不同权重,会按权重比例分配请求,比如A权重2、B权重1的话,大概每3个请求里2个给A,1个给B。
- 如果配置了最少未完成请求算法:ALB会优先把请求转发给当前正在处理的未完成请求数更少的那台实例,只有当两台实例的未完成请求数完全相等时,才会走加权轮询逻辑选目标。
- 特殊场景:粘性会话生效时的固定转发
如果目标组开启了粘性会话(会话保持)功能,客户端第一次发起请求被转发到某台实例后,ALB会给客户端生成对应会话cookie,cookie有效期内该客户端的所有请求都会固定转发到这台实例,不再走常规路由算法分配。
常见误区说明:部分测试场景下短时间观察到两台实例的请求数不是严格1:1交替,是因为不同请求的处理时长、连接复用情况、客户端来源分散度都会影响瞬时分布,这不是随机选路导致的,只是轮询逻辑在真实流量下的正常表现。
内容的提问来源于stack exchange,提问作者gippo
相关产品推荐
相关产品推荐

