创建后端云服务器组
功能介绍
创建后端云服务器组。将多个后端云服务器添加到后端云服务器组中后,请求会在后端云服务器间按后端云服务器组的负载均衡算法和后端云服务器的权重来做请求分发。
接口约束
- 指定session-persistence参数时,只有当type是APP_COOKIE时,才可以设置cookie_name。
URI
POST /v2/{project_id}/elb/pools
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
project_id |
是 |
String |
操作用户的项目ID。 |
请求消息
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
tenant_id |
否 |
String |
后端云服务器组所属的项目 ID。 需要和token中的project_id一致。 支持的最大字符长度:255 |
name |
否 |
String |
后端云服务器组名称。 支持的最大字符长度:255 |
description |
否 |
String |
后端云服务器组的描述信息。 支持的最大字符长度:255 |
protocol |
是 |
String |
后端云服务器组的后端协议。 支持TCP、UDP和HTTP。 当指定listener_id创建后端云服务器组时,后端云服务器组的protocol和它关联的监听器的protocol有如下关系:
|
lb_algorithm |
是 |
String |
后端云服务器组的负载均衡算法。
取值范围:
当该字段的取值为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时,表示会话保持关闭。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
type |
是 |
String |
会话保持的类型。
取值范围:
当后端云服务器组的protocol为TCP时,只按SOURCE_IP生效;当后端云服务器组的protocol为HTTP时,只按HTTP_COOKIE、APP_COOKIE生效。 |
cookie_name |
否 |
String |
cookie名称。 当会话保持类型是APP_COOKIE时,为必选字段,其它类型时不可指定。 |
persistence_timeout |
否 |
Integer |
会话保持的超时时间。 当type为APP_COOKIE时不生效。
取值范围:
|
响应消息
参数 |
参数类型 |
描述 |
---|---|---|
pool |
Pool object |
后端云服务器组对象。详见表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有如下关系:
|
lb_algorithm |
String |
后端云服务器组的负载均衡算法。
取值范围:
|
members |
Array of Members objects |
后端云服务器组关联的后端云服务器ID的列表。详见表7 |
healthmonitor_id |
String |
后端云服务器组关联的健康检查的ID。 |
admin_state_up |
Boolean |
后端云服务器组的管理状态。 该字段为预留字段,暂未启用。取值范围:true/false。
|
listeners |
Array of Listeners objects |
后端云服务器组关联的监听器ID列表。详见表8 |
loadbalancers |
Array of Loadbalancers objects |
后端云服务器组关联的负载均衡器ID列表。详见表9 |
session_persistence |
SessionPersistence object |
后端云服务器组的会话持久性。详见表10。 当开启会话保持后,在一定时间内,来自同一客户端的请求会发送到同一个后端云服务器上。 取值范围:当会话保持关闭时,该字段取值为null。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
type |
是 |
String |
会话保持的类型。
取值范围:
当后端云服务器组的protocol为TCP时,只按SOURCE_IP生效;当后端云服务器组的protocol为HTTP时,只按HTTP_COOKIE、APP_COOKIE生效。 |
cookie_name |
否 |
String |
cookie名称。 当会话保持类型是APP_COOKIE时,为必选字段,其它类型时不可指定。 |
persistence_timeout |
否 |
Integer |
会话保持的超时时间。 当type为APP_COOKIE时不生效。
取值范围:
|
请求示例
- 请求样例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" } }
- step1 请求样例 根据弹性云服务器id查询对应的subnet_id和address,其中device_id为弹性云服务器的id。取响应体中主网卡(primary_interface为true的port)的subnet_id、ip_address。
- 请求样例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": "" } }
返回码
请参见状态码。