# 华为云独享型ELB会话保持能力矩阵
根据不同后端服务器组协议与分配策略类型组合，华为云独享型ELB支持的会话保持类型详见下表。
| **后端服务器组协议**                                                          | **分配策略类型**    | **会话保持类型**                                                                                                                                                  |
|:---|:---|:---|
| TCP UDP                                    | 加权轮询算法/加权最少连接 | 源IP地址                                                                                                                                                       |
| TCP UDP                                    | 源IP算法         | 不支持设置会话保持                                                                                                                                                   |
| HTTP HTTPS GRPC | 加权轮询算法/加权最少连接 | - 负载均衡器cookie  - 应用程序cookie   |
| HTTP HTTPS GRPC | 源IP算法         | 不支持设置会话保持                                                                                                                                                   |
| QUIC                                                                  | 连接ID算法        | 源IP地址                                                                                                                                                       |
   
各个会话保持类型的对比详情见下表。
| 对比维度      | 源IP地址            | 负载均衡器Cookie         | 应用程序Cookie          |
|:---|:---|:---|:---|
| 适用协议层     | 四层（TCP/UDP）+QUIC | 七层（HTTP/HTTPS/gRPC） | 七层（HTTP/HTTPS/gRPC） |
| Cookie生成方 | 无Cookie，基于IP哈希   | ELB自动生成             | 后端应用生成              |
| 是否需要应用改造  | 否                | 否                   | 是（需后端应用生成Cookie）    |
| 默认超时      | 20分钟             | 20分钟                | 依赖应用                |
| 最大超时      | 60分钟             | 1440分钟              | 依赖应用                |
| 超时取值范围    | 1\~60分钟          | 1\~1440分钟           | 1\~1440分钟           |
| 失效条件      | 源IP变化/超时         | 未附带Cookie/超时        | 未附带Cookie/超时        |
| 灵活性       | 低                | 中                   | 高                   |
| NAT/代理影响  | 大（IP可能集中）        | 无                   | 无                   |
| 典型场景      | TCP/UDP无Cookie场景 | 简单Web应用             | 需应用控制会话生命周期的场景      |
   
- [源IP地址会话保持]
  基于源IP地址的简单会话保持，将请求的源IP地址作为散列键（HashKey），从静态分配的散列表中找出对应的服务器。即来自同一IP地址的访问请求会被转发到同一台后端服务器上进行处理。
  - **常见场景**
    - 四层协议（TCP/UDP）场景，无法使用Cookie。
    
    - 后端应用不依赖Cookie的简单会话场景。
    
    - 来自同一客户端IP的请求必须路由到同一服务器。
     
  
  - **工作原理**
    1. 客户端流量首次请求到达ELB时，ELB提取源IP地址，进行哈希计算。
    
    2. 根据哈希结果将请求路由到特定后端服务器，并记录绑定关系。
    
    3. 后续同一客户端请求到达时，ELB提取源IP并查找绑定。
       - 若绑定存在且未超时，路由到同一后端服务器。
       
       - 若绑定已超时或源IP变化，重新计算路由。
        
     
  
  - **参数详情**
    
    | 参数     | 值       |
    |:---|:---|
    | 默认超时时间 | 20分钟    |
    | 最大超时时间 | 60分钟    |
    | 取值范围   | 1\~60分钟 |
       
    
  
  - **失效场景**
    - 客户端的源IP地址发生变化（如客户端网络切换、NAT映射变化）。
    
    - 客户端访问请求超过会话保持超时时间。
     
  
  - **协议与分配策略支持情况**
    
    | 后端服务器组协议 | 分配策略类型 | 是否支持                  |
    |:---|:---|:---|
    | TCP/UDP  | 加权轮询算法 | 支持                    |
    | TCP/UDP  | 加权最少连接 | 支持                    |
    | TCP/UDP  | 源IP算法  | 不支持设置（源IP算法已默认实现等效功能） |
    | QUIC     | 连接ID算法 | 支持                    |
       
    
  
  - **约束与限制**
    如果从云专线、VPN访问ELB，请使用源IP算法（分配策略类型）代替会话保持功能，因为云专线/VPN场景下源IP可能集中，导致会话保持效果不佳。
    
   
