
# 通过ELB的高级转发策略实现新旧版本应用平滑过渡
#### 应用场景
随着公司业务发展，需要用新版本应用替换旧版本应用，使用高级转发策略可以实现旧版本应用向新版本应用平滑过渡。将旧版本应用和新版本应用同时部署在环境中，让一部分用户使用旧版本应用，一部分用户使用新版本应用，然后根据用户使用情况，调整优化新版本应用，逐步将所有用户均迁移至新版本应用。
#### 前提条件
已申请了6台ECS，将您的旧版本业务和新版本业务各自部署在3台服务器上。
#### 操作流程
图1操作流程图   
![](https://support.huaweicloud.com/bestpractice-elb/zh-cn_image_0000001865924037.png "点击放大")
 表1资源规划 
| 资源名称                | 资源类型   | 说明                                 |
|:---|:---|:---|
| ELB-Test            | 独享型ELB | 独享型ELB支持高级转发策略，因此需创建独享型ELB实例。      |
| Server_Group-Test01 | 后端服务器组 | 用于管理部署了旧版本业务的ECS。                  |
| Server_Group-Test02 | 后端服务器组 | 用于管理部署了新版本业务的ECS。                  |
| ECS01               | 弹性云服务器 | 上面部署了旧版本业务，添加至Server_Group-Test01。 |
| ECS02               | 弹性云服务器 | 上面部署了旧版本业务，添加至Server_Group-Test01。 |
| ECS03               | 弹性云服务器 | 上面部署了旧版本业务，添加至Server_Group-Test01。 |
| ECS04               | 弹性云服务器 | 上面部署了新版本业务，添加至Server_Group-Test02。 |
| ECS05               | 弹性云服务器 | 上面部署了新版本业务，添加至Server_Group-Test02。 |
| ECS06               | 弹性云服务器 | 上面部署了新版本业务，添加至Server_Group-Test02。 |
   
![](https://support.huaweicloud.com/bestpractice-elb/public_sys-resources/note_3.0-zh-cn.png)
本最佳实践中，独享型ELB和ECS均在同一VPC中。在实际应用中，如果您的ECS和ELB不在同一VPC中，可以跨不同VPC添加ECS至ELB的后端服务器组中，详细请参考[通过IP类型后端功能添加服务器至ELB](https://support.huaweicloud.com/bestpractice-elb/elb_bp_0300.html)。
#### 步骤一：创建HTTP监听器并开启高级转发策略
1. 进入[弹性负载均衡列表页面](https://console.huaweicloud.com/vpc/?locale=zh-cn#/elb/list)。
2. 单击右上角的"购买弹性负载均衡"。
3. 根据[表1]创建独享型负载均衡ELB-Test，根据需要设置相关参数。
   - 实例规格类型：独享型
   
   - 名称：ELB-Test
   
   - 其他参数根据需要设置，详见[创建独享型负载均衡器](https://support.huaweicloud.com/usermanual-elb/elb_lb_000006.html)。
    
4. 独享型ELB创建成功后，在ELB-Test中添加HTTP监听器。详见[添加监听器](https://support.huaweicloud.com/usermanual-elb/elb_ug_jt_0008.html)。
5. HTTP监听器创建成功后，开启高级转发策略。详见[高级转发策略](https://support.huaweicloud.com/usermanual-elb/elb_ug_jt_060303.html#section2)。
 
#### 步骤二：创建后端服务器组并添加后端服务器
1. 进入[弹性负载均衡列表页面](https://console.huaweicloud.com/vpc/?locale=zh-cn#/elb/list)。
2. 在左侧导航栏，选择" 弹性负载均衡 \> 后端服务器组"。
3. 在"后端服务器组"界面，单击页面右上角"创建后端服务器组"按钮
   - 名称：Server_Group-Test01
   
   - 所属负载均衡器：选择关联已有ELB-Test
   
   - 后端协议：HTTP
   
   - 其他参数根据需要设置。
    
4. 参考[步骤5]再添加后端服务器组Server_Group-Test02。
5. 单击后端服务器组Server_Group-Test01名称，添加ECS01、ECS02、ECS03至Server_Group-Test01。
6. 单击后端服务器组Server_Group-Test02名称，添加ECS04、ECS05、ECS06至Server_Group-Test02。
 
#### 基于**HTTP请求方法**实现新旧版本应用平滑过渡
通过配置转发规则为"HTTP请求方法"的高级转发策略，实现将来自客户端的**GET和DELETE** 请求转发至**旧版本应用** 上，将来自客户端的**POST和PUT** 请求转发至**新版本应用**上。以此种方式运行一段时间后，确认新版本应用无问题后，再将所有请求全部切换至新版本应用。
图2基于**HTTP请求方法** 实现新旧版本应用平滑过渡   
![](https://support.huaweicloud.com/bestpractice-elb/zh-cn_image_0000001819164502.png "点击放大")
1. 单击上述创建的独享型负载均衡ELB-Test名称。
2. 在"监听器"页签，单击上述创建的HTTP监听器名称。
3. 切换至右边的"转发策略"页面，单击"添加转发策略"。 **转发至旧版本应用**：在下拉列表中选择"HTTP请求方法"，选择"GET"和"DELETE"，动作选择"转发至后端服务器组"，后端服务器组选择"Server_Group-Test01"。
   图3基于HTTP请求方法将部分请求转发至旧版本应用上   
   ![](https://support.huaweicloud.com/bestpractice-elb/zh-cn_image_0000001819324302.png "点击放大") 
4. 单击"保存"。
5. 参考以上步骤再添加一个转发策略，实现将请求转发至新版本应用上。 **转发至新版本应用**：在下拉列表中选择"HTTP请求方法"，选择"PUT"和"POST"，动作选择"转发至后端服务器组"，后端服务器组选择"Server_Group-Test02"。
   图4基于HTTP请求方法将部分请求转发至新版本应用上   
   ![](https://support.huaweicloud.com/bestpractice-elb/zh-cn_image_0000001865924057.png "点击放大") 
 
#### 基于**HTTP请求头**实现新旧版本应用平滑过渡
公司的应用分为中文和英文两个语言，通过配置转发规则为"HTTP请求头"的高级转发策略，实现将来自客户端的**英文请求** 转发至**旧版本应用** 上，将来自客户端的**中文请求** 转发至**新版本应用**上。以此种方式运行一段时间后，确认新版本应用无问题后，再将所有请求全部切换至新版本应用。
图5基于**HTTP请求头** 实现新旧版本应用平滑过渡   
![](https://support.huaweicloud.com/bestpractice-elb/zh-cn_image_0000001819324294.png "点击放大")
1. 单击上述创建的独享型负载均衡ELB-Test名称。
2. 切换至"监听器"页签，单击上述创建的HTTP监听器名称。
3. 切换至右边的"转发策略"页面，单击"添加转发策略"。 **转发至旧版本应用**：在下拉列表中选择"HTTP请求头"，键是"Accept-Language"，值是"en-us"，动作选择"转发至后端服务器组"，后端服务器组选择"Server_Group-Test01"。
   图6基于HTTP请求头将部分请求转发至旧版本应用上   
   ![](https://support.huaweicloud.com/bestpractice-elb/zh-cn_image_0000001819324286.png "点击放大") 
4. 单击"保存"。
5. 参考以上步骤再添加一个转发策略，实现将请求转发至新版本应用上。 **转发至新版本应用**：在下拉列表中选择"HTTP请求头"，键是"Accept-Language"，值是"zh-cn"，动作选择"转发至后端服务器组"，后端服务器组选择"Server_Group-Test02"。
   图7基于HTTP请求头将部分请求转发至新版本应用上   
   ![](https://support.huaweicloud.com/bestpractice-elb/zh-cn_image_0000001866004213.png "点击放大") 
 
#### 基于**查询字符串**实现新旧版本应用平滑过渡
公司的应用部署在区域1和区域2，通过配置转发规则为"查询字符串"的高级转发策略，实现将客户端对**区域1业务** 的请求转发至**旧版本应用** 上，将客户端对**区域2业务** 的请求转发至**新版本应用**上。以此种方式运行一段时间后，确认新版本应用无问题后，再将所有请求全部切换至新版本应用。
图8基于**查询字符串** 实现新旧版本应用平滑过渡   
![](https://support.huaweicloud.com/bestpractice-elb/zh-cn_image_0000001819164514.png "点击放大")
![](https://support.huaweicloud.com/bestpractice-elb/public_sys-resources/note_3.0-zh-cn.png)
- 独享型负载均衡器支持跨区域、跨不同VPC添加后端服务器。
- 该方案需要先使用云连接服务连通区域1和区域2，然后再使用独享型ELB的跨VPC后端功能将区域1和区域2中的服务器分别添加至ELB的后端服务器组01和后端服务器02中。
 
1. 单击上述创建的独享型负载均衡ELB-Test名称。
2. 在"监听器"页签，单击上述创建的HTTP监听器名称。
3. 切换至右边的"转发策略"页面，单击"添加转发策略"。 **转发至旧版本应用**：在下拉列表中选择"查询字符串"，键是"region"，值是"region01"，动作选择"转发至后端服务器组"，后端服务器组选择"Server_Group-Test01"。
   图9基于查询字符串将部分请求转发至旧版本应用上   
   ![](https://support.huaweicloud.com/bestpractice-elb/zh-cn_image_0000001866004229.png "点击放大") 
4. 单击"保存"。
5. 参考以上步骤再添加一个转发策略，实现将请求转发至新版本应用上。 **转发至新版本应用**：在下拉列表中选择"查询字符串"，键是"region"，值是"region02"，动作选择"转发至后端服务器组"，后端服务器组选择"Server_Group-Test02"。
   图10基于查询字符串将部分请求转发至新版本应用上   
   ![](https://support.huaweicloud.com/bestpractice-elb/zh-cn_image_0000001866004217.png "点击放大") 
 
