You need to enable JavaScript to run this app.
导航
转发规则概述
最近更新时间:2024.08.13 15:45:01首次发布时间:2022.05.18 20:54:43

监听器按照您设置的转发规则,对不同请求特征的访问流量做出具体调度。ALB 支持基于域名和路径的转发规则。您可以为1个监听器配置多条转发规则。

  • 默认转发规则:创建监听器成功后系统自动生成的转发规则。默认转发规则的域名为-、路径为/,表示 ALB 可以转发客户端任意的域名和路径。请求没有命中自定义转发规则时,会遵循默认转发规则,将请求转发至该监听器的默认服务器组上。
  • 自定义转发规则:除默认转发规则之外,您可根据业务需求自定义的转发规则,指定域名及路径做相应的转发、重定向或重写动作。

转发规则匹配的优先级说明

转发规则匹配的优先级

ALB 接收到客户端请求时,根据您的配置的转发规则,先进行域名的匹配,再进行路径的匹配。具体的匹配优先级如下:

步骤

匹配内容

优先级

1

系统将客户端请求的域名与转发规则中您配置的域名进行匹配。

  • ALB的域名匹配是对同级域名进行匹配。
  • 如果客户端请求的域名与转发规则中的多个同级域名匹配,ALB 根据域名的类型,选择域名的优先级为:精准域名 > 以通配符*开头的泛域名 > 以通配符*结尾的泛域名。如:alb.volc.test.com 同时满足*.volc.test.comalb.volc.test.*,最终会匹配到*.volc.test.com对应的转发规则。

2

系统将客户端请求 URL 与转发规则中您配置的路径进行匹配。

如果客户端请求的 URL 与转发规则中的多个路径匹配,ALB 选择具体路径的优先级为:

  • 正则表达式格式的 URL > 非正则表达式格式的 URL。
  • 如果请求的 URL 匹配到多个正则表达式格式的 URL ,那么 ALB 会按照时间先后选择匹配的 URL,优先匹配配置更早的 URL 。
  • 如果请求的 URL 匹配到多个非正则表达式格式的 URL ,那么 ALB 会按照最长匹配原则从前向后选择匹配的 URL ,优先配置更长的 URL。

请求到达ALB实例后的匹配规则

图片
如上图所示,ALB实例接收到请求时,根据转发规则的配置,依次匹配域名、路径后转发到对应的后端服务器组。匹配规则如下:
收到的请求后,根据优先级“精确域名 > 以* 开头的泛域名 > 以*结尾的泛域名”的顺序进行同级域名匹配。

  • 如果存在匹配的域名,则继续匹配路径,按照最长匹配原则匹配。
    • 存在匹配的URL,则将请求转发到相应规则的后端服务器组。
    • 没有匹配的URL,则无法转发该请求,ALB 返回4XX状态码。
  • 如果没有匹配的域名,则继续匹配[无域名仅路径]的转发规则。
    • 存在[无域名仅路径]的转发规则,则继续匹配路径,按照最长匹配原则匹配。
      • 存在匹配的URL,则将请求转发到相应规则的后端服务器组。
      • 没有匹配的URL,则将请求转发到默认转发规则对应的后端服务器组。
    • 没有[无域名仅路径]的转发规则,则将请求转发到默认转发规则对应的后端服务器组。

转发规则匹配示例

某个 ALB 实例的监听器上配置了如下四条转发规则:

转发规则

创建时间

序号

转发规则中配置的域名

转发规则中配置的 URL

转发动作

1

test.com

/volc

转发至服务器组 A

2023.05.01

2

test.com

/volc/test

转发至服务器组 B

2023.05.02

3

test.com

~/test

转发至服务器组 C

2023.05.03

4

test.com

~/test/rule1

转发至服务器组 D

2023.05.04

  • 如果请求为www.test.com/volc/test,那么 ALB 将按照非正则URL的最长匹配原则,将匹配到第2条转发规则将请求转发至服务器组B。
  • 如果请求为www.test.com/test/rule1,按照正则URL先配置的规则优先级更高原则,将匹配到第3条转发规则转发至服务器组C。

请求到达 ALB 实例后转发至多个服务器组

  • ALB 的自定义转发规则支持添加多个服务器组。在 ALB 实例接收到请求时,ALB 根据转发规则的配置,将客户端流量转发至对应的多个后端服务器组。为自定义转发规则添加多个服务器组的规则如下:
    1. 仅自定义转发规则允许添加多个服务器组,默认转发规则不可添加多个服务器组。
    2. 每条自定义规则,最多添加5个服务器组。
    3. 转发动作转发至重写支持添加多个服务器组。
    4. 添加的服务器组与当前实例在同一VPC下。
  • 服务器组的权重:在自定义转发规则下添加多个服务器组时,您可以为每个服务器组设置权重值。客户端流量将根据权重值按比例转发至对应的服务器组。具体规则如下:
    1. 您可为服务器组设置的权重值范围:0-100 。新添加一个服务器组时,该服务器组的默认权重值为 100 。当权重值设为 0 时,表示 ALB 不会转发客户端流量至该服务器组上。

    2. 多服务器组之间的流量分配: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 。这部分流量转发至服务器组 A时,ALB 将 返回 503/502 状态码。

  • 服务器组的会话保持:在自定义转发规则下添加多个服务器组时,您可以开启服务器组间会话保持。开启此功能后,ALB 提供基于 Cookie 的会话保持功能,可以将来自同一个客户端的请求转发到同一台后端服务器上,提升客户端的访问体验。具体规则如下:
    1. 服务器组间会话保持默认不启用。启用后,您可输入超时时间,输入范围:1~86400s,默认1000s。
    2. 服务组间会话保持的优先级高于服务器组间权重:在客户端请求第一次转发到某个服务器组后,ALB 在返回内容中植入该服务器组的 Cookie 信息。后续客户端请求将携带该 Cookie,ALB 会识别 Cookie 信息,将请求转发到之前的同一个服务器组上,不再按服务器组的权重值转发流量。
    3. 多服务器组、服务器组内的服务器的会话保持、权重优先级判断,您可参考下图。
      图片

    注意

    您在某个自定义转发规则添加了多服务器组,如果想实现强一致的会话保持,确保某个客户端的流量被转发至某个服务器组的某个后端服务器上,那么您不仅需要配置组间会话保持(保证流量被转发至同一服务器组),还需要配置组内服务器的会话保持(保证流量在组内被转发至同一服务器)。