更新时间:2022-08-15 GMT+08:00

创建后端云服务器组

功能介绍

创建后端云服务器组。将多个后端云服务器添加到后端云服务器组中后,请求会在后端云服务器间按后端云服务器组的负载均衡算法和后端云服务器的权重来做请求分发。

接口约束

  • 指定session-persistence参数时,只有当type是APP_COOKIE时,才可以设置cookie_name。

URI

POST /v2/{project_id}/elb/pools

表1 参数说明

参数

是否必选

参数类型

描述

project_id

String

操作用户的项目ID。

请求消息

表2 请求参数

参数

是否必选

参数类型

描述

pool

Pool object

后端云服务器组对象。详见表3

表3 pool字段说明

参数

是否必选

参数类型

描述

tenant_id

String

后端云服务器组所属的项目 ID。

需要和token中的project_id一致。

支持的最大字符长度:255

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

SessionPersistence object

会话持久性。详细参见表4

取值为null时,表示会话保持关闭。

表4 session_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时。

响应消息

表5 响应参数

参数

参数类型

描述

pool

Pool object

后端云服务器组对象。详见表6 pool字段说明

表6 pool字段说明

参数

参数类型

描述

id

String

后端云服务器组 ID。

tenant_id

String

后端云服务器组所属的项目 ID。

支持的最大字符长度:255

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 of Members objects

后端云服务器组关联的后端云服务器ID的列表。详见表7

healthmonitor_id

String

后端云服务器组关联的健康检查的ID。

admin_state_up

Boolean

后端云服务器组的管理状态。

该字段为预留字段,暂未启用。取值范围:true/false。

  • true表示开启。
  • false表示关闭。

listeners

Array of Listeners objects

后端云服务器组关联的监听器ID列表。详见表8

loadbalancers

Array of Loadbalancers objects

后端云服务器组关联的负载均衡器ID列表。详见表9

session_persistence

SessionPersistence object

后端云服务器组的会话持久性。详见表10

当开启会话保持后,在一定时间内,来自同一客户端的请求会发送到同一个后端云服务器上。

取值范围:当会话保持关闭时,该字段取值为null。

表7 members字段说明

参数

参数类型

描述

id

String

关联的后端服务器id

表8 listeners字段说明

参数

参数类型

描述

id

String

关联的后端服务器组id

表9 loadbalancers字段说明

参数

参数类型

描述

id

String

关联的负载均衡器id

表10 session_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
    • step1 请求样例 根据弹性云服务器id查询对应的subnet_id和address,其中device_id为弹性云服务器的id。取响应体中主网卡(primary_interface为true的port)的subnet_id、ip_address。
      GET https://{VPCEndpoint}/v2.0/ports?device_id=f738c464-b5c2-45df-86c0-7f436620cd54

      step1 响应样例

      {
          "ports": [
              {
                  "id": "94971c39-46f0-443a-85e8-31cb7497c78e",
                  "name": "",
                  "status": "ACTIVE",
                  "admin_state_up": true,
                  "fixed_ips": [
                      {
                          "subnet_id": "33d8b01a-bbe6-41f4-bc45-78a1d284d503",
                          "ip_address": "192.168.44.11"
                      }
                  ],
                  "mac_address": "fa:16:3e:5c:d2:57",
                  "network_id": "1b76b9c2-9b7e-4ced-81bd-d13f7389d7c9",
                  "tenant_id": "04dd36f978800fe22f9bc00bea090736",
                  "project_id": "04dd36f978800fe22f9bc00bea090736",
                  "device_id": "f738c464-b5c2-45df-86c0-7f436620cd54",
                  "device_owner": "compute:xx-xxxx-4a",
                  "security_groups": [
                      "a10dfc31-0055-4b84-b36e-1291b918125c",
                      "7a233393-5be2-4dff-8360-1558dd950f6e"
                  ],
                  "extra_dhcp_opts": [],
                  "allowed_address_pairs": [],
                  "binding:vnic_type": "normal",
                  "binding:vif_details": {
                      "primary_interface": true
                  },
                  "binding:profile": {},
                  "port_security_enabled": true,
                  "created_at": "2019-11-12T17:17:51",
                  "updated_at": "2019-11-12T17:17:51"
              }
          ]
      }
    • step2 创建后端云服务器组,不开启会话保持
      POST https://{Endpoint}/v2/601240b9c5c94059b63d484c92cfe308/elb/pools
      
      {
          "pool": {
              "lb_algorithm":"ROUND_ROBIN",
              "loadbalancer_id": "63ad9dfe-4750-479f-9630-ada43ccc8117",
              "protocol":"HTTP"
          }
      }
  • 请求样例2 创建后端云服务器组,并开启APP_COOKIE类型的会话保持
    POST https://{Endpoint}/v2/145483a5107745e9b3d80f956713e6a3/elb/pools
    
    {
      "pool": {
        "lb_algorithm": "ROUND_ROBIN",
        "loadbalancer_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/601240b9c5c94059b63d484c92cfe308/elb/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",
            "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",
        "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",
            "session_persistence": {
                "persistence_timeout": 1440,
                "cookie_name": null,
                "type": "HTTP_COOKIE"
            },
            "healthmonitor_id": null,
            "listeners": [],
            "members": [],
            "id": "d46eab56-d76b-4cd3-8952-3c3c4cf113aa",
            "name": ""
        }
    }

返回码

请参见状态码