ALB 按照您设置的转发规则,对不同特征的访问流量进行分发。您可以为一个监听器配置多条转发规则。
基础版 ALB 实例支持基于域名和路径的转发规则。标准版 ALB 实例支持基于域名、路径和 HTTP 标头的转发规则,并支持复合转发条件。
基础版和标准版的转发规则匹配逻辑存在差异,详情请参见下文说明。
转发规则分为默认转发规则和自定义转发规则。
-
,表示任意域名。路径的值为 /
,表示根目录。-
,表示任意请求。说明
对于基础版 ALB 实例,默认转发规则在以下情形时无法被应用:
一条转发规则由转发条件和转发动作组成。转发条件用于过滤请求,转发动作决定了请求如何被转发。
下表列出了基础版 ALB 实例和标准版 ALB 实例支持的转发条件和转发动作。
版本 | 转发条件 | 转发动作 |
---|---|---|
基础版 | 基于域名和路径 | 转发至、重定向至 |
标准版 | 基于域名、路径和 HTTP 标头 | 转发至、重定向至、重写、限速 |
基础版 ALB 实例的转发规则间不存在优先级。ALB 接收到客户端请求时,会基于域名和路径的匹配结果来选择一条转发规则,并按照该转发规则转发客户端请求。在进行域名和路径匹配时,ALB 会考虑域名和路径的优先级。
如果客户端请求的域名与不同转发规则中的多个域名匹配,ALB 会按照域名优先级确定对应的转发规则。
域名类型 | 示例 | 优先级 |
---|---|---|
精确域名 | www.example.com | 最高 |
以通配符(*)开头的泛域名 | *.test.com | 次高 |
以通配符(*)结尾的泛域名 | test.com.* | 最低 |
说明
泛域名匹配原则:泛域名只用于匹配与其同级别的域名。例如,*.example.com 可以匹配 www.example.com,但不能匹配 example.com。
如果客户端请求的路径与不同转发规则中的多条路径匹配,ALB 会按照路径优先级选择对应的转发规则。具体说明如下:
使用正则表达式定义的路径的优先级高于精确路径。
ALB 接收到客户端请求时,会先按照域名优先级进行域名匹配:
说明
/
的路径,但是未配置域名。-
。在上述流程图中,“转发规则配置的域名匹配请求的域名”条件句中的“域名”指的是具体域名如 www.example.com
,域名是-
的情形不包含在内。标准版 ALB 实例同一个监听器下的转发规则之间存在优先级:
在收到客户端请求时,ALB 会按照转发规则的优先级从高到低来依次进行匹配。当请求满足某一条转发规则中的转发条件时,ALB 停止匹配其他转发规则,并按照这条匹配的转发规则来转发请求。
同一条转发规则中的不同转发条件之间是”且“的关系。同一转发条件下的不同值之间是”或“的关系。只有当请求满足一条转发规则中的所有转发条件时,才被认为是匹配这条转发规则。
在 ALB 实例接收到客户端请求时,会根据转发规则,将流量分发给服务器组。
转发规则分为默认转发规则和自定义转发规则:
ALB 能够根据每个服务器组的权重,按比例将客户端流量转发至对应的服务器组。
在自定义转发规则中添加多个服务器组时,您可以为每个服务器组设置权重。权重范围是 0~100。当您新添加一个服务器组时,该服务器组的默认权重为 100。当权重设为 0 时,表示 ALB 不会转发客户端流量至该服务器组上。
示例:
您在一条自定义转发规则中添加了 4 个服务器组,并为每个服务器组设置了不同的权重。则不同服务器组接收到的客户端流量的比例如下表所示。
服务器组 | 权重 | 服务器组接收到的客户端流量的比例 |
---|---|---|
服务器组 A | 40 | 40/(40+20+20+20 )× 100% = 40% |
服务器组 B | 20 | 20/(40+20+20+20 )× 100% = 20% |
服务器组 C | 20 | 20/(40+20+20+20 )× 100% = 20% |
服务器组 D | 20 | 20/(40+20+20+20 )× 100% = 20% |
注意
当前 ALB 不提供服务器组维度的健康检查能力。例如,当服务器组 A 内未添加服务器或组内所有服务器的健康检查状态均为异常时,仍会有 40% 的流量被转发至服务器组 A。该情况下,ALB 会返回 502 或 503 状态码。
当您在自定义转发规则中添加多个服务器组时,您可以开启”服务器组间会话保持”功能。开启此功能后,ALB 提供基于 Cookie 的会话保持功能,可以将来自同一个客户端的请求转发到同一后端服务器组。具体来说,在客户端请求第一次转发到某个服务器组后,ALB 在返回内容中植入该服务器组的 Cookie 信息。后续客户端请求将携带该 Cookie。ALB 识别到 Cookie 信息,将请求转发到之前的同一个服务器组上。
“服务器组间会话保持”功能的优先级高于服务器组权重。当客户端请求携带 Cookie 信息时,ALB 将请求转发到之前的同一个服务器组上,不再按服务器组的权重转发流量。
当您在一个自定义转发规则中添加多服务器组时,您可以配置组间会话保持,使来自同一客户端的请求被转发至同一服务器组。此外,您还可以配置组内服务器的会话保持,使来自同一客户端的请求被转发至同一服务器。
以下流程图说明了 ALB 在接收到客户端请求后,如何按照权重和会话保持配置将请求转发到服务器组以及组内的服务器。