
# 配置相同域名不同路径的转发策略实现精准转发
#### 应用场景
独享型负载均衡支持您基于域名和路径将接收到的客户端请求精确地分配到不同的后端服务器组上，以实现高效、合理、精细化管理的流量分发功能。
- **微服务架构**：在微服务架构中，后端服务由多个独立的子服务组成，每个子服务部署在不同的后端服务器上，对外使用同一个域名进行服务。通过基于路径的转发策略，客户端请求被精确分配到处理对应业务逻辑的后端服务器上。
- **灰度发布/AB测试**：在多环境部署中，开发、测试和生产环境可能部署在同一域名下但使用不同路径。通过配置相同域名不同路径转发策略，请求被精确转发到目标环境的后端服务器上。
- **读写分离**：在高并发和数据一致性要求严格的场景下，如订单处理服务，采用读写分离策略优化性能与数据安全。读操作定向转发到读数据库，写操作定向转发到写数据库。
 
#### 基于域名和路径的转发策略概述
独享型ELB支持高级转发策略，支持基于客户端请求的不同特征设置转发规则和转发动作，便于更灵活分流业务，更合理分配资源。
基于域名和路径的转发规则详见[表1]，更多转发规则详情请参考[高级转发策略概述](https://support.huaweicloud.com/usermanual-elb/elb_ug_jt_060301.html)。
 表1域名和路径的转发规则说明 
| 转发规则 | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
|:---|:---|
| 域名   | - 匹配说明 触发转发的域名，可以并列添加多个域名。域名由以点分隔的字符串组成，单个字符串不超过63个字符，域名总长度不能超过100个字符。   - 匹配方式 - 精确匹配及通配符匹配：只能由英文字母、数字和特殊字符.-?=\~_+\\\^\*!$\&\|()\[\]组成，支持星号（\*）和半角问号（?）作为通配符使用。不支持以.开头和结尾，不支持..的形式。  - 正则匹配：只能由英文字母、数字和特殊字符.-?=\~_+\\\^\*!$\&\|()\[\]组成。                       |
| 路径   | - 匹配说明 触发转发的路径，可以并列添加多个路径。路径由英文字母、数字和特殊字符_\~';@\^-%#$.\*+?,=!:\|\\/()\[\]{}组成，长度范围为1\~128个字符。   - 匹配方式 - 精确匹配：请求的路径和设定路径完全一致，只能由/开头。  - 前缀匹配：请求的路径匹配已设定路径的开头，只能由/开头。  - 正则匹配：请求的路径和设定的路径正则表达式匹配。     |
   
#### 实践方案架构
某电商平台希望通过一个域名对外提供多样化的微服务，包括直播和促销活动的能力。直播功能需要高带宽和低延迟的处理能力，而促销活动的能力可能会在短时间内涌入大量客户，导致流量徒增，并产生大量数据读取的动作。如果所有服务在一个后端服务器组上部署，可能导致资源分配不均，在促销活动高峰期影响直播用户的浏览体验。尤其是在用户访问量激增时，服务器负载过高，无法保证服务稳定运行。
该电商平台可以利用华为云独享型ELB实例配置相同域名下不同路径的转发策略实现更加精准的业务流量分发，确保每个微服务都能高效独立运行。如下[图1]，路径**/live** 的请求转发至直播服务器组后端服务器组A，确保直播服务获得足够的带宽和处理能力。路径**/promotion**的请求转发至后端服务器组B，优化计算资源以快速响应查询和提交操作。
图1ELB实例配置相同域名不同路径的业务转发示意图   
![](https://support.huaweicloud.com/bestpractice-elb/zh-cn_image_0000002414681589.png "点击放大")
#### 约束与限制
- 仅独享型ELB的HTTP/HTTPS/QUIC监听器支持配置高级转发策略。
- 单个监听器最多支持配置100条转发策略，超过配额的转发策略不生效。
- 高级转发策略：一种转发规则支持多个转发条件，一条转发策略最多支持10个转发条件。
 
#### 准备工作
- 创建独享型ELB实例，且ELB已绑定EIP。具体操作，请参见[购买独享型负载均衡器](https://support.huaweicloud.com/usermanual-elb/elb_lb_000006.html)和[绑定IPv4公网IP](https://support.huaweicloud.com/usermanual-elb/elb_ug_fz_0015.html)。
- 创建两个协议类型为**HTTP** 协议的后端服务器组，后端服务器组A和后端服务器组B中分别添加了ECS01和ECS02实例，并且在其中部署了应用服务。
  单击查看本示例ECS01的部署命令
  - yum install -y nginx
  
  - systemctl start nginx.service
  
  - cd /usr/share/nginx/html/
  
  - echo "Hello World ! This is live." \> index.html
   
  单击查看本示例ECS02的部署命令
  - yum install -y nginx
  
  - systemctl start nginx.service
  
  - cd /usr/share/nginx/html/
  
  - echo "Hello World ! This is promotion." \> index.html
    
- 注册域名并完成备案。具体操作，请参见[注册域名](https://support.huaweicloud.com/qs-domain/domain_qs_240000.html)、[快速完成ICP备案](https://support.huaweicloud.com/qs-icp/icp_07_0002.html)。本实践推荐使用域名www.example.com。
 
#### 步骤一：开启高级转发策略
1. 进入[弹性负载均衡列表页面](https://console.huaweicloud.com/vpc/?locale=zh-cn#/elb/list)。
2. 在弹性负载均衡列表页面，单击需要添加转发策略的负载均衡器名称。
3. 在"监听器"页签，单击目标监听器名称。
4. 在监听器"基本信息"页面，单击"开启高级转发策略"。
5. 单击"确认"。
 
#### 步骤二：配置高级转发策略
1. 进入[弹性负载均衡列表页面](https://console.huaweicloud.com/vpc/?locale=zh-cn#/elb/list)。
2. 在弹性负载均衡列表页面，单击需要添加转发策略的负载均衡器名称。
3. 在"监听器"页签，您可以通过以下两种操作入口，进入监听器的"转发策略"页签。
   - 在目标监听器所在行的"操作"列，单击"添加/编辑转发策略"。
   
   - 单击目标监听器的名称，并切换到"转发策略"页签。
    
4. 单击"添加转发策略"按钮，配置转发策略。 域名：输入您用于本实践方案的域名。
   路径：当路径为live时，转发到后端服务器组A；路径为promotion时，转发到后端服务器组B。
   
5. 配置完成，单击"保存"。
![](https://support.huaweicloud.com/bestpractice-elb/zh-cn_image_0000002368426294.png "点击放大")
#### 步骤三：配置域名解析
通过为域名添加A类型记录集解析，将域名解析到ELB的公网地址，使得客户端可以通过公网域名访问ELB。
以下提供将网站域名解析至IPv4地址的配置示例，更多关于A类型记录集的配置指导，请参考[快速添加网站域名解析](https://support.huaweicloud.com/qs-dns/dns_qs_0002.html)。
1. 进入[云解析服务控制台](https://console.huaweicloud.com/dns/?#/dns/dashboard)。
2. 在左侧树状导航栏，选择"公网域名"。 进入域名列表页面。
   
3. 在待添加记录集的公网域名所在行，单击操作列的"管理解析"。
4. 单击"添加记录集"，进入"添加记录集"页面。
5. 设置记录集参数，如[表2]所示。
    表2A类型记录集参数说明 
   | 参数       | **示例**               | 说明                                                                                                                                                                                      |
   |:---|:---|:---|
   | 记录类型     | **A -- 将域名指向IPv4地址** | 记录集的类型，本实践为**A -- 将域名指向IPv4地址**。                                                                                                                                                        |
   | 主机记录     | **www**              | 您域名的前缀。                                                                                                                                                                                 |
   | 线路类型     | **全网默认**             | 解析的线路类型用于DNS服务器在解析域名时，根据访问者的来源，返回对应的服务器IP地址。 默认值为"全网默认"。 全网默认：默认线路类型，当未根据访问者来源设置解析线路时，系统会返回默认解析结果。 |
   | TTL(秒)   | **300**              | 解析记录在本地DNS服务器的缓存时间，以秒为单位。 本实践使用默认值300秒。                                                                                                         |
   | 记录值      | **192.168.12.2**     | 域名对应的IPv4地址，本实践为ELB绑定的弹性公网IP地址。                                                                                                                                                         |
   | 高级配置（可选） | **-**                | 您可以单击![](https://support.huaweicloud.com/bestpractice-elb/zh-cn_image_0000002219795465.png)，展开折叠的高级配置区域，设置记录集的别名和权重并添加标签和描述，本文保持默认设置。                                                   |
      
   
6. 单击"确定"。
7. 返回"解析记录"页面。 添加完成后，您可以在域名对应的记录集列表中查看已添加的记录集。当记录集的状态显示为"正常"时，表示记录集添加成功。
   
 
#### 步骤四：结果验证
使用浏览器访问http://\<域名\>/\<路径\>/，验证ELB将相同域名不同路径的请求转发到对应的后端服务器。
1. 访问地址 **http://www.example.com/live/** ，收到如[图2]所示响应。
   图2客户端请求访问路径live   
   ![](https://support.huaweicloud.com/bestpractice-elb/zh-cn_image_0000002382153920.png "点击放大") 
2. 访问地址 **http://www.example.com/promotion/** ，收到如[图3]所示响应。
   图3客户端请求访问路径promotion   
   ![](https://support.huaweicloud.com/bestpractice-elb/zh-cn_image_0000002415759129.png "点击放大") 
 
#### 相关文档
- [通过ELB的高级转发策略实现新旧版本应用平滑过渡](https://support.huaweicloud.com/bestpractice-elb/elb_bp_0400.html)
- [通过ELB将HTTP请求重定向至HTTPS](https://support.huaweicloud.com/bestpractice-elb/zh-cn_topic_0168606466.html)
