# ELB Ingress转发策略优先级说明
在创建ELB Ingress时，CCE会根据Ingress配置中的域名、URL等转发规则，在ELB侧配置相应的转发策略。
为了满足复杂的流量路由需求，CCE集成了ELB的[高级转发策略](https://support.huaweicloud.com/usermanual-elb/elb_ug_jt_060301.html)能力，支持URL重定向、重写等高级转发能力，但高级转发策略的排序逻辑与普通的转发策略存在差异。
具体如下：
| 场景          | 未指定优先级                                                                                               | 指定优先级                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
|:---|:---|:---|
| 未开启ELB高级转发策略 | 转发策略根据域名/路径匹配进行排序，详情请参见[默认排序]。                                  | 以指定的优先级进行排序： - **同一个Ingress间的转发策略排序** ：使用"kubernetes.io/elb.rule-priority-enabled"注解，设置为"true"时，根据Ingress YAML里**paths**字段下定义的转发规则顺序进行排序，配置靠前的优先级高。  - **不同Ingress间的转发策略排序** ：使用"kubernetes.io/elb.ingress-order"注解的优先级进行排序，且默认开启同一个Ingress的转发规则排序（即同时设置"kubernetes.io/elb.rule-priority-enabled"注解为"true"）。具体规则如下： - "kubernetes.io/elb.ingress-order"注解的参数取值范围为1\~1000，参数值越小，表示优先级越高。  - 具有"kubernetes.io/elb.ingress-order"注解的Ingress优先级较高，不具有该注解的Ingress优先级较低。  - 如果多个Ingress都具有"kubernetes.io/elb.ingress-order"注解，则不同Ingress间先按注解值的大小排序，然后同一个Ingress的规则按照先后顺序排序。     关于指定优先级的使用示例，请参见[为ELB Ingress配置转发规则优先级](https://support.huaweicloud.com/usermanual-cce/cce_10_0939.html)。 说明： 在Ingress中指定优先级后，CCE会将按照Ingress间的排序和Ingress内的转发策略的配置情况，对同一监听器下的所有转发策略进行整体排序。配置的数值不等于ELB的转发策略优先级。 |
| 开启ELB高级转发策略 | 转发策略会按照创建时间添加优先级（先创建的优先级较高），请求会根据创建时间顺序进行匹配然后转发，详情请参见[按创建时间顺序排序]。 | 以指定的优先级进行排序： - **同一个Ingress间的转发策略排序** ：使用"kubernetes.io/elb.rule-priority-enabled"注解，设置为"true"时，根据Ingress YAML里**paths**字段下定义的转发规则顺序进行排序，配置靠前的优先级高。  - **不同Ingress间的转发策略排序** ：使用"kubernetes.io/elb.ingress-order"注解的优先级进行排序，且默认开启同一个Ingress的转发规则排序（即同时设置"kubernetes.io/elb.rule-priority-enabled"注解为"true"）。具体规则如下： - "kubernetes.io/elb.ingress-order"注解的参数取值范围为1\~1000，参数值越小，表示优先级越高。  - 具有"kubernetes.io/elb.ingress-order"注解的Ingress优先级较高，不具有该注解的Ingress优先级较低。  - 如果多个Ingress都具有"kubernetes.io/elb.ingress-order"注解，则不同Ingress间先按注解值的大小排序，然后同一个Ingress的规则按照先后顺序排序。     关于指定优先级的使用示例，请参见[为ELB Ingress配置转发规则优先级](https://support.huaweicloud.com/usermanual-cce/cce_10_0939.html)。 说明： 在Ingress中指定优先级后，CCE会将按照Ingress间的排序和Ingress内的转发策略的配置情况，对同一监听器下的所有转发策略进行整体排序。配置的数值不等于ELB的转发策略优先级。 |
   
当前部分局点已默认开启高级转发策略，您可以在添加转发策略时查看当前局点是否开启高级转发策略：
图1查看是否开启高级转发策略   
![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000002408774836.png "点击放大")
 #### 默认排序
未开启ELB高级转发策略时，转发策略的默认排序规则如下：
- 不同域名间优先级互相独立，转发规则域名与URL同时存在时，优先按照域名进行匹配。
- 转发规则为URL时，匹配优先级如下：精确匹配 \> 前缀匹配 \> 正则匹配，匹配类型相同时URL长度越长，优先级越高。
表1默认排序的转发策略示例 
| 转发策略      | 设定值              | 转发策略排序 |
|:---|:---|:---|
| URL（精确匹配）  | /test1/test2/test3 | 1    |
| URL（前缀匹配）  | /test1/test2     | 2       |
| URL（前缀匹配） | /test1            | 3     |
   
创建转发策略后，系统会根据默认排序规则进行排序。访问示例如下：
- 访问请求www.example.com/test1/test2同时满足转发策略2和转发策略3，匹配类型相同时URL长度越长，优先级越高，则请求将按照转发策略2进行转发。
- 访问www.example.com/test1/test2/test3同时满足转发策略1、和转发策略2和转发策略3，优先精确匹配，则请求将按照转发策略1进行转发。
 
 #### 按创建时间顺序排序
开启ELB高级转发策略后，转发策略会根据其创建时间顺序被赋予编号（转发策略编号的数值越小，优先级越高），每个请求会按照这些编号逐条匹配，一旦能够匹配到一条转发策略，立即按照当前转发策略进行转发。
转发策略的优先级设置规则如下：
- 配置高级转发策略前已有的转发策略会继承原有的优先级顺序。
- 配置高级转发策略后，每次新增的转发策略优先级排序最低（默认转发策略固定为最低优先级，不参与排序）。
表2根据优先级排序的转发策略示例 
| 转发策略       | 设定值      | 转发策略优先级设置 |
|:---|:---|:---|
| URL（前缀匹配）   | /test1  | 1        |
| URL（精确匹配） | /test1 | 2         |
   
如以上示例，访问请求www.example.com/test1同时满足转发策略1和转发策略2，根据优先级排序，则请求将按照**转发策略1**进行转发。
