ALB 按照您设置的转发规则,对不同特征的访问流量进行分发。您可以为一个监听器配置多条转发规则。
一条转发规则由转发条件和转发动作组成。转发条件用于过滤请求,转发动作决定了请求如何被转发。
基础版 ALB 实例支持的转发条件的类型包括域名、路径。
域名和路径优先级
基础版 ALB 实例的转发规则间不存在优先级。ALB 接收到客户端请求时,会基于域名和路径的匹配结果来选择一条转发规则,并按照该转发规则转发客户端请求。在进行域名和路径匹配时,ALB 会考虑域名和路径的优先级。
如果客户端请求的域名与不同转发规则中的多个域名匹配,ALB 会按照域名优先级确定对应的转发规则。
说明
泛域名只用于匹配与其同级别的域名。例如,*.example.com 可以匹配 www.example.com,但不能匹配 example.com。
正则表达式路径优先于前缀匹配路径。
- 当命中多条正则表达式路径时,ALB 选择最早配置的那条正则表达式路径对应的转发规则。
- 当命中多条前缀匹配路径时,ALB 选择与请求路径前缀重合最长的那条路径对应的转发规则。例如,请求路径为 /abcde,规则 /abc 与 /abcd 均能命中(二者都是 /abcde 的前缀)。由于 /abcd 的前缀更长,ALB 选择 /abcd 对应的转发规则。
说明
前缀匹配路径指不含通配符与正则表达式的路径。
转发规则匹配流程
ALB 接收到客户端请求时,会先按照域名优先级进行域名匹配:
- 如果存在匹配的域名,则继续按照路径优先级进行路径匹配。
- 如果存在匹配的路径,则按照域名和路径对应的转发规则转发请求。
- 如果不存在匹配的路径,则无法转发该请求,会返回 4xx 状态码给客户端。
- 如果不存在匹配的域名,则尝试匹配“无域名仅路径”的转发规则。
- 如果存在“无域名仅路径”的转发规则,则继续按照路径优先级进行路径匹配。
- 如果存在匹配的路径,则按照该路径对应的转发规则转发请求。
- 如果不存在匹配的路径,则按照默认转发规则转发请求。
- 如果不存在“无域名仅路径”的转发规则,则按照默认转发规则转发请求。
说明
- “无域名仅路径”:指的是转发规则中配置了一条非/的路径,但是未配置域名。
若转发规则关联了多个后端服务器组,则根据服务器组权重以及是否开启服务器组间会话保持分发流量。
多个服务器组按权重比例分发流量。权重范围 0~100,新增组默认 100;设为 0 表示不向该组分发流量。权重按相对比例分配。
示例:一条自定义规则下 3 个服务器组权重为 50/20/30,流量占比如下。
说明
当前 ALB 不提供服务器组维度的健康检查能力。例如,当服务器组 A 内未添加服务器或组内所有服务器的健康检查状态均为异常时,仍会有 50% 的流量被转发至服务器组 A。该情况下,ALB 会返回 502 或 503 状态码。
若转发规则开启了会话保持,则 ALB 通过 Cookie 把同一客户端的请求固定到同一服务器组:首次命中后在响应中植入 Cookie,后续请求携带该 Cookie 即回原组。
会话保持优先级高于权重:请求携带 Cookie 时直接命中原组,不再按权重分配。
流量到达服务器组后,由服务器组按调度算法和组内会话保持选定具体后端。更多请参考服务器组概述。