
# 配置流量策略
1. 登录[应用服务网格控制台](https://console.huaweicloud.com/asm/?locale=zh-cn)，单击服务网格的名称，进入网格详情页面。
2. 在左侧导航栏选择"服务管理"，在列表右上方选择服务所在命名空间。
3. 选择一个服务，单击操作列的"流量治理"，在右侧页面进行重试、超时、连接池、熔断、负载均衡、HTTP头域、故障注入策略的配置。 
   **重试**
   服务访问失败自动重试，提高总体访问成功率和质量。
   选择"重试"页签，单击"立即配置"，在弹出对话框中，根据实际需求配置如下参数：
   表1重试参数说明 
   | 参数名称      | 参数说明                                                                                                                                                                                                                                                                              | 取值范围          |
   |:---|:---|:---|
   | 重试次数      | 单个请求允许的重试次数，间隔默认为25ms，实际的重试次数也取决于配置的超时时间和重试超时时间                                                                                                                                                                                                                                   | 1-4294967295  |
   | 重试超时时间（s） | 单个请求的超时时间，包括初次请求和重试请求，默认值与配置的超时时间相同                                                                                                                                                                                                                                               | 0.001-2592000 |
   | 重试条件      | 配置重试的条件，详情请参照[retry policies](https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/router_filter#x-envoy-retry-on)和[gRPC retry policies](https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/router_filter#x-envoy-retry-grpc-on)。 | -             |
      
   **超时**
   服务访问超时自动处理，快速失败，避免资源锁定和请求卡顿。
   选择"超时"页签，单击"立即配置"，在弹出对话框中，根据实际需求配置如下参数：
   表2超时参数说明 
   | 参数名称    | 参数说明       | 取值范围          |
   |:---|:---|:---|
   | 超时时间（s） | HTTP请求超时时间 | 0.001-2592000 |
      
   **连接池**
   目的是断开超过阈值的连接和请求，保护目标服务。连接池设置应用于上游服务的每个实例，可以应用在TCP级别和HTTP级别。更多信息请参照[Circuit breaker](https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/upstream/circuit_breaking)。
   选择"连接池"页签，单击"立即配置"，在弹出对话框中，根据实际需求配置如下参数：
   表3TCP设置参数说明 
   | 参数名称      | 参数说明                                                               | 取值范围          |
   |:---|:---|:---|
   | 最大连接数     | 到目标服务的HTTP/TCP连接的最大数量，默认2^32^-1                                    | 1-4294967295  |
   | 最大无响应次数   | 在确定连接已失效前，要发送的保活探测的最大数量。默认使用操作系统级别配置（除非被覆盖，Linux默认为9）              | 1-4294967295  |
   | 健康检查间隔（s） | 保活探测之间的持续时间。默认使用操作系统级别配置（除非被覆盖，Linux默认为75秒）                        | 0.001-2592000 |
   | 连接超时时间（s） | TCP连接超时时间，默认值为10秒                                                  | 0.001-2592000 |
   | 最短空闲时间（s） | 在开始发送保活探测前，连接需要处于空闲状态的持续时间。默认是使用操作系统级别配置（除非被覆盖，Linux默认为7200秒，即2小时） | 0.001-2592000 |
      
   表4HTTP设置参数说明 
   | 参数名称        | 参数说明                                                   | 取值范围          |
   |:---|:---|:---|
   | 最大请求数       | 转发到单个服务实例的最大请求数，默认2^32^-1                              | 1-4294967295  |
   | 最大等待请求数     | 转发到目标服务的最大待处理的HTTP请求数，默认2^32^-1                        | 1-4294967295  |
   | 连接最大空闲时间（s） | 上游服务连接的空闲超时。如果一定时间内没有活跃的请求，达到空闲时间后，连接将关闭，如果未设置，默认值为1小时 | 0.001-2592000 |
   | 最大重试次数      | 一定时间内，服务所有实例的最大重试次数，默认为2^32^-1                         | 1-4294967295  |
   | 每连接最大请求数    | 每个连接到后端的最大请求数。将此参数设置为1将禁用保活，默认0，表示"无限"，最多2^29^         | 1-536870912   |
      
   **熔断**
   自动隔离不健康的实例，提高服务整体访问成功率。
   熔断器跟踪服务实例的访问状态，通过跟踪一段时间内服务实例的访问请求判定其健康状况，将不健康的实例从连接池中隔离，从而提高服务总体的访问成功率，适用于HTTP和TCP服务。对于HTTP服务，连续返回5xx错误的实例认定为不健康。对于TCP服务，连接超时或者连接失败的实例认定为不健康。详情请参照[Outlier detection](https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/upstream/outlier)。
   选择"熔断"页签，单击"立即配置"，在弹出对话框中，根据实际需求配置如下参数：
   表5熔断参数说明 
   | 参数名称        | 参数说明                                                               | 取值范围          |
   |:---|:---|:---|
   | 连接错误数       | 检查周期内连续错误的次数，连续错误次数超过该阈值将会被隔离，此功能默认为5                              | 1-4294967295  |
   | 基础隔离时间（s）   | 满足熔断条件的实例被隔离的基础隔离时间。服务实例实际隔离时间等于 基础隔离时间 x 隔离次数，必须\>=0.001s，默认值为30秒 | 0.001-2592000 |
   | 检查周期（s）     | 实例异常检查的间隔，根据在该时段内异常次数是否超过阈值决定是否触发隔离，必须\>=0.001s，默认值为10秒            | 0.001-2592000 |
   | 最大隔离实例比例（%） | 被隔离的服务实例最大百分比，默认为10%                                               | 1-100         |
      
   **负载均衡**
   为目标服务配置满足业务要求的负载均衡策略，控制选择后端服务实例。
   选择"负载均衡"页签，单击"立即配置"，在弹出对话框中，根据实际需求选择负载均衡算法。
   - 轮询调度：网格使用的默认负载均衡算法，实例池中的每个实例轮流获得请求。
   
   - 最少连接：随机选取两个健康的实例，再从所选取的两个实例中选择一个连接数较少的实例。
   
   - 随机调度：从所有健康的实例中，随机选取一个。
   
   - 一致性哈希：包含四种类型，如[表6]所述。
      表6一致性哈希算法类型 
     | 类型            | 说明                                                      |
     |:---|:---|
     | 基于HTTP的Header | 需要输入HTTP头域的键名，根据HTTP请求中的请求头名称来计算哈希值，相同的值会转发到同一实例中。      |
     | 基于Cookie      | 需要输入Cookie的键名，根据HTTP请求中的cookie的键名来计算哈希值，相同的值会转发到同一实例中。  |
     | 基于源IP         | 根据HTTP请求中的源IP地址来计算哈希值，相同的值会转发到同一实例中。                    |
     | 基于query参数     | 需要输入query参数的键名，根据HTTP请求中的query参数名称来计算哈希值，相同的值会转发到同一实例中。 |
        
     
   
   
   **HTTP头域**
   灵活增加、修改和删除指定HTTP头域，非侵入方式管理请求内容。
   选择"HTTP头域"页签，单击"立即配置"，在弹出对话框中，根据实际需求配置如下参数：
   表7将HTTP请求转发到目标服务之前，对Headers的操作 
   | 参数名称         | 参数说明                                                                                                                                  |
   |:---|:---|
   | 添加请求的Headers | 添加新的请求Headers参数，需要设置key和value。还可以单击![](https://support.huaweicloud.com/usermanual-asm/zh-cn_image_0000001234454572.png)图标，添加更多同类型参数。  |
   | 修改请求的Headers | 修改已有的请求Headers参数，需要设置key和value。还可以单击![](https://support.huaweicloud.com/usermanual-asm/zh-cn_image_0000001234773776.png)图标，添加更多同类型参数。 |
   | 移除请求的Headers | 删除已有的请求Headers参数，需要设置key。还可以单击![](https://support.huaweicloud.com/usermanual-asm/zh-cn_image_0000001278854949.png)图标，添加更多同类型参数。       |
      
   表8将HTTP响应回复给客户端前，对Headers的操作 
   | 参数名称         | 参数说明                                                                                                                                  |
   |:---|:---|
   | 添加响应的Headers | 添加新的响应Headers参数，需要设置key和value。还可以单击![](https://support.huaweicloud.com/usermanual-asm/zh-cn_image_0000001279134173.png)图标，添加更多同类型参数。  |
   | 修改响应的Headers | 修改已有的响应Headers参数，需要设置key和value。还可以单击![](https://support.huaweicloud.com/usermanual-asm/zh-cn_image_0000001234614480.png)图标，添加更多同类型参数。 |
   | 移除响应的Headers | 删除已有的响应Headers参数，需要设置key。还可以单击![](https://support.huaweicloud.com/usermanual-asm/zh-cn_image_0000001234294620.png)图标，添加更多同类型参数。       |
      
   **故障注入**
   故障注入是一种有效的测试方法，它能够将错误引入系统，以确保系统能够承受错误的并从错误中恢复。
   选择"故障注入"页签，单击"立即配置"，在弹出对话框中，根据实际需求配置如下参数：
   表9故障注入参数说明 
   | 参数名称     | 参数说明                                                                                                                                                                                                                                                      | 取值范围          |
   |:---|:---|:---|
   | 故障类型     | 包括延时故障和中断故障。 - 延时故障：对通往组件的请求有延迟。  - 中断故障：会中断该组件的服务并返回预设状态码。   | 延时故障、中断故障     |
   | 延时（s）    | 故障类型选择"延时故障"时需要设置。 在转发请求之前添加的固定延迟。                                                                                                                                                                                          | 0.001-2592000 |
   | HTTP状态码  | 故障类型选择"中断故障"时需要设置。 终止故障时返回的HTTP状态码，默认返回500。                                                                                                                                                                                | 200-599       |
   | 故障百分比（%） | 注入延时或中断故障的请求百分比。                                                                                                                                                                                                                                          | 1-100         |
      
   
   
 
