监听器按照您设置的转发规则,对不同请求特征的访问流量做出具体调度。ALB 支持基于域名和路径的转发规则。您可以为1个监听器配置多条转发规则。
-
、路径为/
,表示 ALB 可以转发客户端任意的域名和路径。请求没有命中自定义转发规则时,会遵循默认转发规则,将请求转发至该监听器的默认服务器组上。ALB 接收到客户端请求时,根据您的配置的转发规则,先进行域名的匹配,再进行路径的匹配。具体的匹配优先级如下:
步骤 | 匹配内容 | 优先级 |
---|---|---|
1 | 系统将客户端请求的域名与转发规则中您配置的域名进行匹配。 |
|
2 | 系统将客户端请求 URL 与转发规则中您配置的路径进行匹配。 | 如果客户端请求的 URL 与转发规则中的多个路径匹配,ALB 选择具体路径的优先级为:
|
如上图所示,ALB实例接收到请求时,根据转发规则的配置,依次匹配域名、路径后转发到对应的后端服务器组。匹配规则如下:
收到的请求后,根据优先级“精确域名 > 以*
开头的泛域名 > 以*
结尾的泛域名”的顺序进行同级域名匹配。
某个 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。转发至
、重写
支持添加多个服务器组。您可为服务器组设置的权重值范围:0-100 。新添加一个服务器组时,该服务器组的默认权重值为 100 。当权重值设为 0 时,表示 ALB 不会转发客户端流量至该服务器组上。
多服务器组之间的流量分配: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 状态码。
注意
您在某个自定义转发规则添加了多服务器组,如果想实现强一致的会话保持,确保某个客户端的流量被转发至某个服务器组的某个后端服务器上,那么您不仅需要配置组间会话保持(保证流量被转发至同一服务器组),还需要配置组内服务器的会话保持(保证流量在组内被转发至同一服务器)。