
# 创建后端云服务器组
#### 功能介绍
创建后端云服务器组。将多个后端云服务器添加到后端云服务器组中后，请求会在后端云服务器间按后端云服务器组的负载均衡算法和后端云服务器的权重来做请求分发。
#### 接口约束
- 指定session-persistence参数时，只有当type是APP_COOKIE时，才可以设置cookie_name。
 
#### URI
POST /v2.0/lbaas/pools
#### 请求消息
表1请求参数 
| 参数   | 是否必选 | 参数类型   | 描述                                                 |
|:---|:---|:---|:---|
| pool | 是    | Object | 后端云服务器组对象。详见[表2] |
   
 表2pool字段说明 
| 参数                  | 是否必选 | 参数类型    | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
|:---|:---|:---|:---|
| tenant_id           | 否    | String  | 后端云服务器组所属的项目 ID。 获取方法详见[获取项目ID](https://support.huaweicloud.com/api-elb/elb_fl_0008.html)。 需要和token中的project_id一致。 支持的最大字符长度：255                                                                                                                                                                                                                                                                                                                                                                              |
| project_id          | 否    | String  | 此参数和tenant_id参数含义一样，均指后端云服务器组所属的项目 ID。 获取方法详见[获取项目ID](https://support.huaweicloud.com/api-elb/elb_fl_0008.html)。 需要和token中的project_id一致。                                                                                                                                                                                                                                                                                                                                                                                                      |
| name                | 否    | String  | 后端云服务器组名称。 支持的最大字符长度：255                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| description         | 否    | String  | 后端云服务器组的描述信息。 支持的最大字符长度：255                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| protocol            | 是    | String  | 后端云服务器组的后端协议。 支持TCP、UDP和HTTP。 当指定listener_id创建后端云服务器组时，后端云服务器组的protocol和它关联的监听器的protocol有如下关系： - 监听器的protocol为UDP时，后端云服务器组的protocol必须为UDP；  - 监听器的protocol为TCP时，后端云服务器组的protocol必须为TCP；  - 监听器的protocol为HTTP或TERMINATED_HTTPS时，后端云服务器组的protocol必须为HTTP。   |
| lb_algorithm        | 是    | String  | 后端云服务器组的负载均衡算法。 取值范围： - ROUND_ROBIN：加权轮询算法。  - LEAST_CONNECTIONS：加权最少连接算法。  - SOURCE_IP：源IP算法。   当该字段的取值为SOURCE_IP时，后端云服务器组绑定的后端云服务器的weight字段无效。                                                                                                                                                                                      |
| admin_state_up      | 否    | Boolean | 后端云服务器组的管理状态。 该字段为预留字段，暂未启用。默认为true。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| listener_id         | 否    | String  | 后端云服务器组关联的监听器的ID。 listener_id和loadbalancer_id中至少指定一个。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| loadbalancer_id     | 否    | String  | 后端云服务器组关联的负载均衡器ID。 listener_id和loadbalancer_id中至少指定一个。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| session_persistence | 否    | Object  | 会话持久性。详细参见[表3]。 取值为null时，表示会话保持关闭。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
   
 表3session_persistence字段说明 
| 参数                  | 是否必选 | 参数类型    | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
|:---|:---|:---|:---|
| type                | 是    | String  | 会话保持的类型。 取值范围： - SOURCE_IP：根据请求的源IP，将同一IP的请求发送到同一个后端云服务器上。  - HTTP_COOKIE：客户端第一次发送请求时，负载均衡器自动生成cookie并将该cookie插入响应消息中，后续请求会发送到处理第一个请求的后端云服务器上。  - APP_COOKIE：客户端第一次发送请求时，后端服务器生成cookie并将该cookie插入响应消息中，后续请求会发送到处理第一个请求的后端云服务器上。   当后端云服务器组的protocol为TCP时，只按SOURCE_IP生效；当后端云服务器组的protocol为HTTP时，只按HTTP_COOKIE、APP_COOKIE生效。 |
| cookie_name         | 否    | String  | cookie名称。 当会话保持类型是APP_COOKIE时，为必选字段，其它类型时不可指定。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| persistence_timeout | 否    | Integer | 会话保持的超时时间。 当type为APP_COOKIE时不生效。 取值范围： - \[1,60\]（分钟）：当后端云服务器组的protocol为TCP、UDP时。  - \[1,1440\]（分钟）：当后端云服务器组的protocol为HTTP、HTTPS时。                                                                                                                                                                                                                  |
   
#### 响应消息
表4响应参数 
| 参数   | 参数类型   | 描述                                                   |
|:---|:---|:---|
| pool | Object | 后端云服务器组对象。详见[表5] |
   
 表5pools字段说明 
| 参数                  | 参数类型    | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
|:---|:---|:---|
| id                  | String  | 后端云服务器组 ID。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| tenant_id           | String  | 后端云服务器组所属的项目 ID。 支持的最大字符长度：255                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| project_id          | String  | 此参数和tenant_id参数含义一样，均指后端云服务器组所属的项目 ID。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| name                | String  | 后端云服务器组名称。 支持的最大字符长度：255                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| description         | String  | 后端云服务器组的描述信息。 支持的最大字符长度：255                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| protocol            | String  | 后端云服务器组的后端协议。 取值范围：TCP、UDP和HTTP。 当指定listener_id创建后端云服务器组时，后端云服务器组的protocol和它关联的监听器的protocol有如下关系： - 监听器的protocol为UDP时，后端云服务器组的protocol必须为UDP；  - 监听器的protocol为TCP时，后端云服务器组的protocol必须为TCP；  - 监听器的protocol为HTTP或TERMINATED_HTTPS时，后端云服务器组的protocol必须为HTTP。   |
| lb_algorithm        | String  | 后端云服务器组的负载均衡算法。 取值范围： - ROUND_ROBIN：加权轮询算法。  - LEAST_CONNECTIONS：加权最少连接算法。  - SOURCE_IP：源IP算法。当该字段的取值为SOURCE_IP时，后端云服务器组绑定的后端云服务器的weight字段无效。                                                                                                                                                                                       |
| members             | Array   | 后端云服务器组关联的后端云服务器ID的列表。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| healthmonitor_id    | String  | 后端云服务器组关联的健康检查的ID。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| admin_state_up      | Boolean | 后端云服务器组的管理状态。 该字段为预留字段，暂未启用。取值范围：true/false。 - true表示开启。  - false表示关闭。                                                                                                                                                                                             |
| listeners           | Array   | 后端云服务器组关联的监听器ID列表。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| loadbalancers       | Array   | 后端云服务器组关联的负载均衡器ID列表。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| session_persistence | Object  | 后端云服务器组的会话持久性。详见[表9]。 当开启会话保持后，在一定时间内，来自同一客户端的请求会发送到同一个后端云服务器上。 取值范围：当会话保持关闭时，该字段取值为null。                                                                                                                                                                                                                                                                                                                                                                                                            |
   
表6members字段说明 
| 参数 | 参数类型   | 描述         |
|:---|:---|:---|
| id | String | 关联的后端服务器id |
   
表7listeners字段说明 
| 参数 | 参数类型   | 描述          |
|:---|:---|:---|
| id | String | 关联的后端服务器组id |
   
表8loadbalancers字段说明 
| 参数 | 参数类型   | 描述         |
|:---|:---|:---|
| id | String | 关联的负载均衡器id |
   
 表9session_persistence字段说明 
| 参数                  | 参数类型    | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
|:---|:---|:---|
| type                | String  | 会话保持的类型。 取值范围： - SOURCE_IP：根据请求的源IP，将同一IP的请求发送到同一个后端云服务器上。  - HTTP_COOKIE：客户端第一次发送请求时，负载均衡器自动生成cookie并将该cookie插入响应消息中，后续请求会发送到处理第一个请求的后端云服务器上。  - APP_COOKIE：客户端第一次发送请求时，后端服务器生成cookie并将该cookie插入响应消息中，后续请求会发送到处理第一个请求的后端云服务器上。   当后端云服务器组的protocol为TCP时，只按SOURCE_IP生效；当后端云服务器组的protocol为HTTP时，只按HTTP_COOKIE、APP_COOKIE生效。 |
| cookie_name         | String  | cookie名称。 当会话保持类型是APP_COOKIE时，为必选字段，其它类型时不可指定。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| persistence_timeout | Integer | 会话保持的超时时间。 当type为APP_COOKIE时不生效。 - 取值范围： - \[1,60\]（分钟）：当后端云服务器组的protocol为TCP、UDP时。  - \[1,1440\]（分钟）：当后端云服务器组的protocol为HTTP、HTTPS时。                                                                                                                |
   
#### 请求示例
- 请求样例1 创建后端云服务器组，不开启会话保持
  ```
  POST https://{Endpoint}/v2.0/lbaas/pools 
  {
      "pool": {
          "lb_algorithm":"ROUND_ROBIN",
          "loadbalancer_id": "63ad9dfe-4750-479f-9630-ada43ccc8117",
          "protocol":"HTTP"
      }
  }
  ```
  
 
- 请求样例2 创建HTTP后端云服务器组，并开启APP_COOKIE类型的会话保持
  ```
  POST https://{Endpoint}/v2.0/lbaas/pools 
  { 
    "pool": { 
      "lb_algorithm": "ROUND_ROBIN", 
      "listener_id": "370fb112-e920-486a-b051-1d0d30704dd3", 
      "protocol": "HTTP", 
      "session_persistence": { 
        "cookie_name": "my_cookie", 
        "type": "APP_COOKIE", 
        "persistence_timeout": 1 
      }, 
      "admin_state_up": true 
    } 
  }
  ```
  
- 请求样例3 创建HTTP后端云服务器组，并开启HTTP_COOKIE类型的会话保持
  ```
  POST https://{Endpoint}/v2.0/lbaas/pools 
  {
      "pool": {
          "lb_algorithm":"ROUND_ROBIN",
          "loadbalancer_id": "63ad9dfe-4750-479f-9630-ada43ccc8117",
          "protocol":"HTTP",
          "session_persistence":{
          "type":"HTTP_COOKIE"
          }
      }
  }
  ```
  
#### 响应示例
- 响应样例1
  ```
  {
      "pool": {
          "lb_algorithm": "ROUND_ROBIN",
          "protocol": "HTTP",
          "description": "",
          "admin_state_up": true,
          "loadbalancers": [
              {
                  "id": "63ad9dfe-4750-479f-9630-ada43ccc8117"
              }
          ],
          "tenant_id": "601240b9c5c94059b63d484c92cfe308",
          "project_id": "601240b9c5c94059b63d484c92cfe308",
          "session_persistence": null,
          "healthmonitor_id": null,
          "listeners": [],
          "members": [],
          "id": "4e496951-befb-47bf-9573-c1cd11825c07",
          "name": ""
      }
  }
  ```
  
 
- 响应样例2
  ```
  { 
    "pool": { 
      "lb_algorithm": "ROUND_ROBIN", 
      "protocol": "HTTP", 
      "description": "", 
      "admin_state_up": true, 
      "loadbalancers": [ 
        { 
          "id": "6b041b9e-976b-40ba-b075-375be6110b53" 
        } 
      ], 
      "tenant_id": "145483a5107745e9b3d80f956713e6a3", 
      "project_id": "145483a5107745e9b3d80f956713e6a3", 
      "session_persistence": { 
        "cookie_name": "my_cookie", 
        "type": "APP_COOKIE", 
        "persistence_timeout": 1 
      }, 
      "healthmonitor_id": null, 
      "listeners": [ 
        { 
          "id": "370fb112-e920-486a-b051-1d0d30704dd3" 
        } 
      ], 
      "members": [ 
   
      ], 
      "id": "307f8968-9474-4d0c-8434-66be09dabcc1", 
      "name": "" 
    } 
  }
  ```
  
- 响应样例3
  ```
  {
      "pool": {
          "lb_algorithm": "ROUND_ROBIN",
          "protocol": "HTTP",
          "description": "",
          "admin_state_up": true,
          "loadbalancers": [
              {
                  "id": "63ad9dfe-4750-479f-9630-ada43ccc8117"
              }
          ],
          "tenant_id": "601240b9c5c94059b63d484c92cfe308",
          "project_id": "601240b9c5c94059b63d484c92cfe308",
          "session_persistence": {
              "persistence_timeout": 1440,
              "cookie_name": null,
              "type": "HTTP_COOKIE"
          },
          "healthmonitor_id": null,
          "listeners": [],
          "members": [],
          "id": "d46eab56-d76b-4cd3-8952-3c3c4cf113aa",
          "name": ""
      }
  }
  ```
  
#### 返回码
请参见[状态码](https://support.huaweicloud.com/api-elb/elb_gc_1102.html)。