- [负载均衡器Cookie会话保持]
  负载均衡器会根据客户端第一个请求自动生成一个Cookie，后续所有包含这个Cookie值的请求都会由同一个后端服务器处理。Cookie由负载均衡器创建和管理，应用无需任何修改。
  - **常见场景**
    - PHP Web服务器。
    
    - 维护临时会话数据的服务器，如日志、购物车、聊天对话。
    
    - 不希望修改应用代码即可实现会话保持的场景。
    
    - 需要由基础设施层控制会话持续时间的场景。
     
  
  - **工作原理**
    1. 客户端请求首次到达ELB时，ELB运行流量分配算法（如：加权轮询/加权最少连接），将请求路由到某台后端服务器。
    
    2. ELB在响应中插入一个Cookie（由ELB生成），包含目标服务器标识和过期时间。
    
    3. 同一客户端后续请求送达ELB时携带该Cookie，ELB解析Cookie。
       - 若Cookie未过期，路由到同一台后端服务器。
       
       - 若Cookie已过期，ELB重新运行路由逻辑，确定新的目标服务器，并生成新Cookie。
        
     
  
  - **参数详情**
    
    | 参数     | 值            |
    |:---|:---|
    | 默认超时时间 | 20分钟         |
    | 最大超时时间 | 1440分钟（24小时） |
    | 取值范围   | 1\~1440分钟    |
       
    
  
  - **失效场景**
    - 客户端发送请求未附带Cookie（如浏览器禁用Cookie）。
    
    - 客户端访问请求超过会话保持超时时间。
     
  
  - **协议与分配策略支持情况**
    
    | 后端服务器组协议        | 分配策略类型 | 是否支持      |
    |:---|:---|:---|
    | HTTP/HTTPS/gRPC | 加权轮询算法 | 支持        |
    | HTTP/HTTPS/gRPC | 加权最少连接 | 支持        |
    | HTTP/HTTPS/gRPC | 源IP算法  | 不支持设置会话保持 |
       
    
   
- [应用程序Cookie会话保持]
  该选项依赖于用户后端业务应用，用户后端业务应用在响应中生成一个Cookie值，ELB根据该Cookie值将后续请求路由到同一台后端服务器。用户后端业务应用可以完全控制Cookie的名称、属性和生命周期，提供最大的灵活性。
  **应用程序Cookie在部分区域逐步上线中，已发布区域请以控制台实际开放为准。**
  - **常见场景**
    - PHP Web服务器，需要应用控制会话持续时间。
    
    - 维护临时会话数据的服务器，需要基于应用逻辑判断会话是否过期。
    
    - 需要细粒度控制会话状态属性和持续时间的场景。
    
    - 用户后端业务应用已有自定义Cookie机制，希望直接复用。
     
  
  - **工作原理**
    1. 客户端请求首次到达ELB时，ELB运行客户部署的流量分配策略逻辑将请求路由到某台后端服务器。
    
    2. 后端服务器处理请求，在响应中流量返回后端业务应用自定义的Cookie。
    
    3. ELB记录该应用Cookie与目标服务器的绑定关系。
    
    4. 客户端后续请求携带应用Cookie，由ELB解析。
       - 若Cookie有效且未过期，路由到同一台后端服务器。
       
       - 若Cookie已过期，ELB重新运行路由逻辑，确定新的目标服务器。
        
     
  
  - **失效场景**
    - 客户端发送请求未附带Cookie（如浏览器禁用Cookie）。
    
    - 客户端访问请求超过会话保持超时时间。
     
  
  - **协议与分配策略支持情况**
    
    | 后端服务器组协议        | 分配策略类型 | 是否支持      |
    |:---|:---|:---|
    | HTTP/HTTPS/gRPC | 加权轮询算法 | 支持        |
    | HTTP/HTTPS/gRPC | 加权最少连接 | 支持        |
    | HTTP/HTTPS/gRPC | 源IP算法  | 不支持设置会话保持 |
       
    
   
- [后端服务器组间会话保持]
  当监听器的转发策略资源上配置了多个后端服务器组时，可以开启"后端服务器组间会话保持"。开启后，来自同一客户端的请求会被路由到同一个后端服务器组（但不一定是同一台后端服务器，分配到同一台后端服务器的场景需要用户在后端服务器组资源上会话保持功能），从而在蓝绿部署等场景下确保客户端持续使用同一版本的应用。
  **该功能陆续上线中，已发布区域请以控制台实际开放为准。**
  - **常见场景**
    - 存在多个后端服务器组分配给同一个监听器的同一个转发策略，客户端流量应一致地路由到同一服务器组内。
    
    - 蓝绿部署：新旧版本应用分别部署在不同后端服务器组，会话期间客户端始终访问同一版本。
     
  
  - **工作原理**
    1. 客户端流量命中转发策略后，ELB根据转发动作中多个后端服务器组的权重配置，确定将该流量分配到某个后端服务器组。
    
    2. ELB为用户会话创建到目标后端服务器组的绑定关系，并设置过期时间。
    
    3. 客户端重新发起请求时，ELB检查用户会话与后端服务器组的会话保持绑定关系是否存在且未过期。
       - 若绑定已过期或不存在，ELB运行路由逻辑，重新确定目标后端服务器组。
       
       - 若绑定未过期，ELB将流量路由到同一后端服务器组（但不一定是同一台后端服务器）。
        
     
  
  - **约束与限制**
    ELB严格按照权重转发请求，以下情况可能造成业务风险，请您谨慎配置：
    - 后端服务器组内所有后端服务器健康检查异常。
    
    - 后端服务器组内未添加后端服务器。
      
  
  
  配置方式请参见[配置后端服务器组间会话保持](https://support.huaweicloud.com/bestpractice-elb/elb_bp_9103.html#elb_bp_9103__section1428416464517)。
