Neutron/LBaaS/API 2.0
从 Queens OpenStack 版本开始,neutron-lbaas 和 neutron-lbaas-dashboard 已被弃用。请参阅 Neutron/LBaaS/Deprecation
API 操作
本节解释特定的 API 操作。有关适用于所有 API 操作的想法,请参阅“通用 API 信息”章节。
负载均衡器
使用以下 API 管理负载均衡器资源
| 动词 | URI |
| GET | /lbaas/loadbalancers/ |
| GET | /lbaas/loadbalancers/loadbalancer_id |
| POST | /lbaas/loadbalancers |
| PUT | /lbaas/loadbalancers/loadbalancer_id |
| DELETE | /lbaas/loadbalancers/loadbalancer_id |
| GET | /lbaas/loadbalancers/loadbalancer_id/statuses |
| GET | /lbaas/loadbalancers/loadbalancer_id/stats |
列出所有负载均衡器
| 动词 | URI |
| GET | /lbaas/loadbalancers/ |
正常响应代码: 200
错误响应代码:401(未授权),500(内部服务器错误),503(服务不可用)
此操作返回与您的租户帐户关联的所有负载均衡器的列表。
此操作不需要请求主体。
此操作返回响应体。它返回一个(可能为空)列表,列表中的每个元素都是一个负载均衡器,其中包含以下属性
- id
- tenant_id
- name
- description
- vip_subnet_id
- vip_address
- admin_state_up
- listeners
- provisioning_status
- operating_status
示例。列出所有负载均衡器
JSON 请求
GET /lbaas/loadbalancers Host: lbaas-service.cloudX.com:8651 Accept: application/json X-Auth-Token:887665443383838
JSON 响应
HTTP/1.1 200 OK
Content-Type: application/json
{
"loadbalancers": [
{
"description": "simple lb",
"admin_state_up": true,
"tenant_id": "1a3e005cf9ce40308c900bcb08e5320c",
"provisioning_status": "ACTIVE",
"listeners": [ ],
"vip_address": "10.0.0.2",
"vip_subnet_id": "013d3059-87a4-45a5-91e9-d721068ae0b2",
"id": "a9729389-6147-41a3-ab22-a24aed8692b2",
"operating_status": "ONLINE",
"name": "loadbalancer1"
}
]
}
检索特定的负载均衡器
| 动词 | URI |
| GET | /lbaas/loadbalancers/"loadbalancer_id |
正常响应代码: 200
错误响应代码:401(未授权),403(禁止),404(未找到),409(冲突),413(超出限制),500(内部服务器错误),503(服务不可用)
此操作返回一个由 loadbalancer_id 标识的负载均衡器对象。如果用户不是管理员,并且负载均衡器对象不属于她的租户帐户,她将收到 403(禁止)错误。
此操作不需要请求主体。
此操作返回响应体。成功后,返回的元素是一个负载均衡器,其中包含以下属性
- id
- tenant_id
- name
- description
- vip_subnet_id
- vip_address
- admin_state_up
- listeners
- provisioning_status
- operating_status
示例。检索负载均衡器的详细信息
JSON 请求
GET /lbaas/loadbalancers/36e08a3e-a78f-4b40-a229-1e7e23eee1ab Host: lbaas-service.cloudX.com:8651 Accept: application/json X-Auth-Token:887665443383838
JSON 响应
HTTP/1.1 200 OK
Content-Type: application/json
{
"loadbalancer": {
"description": "simple lb",
"admin_state_up": true,
"tenant_id": "1a3e005cf9ce40308c900bcb08e5320c",
"provisioning_status": "ACTIVE",
"listeners": [ ],
"vip_address": "10.0.0.2",
"vip_subnet_id": "013d3059-87a4-45a5-91e9-d721068ae0b2",
"id": "a9729389-6147-41a3-ab22-a24aed8692b2",
"operating_status": "ONLINE",
"name": "loadbalancer1"
}
}
创建负载均衡器
| 动词 | URI |
| POST | /lbaas/loadbalancers |
正常响应代码: 201
错误响应代码:401(未授权),404(未找到),409(冲突),413(超出限制),500(内部服务器错误),503(服务不可用)
此操作根据请求对象中定义的配置配置新的负载均衡器。在验证请求并开始配置过程后,将返回一个响应对象。该对象将包含一个唯一的标识符和负载均衡器配置的状态。
响应中负载均衡器的 provisioning_status 可以取以下值之一:ACTIVE、PENDING_CREATE 或 ERROR。
如果返回的状态设置为“PENDING_CREATE”,则使用负载均衡器的标识符,调用者可以通过对 /lbaas/loadbalancers/loadbalancer_id 执行 GET 操作来检查配置操作的进度。当负载均衡器返回的状态更改为“ACTIVE”时,负载均衡器已成功配置并现在可以处理流量。
此操作的调用者必须指定负载均衡器的以下属性
- tenant_id:仅当调用者具有管理员角色并希望为其他租户创建负载均衡器时才需要。
- vip_subnet_id:要在其上分配负载均衡器 vip 地址的网络。租户只能在其授权的网络(例如她自己的网络或共享/提供者网络)上创建负载均衡器 vip。
如果请求中未指定某些属性,将收到默认值
- admin_state_up:此属性的默认值为 true。
- name:此属性的默认值为一个空字符串。
- description:此属性的默认值为一个空字符串。
这些属性是可选的
- vip_address:如果提供,系统将尝试将负载均衡器的 vip 地址分配给此地址。
- provider:要配置负载均衡器的有效提供商的名称。
如果由于数据不足或无效而无法满足请求,将返回 HTTP 400(错误请求)错误响应,其中响应主体包含有关故障性质的信息。验证过程中的故障无法恢复,需要调用者更正故障原因并再次发布请求。
用户可以通过在请求中简单地提供其他元素或属性来配置负载均衡器的所有已记录功能。
具有管理员角色的用户可以通过指定与他们自己不同的 tenant_id 属性来代表其他租户创建负载均衡器。
示例。创建负载均衡器
JSON 请求
POST /lbaas/loadbalancers
Host: lbaas-service.cloudX.com:8651
Content-Type: application/json
Accept: application/json
X-Auth-Token:887665443383838
{
"loadbalancer": {
"name": "loadbalancer1",
"description": "simple lb",
"tenant_id": "b7c1a69e88bf4b21a8148f787aef2081",
"vip_subnet_id": "013d3059-87a4-45a5-91e9-d721068ae0b2",
"vip_address": "10.0.0.4",
"admin_state_up": true
}
}
JSON 响应
HTTP/1.1 201 Created
Content-Type: application/json
Content-Length: 213
{
"loadbalancer": {
"description": "simple lb",
"admin_state_up": true,
"tenant_id": "b7c1a69e88bf4b21a8148f787aef2081",
"provisioning_status": "ACTIVE",
"listeners": [],
"vip_address": "10.0.0.4",
"vip_subnet_id": "013d3059-87a4-45a5-91e9-d721068ae0b2",
"id": "a36c20d0-18e9-42ce-88fd-82a35977ee8c",
"operating_status": "ONLINE",
"name": "loadbalancer1"
}
}
如果用户拥有负载均衡器的 VIP 将创建的网络,则用户可以提供 vip_address 字段。如果未在有效载荷中指定 vip_address,则 LBaaS 服务将从负载均衡器 VIP 的子网中分配一个。
更新负载均衡器
| 动词 | URI |
| PUT | /lbaas/loadbalancers/loadbalancer_id |
正常响应代码: 200
错误响应代码:serviceFault (500),serviceUnavailable (503),unauthorized (401),badRequest (400),overLimit (413)
此操作更新指定负载均衡器的属性。在成功验证请求后,服务将返回 202(已接受)响应代码。调用者应检查负载均衡器 provisioning_status 是否已更改为 ACTIVE,以确认更新已生效。如果负载均衡器 provisioning_status 为“PENDING_UPDATE”,则调用者可以轮询负载均衡器对象(使用 GET 操作)以等待应用更改。
更新操作允许调用者更改以下负载均衡器属性之一
- name
- description
- admin_state_up
此操作返回更新的负载均衡器对象。响应中负载均衡器的 provisioning_status 可以取以下值之一:ACTIVE、PENDING_UPDATE 或 ERROR。
Note The Load Balancer's ID, provisioning_status, operating_status, vip_subnet_id, vip_address, and listeners are immutable attributes and cannot be updated. Supplying an unsupported attribute will result in a 422 (Immutable) fault.
Note A Load Balancer that is does not have a provisioning_status of ACTIVE cannot be updated.
示例。更新负载均衡器
JSON 请求
PUT /lbaas/loadbalancers/a36c20d0-18e9-42ce-88fd-82a35977ee8c
Host: lbaas-service.cloudX.com:8651
Content-Type: application/json
Accept: application/json
X-Auth-Token:887665443383838
Content-Length: 75
{
"loadbalancer": {
"name": "loadbalancer2",
"description": "simple lb2",
"admin_state_up": false
}
}
JSON 响应
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 282
{
"loadbalancer": {
"description": "simple lb2",
"admin_state_up": false,
"tenant_id": "b7c1a69e88bf4b21a8148f787aef2081",
"provisioning_status": "PENDING_UPDATE",
"listeners": [],
"vip_address": "10.0.0.4",
"vip_subnet_id": "013d3059-87a4-45a5-91e9-d721068ae0b2",
"id": "a36c20d0-18e9-42ce-88fd-82a35977ee8c",
"operating_status": "ONLINE",
"name": "loadbalancer2"
}
}
删除负载均衡器
| 动词 | URI | |
| DELETE | /lbaas/loadbalancers/loadbalancer_id | 从帐户中删除负载均衡器。 |
正常响应代码: 204
错误响应代码:serviceFault (500),serviceUnavailable (503),unauthorized (401),badRequest (400),overLimit (413)
此操作从租户帐户中删除指定的负载均衡器及其关联的配置。所有配置数据立即被清除且无法恢复。
此操作不需要请求主体。
此操作不返回响应主体。
示例。删除负载均衡器
JSON 请求
DELETE /lbaas/loadbalancers/a36c20d0-18e9-42ce-88fd-82a35977ee8c Host: lbaas-service.cloudX.com:8651 Accept: application/json X-Auth-Token:887665443383838
JSON 响应
HTTP/1.1 204 No Content
检索特定负载均衡器的状态树
| 动词 | URI |
| GET | /lbaas/loadbalancers/loadbalancer_id/statuses |
正常响应代码: 200
错误响应代码:401(未授权)、403(禁止)、404(未找到)、413(超出限制)、500(内部服务器错误)、503(服务不可用)
此操作返回由 loadbalancer_id 标识的负载均衡器对象的状态树。如果用户不是管理员,并且负载均衡器对象不属于她的租户帐户,她将收到 403(禁止)错误。
此操作不需要请求主体。
此操作返回响应体。成功后,返回的元素是一个状态树,其中包含负载均衡器及其所有子项的配置和运行状态。
示例。检索负载均衡器的状态树
JSON 请求
GET /lbaas/loadbalancers/36e08a3e-a78f-4b40-a229-1e7e23eee1ab Host: lbaas-service.cloudX.com:8651 Accept: application/json X-Auth-Token:887665443383838
JSON 响应
HTTP/1.1 200 OK
Content-Type: application/json
{
"statuses": {
"loadbalancer": {
"operating_status": "ONLINE",
"provisioning_status": "ACTIVE",
"listeners": [
{
"id": "6978ba19-1090-48a2-93d5-3523592b562a",
"operating_status": "ONLINE",
"provisioning_status": "ACTIVE",
"pools": [
{
"id": "f6aedfcb-9f7d-4cc5-83e1-8c02fd833922",
"operating_status": "ONLINE",
"provisioning_status": "ACTIVE",
"members": [
{
"id": "fcf23bde-8cf9-4616-883f-208cebcbf858",
"operating_status": "ONLINE",
"provisioning_status": "ACTIVE"
}
],
"healthmonitor": {
"id": "785131d2-8f7b-4fee-a7e7-3196e11b4518",
"provisioning_status": "ACTIVE"
}
}
]
}
]
}
}
}
检索特定负载均衡器的统计信息
| 动词 | URI |
| GET | /lbaas/loadbalancers/loadbalancer_id/stats |
正常响应代码: 200
错误响应代码:401(未授权)、403(禁止)、404(未找到)、413(超出限制)、500(内部服务器错误)、503(服务不可用)
此操作返回由 loadbalancer_id 标识的负载均衡器对象的统计信息。如果用户不是管理员,并且负载均衡器对象不属于她的租户帐户,她将收到 403(禁止)错误。
此操作不需要请求主体。
此操作返回响应体。成功后,返回的元素是负载均衡器及其侦听器的统计信息的表示形式。
示例。检索负载均衡器的状态树
JSON 请求
GET /lbaas/loadbalancers/36e08a3e-a78f-4b40-a229-1e7e23eee1ab Host: lbaas-service.cloudX.com:8651 Accept: application/json X-Auth-Token:887665443383838
JSON 响应
HTTP/1.1 200 OK
Content-Type: application/json
{
"stats": {
"loadbalancer": {
"bytes_in": 0,
"bytes_out": 0,
"connections": 0,
"active_connections": 0
}
}
}
监听器
使用以下 API 管理监听器资源
| 动词 | URI |
| GET | /lbaas/listeners/ |
| GET | /lbaas/listeners/listener_id |
| POST | /lbaas/listeners |
| PUT | /lbaas/listeners/listener_id |
| DELETE | /lbaas/listeners/listener_id |
列出所有监听器
| 动词 | URI |
| GET | /lbaas/listeners/ |
正常响应代码: 200
错误响应代码:401(未授权),500(内部服务器错误),503(服务不可用)
此操作返回与您的租户帐户关联的所有监听器的列表。
此操作不需要请求主体。
此操作返回响应体。它返回一个(可能为空)列表,列表中的每个元素都是一个监听器,其中包含以下属性
- id
- tenant_id
- name
- description
- protocol
- protocol_port
- connection_limit
- default_pool_id
- admin_state_up
- loadbalancers
示例。列出所有监听器
JSON 请求
GET /lbaas/listeners Host: lbaas-service.cloudX.com:8651 Accept: application/json X-Auth-Token:887665443383838
JSON 响应
HTTP/1.1 200 OK
Content-Type: application/json
{
"listeners": [
{
"default_pool_id": null,
"protocol": "HTTP",
"description": "",
"admin_state_up": true,
"loadbalancers": [
{
"id": "a9729389-6147-41a3-ab22-a24aed8692b2"
}
],
"tenant_id": "3e4d8bec50a845fcb09e03a4375c691d",
"connection_limit": 100,
"protocol_port": 80,
"id": "35cb8516-1173-4035-8dae-0dae3453f37f",
"name": ""
}
]
}
检索特定的监听器
| 动词 | URI |
| GET | /lbaas/listeners/"listener_id |
正常响应代码: 200
错误响应代码:401(未授权),403(禁止),404(未找到),409(冲突),413(超出限制),500(内部服务器错误),503(服务不可用)
此操作返回一个由 listener_id 标识的监听器对象。如果用户不是管理员,并且监听器对象不属于她的租户帐户,她将收到 403(禁止)错误。
此操作不需要请求主体。
此操作返回响应体。成功后,返回的元素是一个监听器,其中包含以下属性
- id
- tenant_id
- name
- description
- protocol
- protocol_port
- connection_limit
- default_pool_id
- admin_state_up
- loadbalancers
示例。检索监听器的详细信息
JSON 请求
GET /lbaas/listeners/35cb8516-1173-4035-8dae-0dae3453f37f Host: lbaas-service.cloudX.com:8651 Accept: application/json X-Auth-Token:887665443383838
JSON 响应
HTTP/1.1 200 OK
Content-Type: application/json
{
"listener": {
"default_pool_id": null,
"protocol": "HTTP",
"description": "",
"admin_state_up": true,
"loadbalancers": [
{
"id": "a9729389-6147-41a3-ab22-a24aed8692b2"
}
],
"tenant_id": "3e4d8bec50a845fcb09e03a4375c691d",
"connection_limit": 100,
"protocol_port": 80,
"id": "35cb8516-1173-4035-8dae-0dae3453f37f",
"name": ""
}
}
创建监听器
| 动词 | URI |
| POST | /lbaas/listeners |
正常响应代码: 201
错误响应代码:401(未授权),404(未找到),409(冲突),413(超出限制),500(内部服务器错误),503(服务不可用)
此操作根据请求对象中定义的配置配置新的监听器。在验证请求并开始配置过程后,将返回一个响应对象。该对象将包含一个唯一的标识符。
此操作的调用者必须指定监听器的以下属性
- tenant_id:仅当调用者具有管理员角色并希望为其他租户创建监听器时才需要。
- loadbalancer_id:此监听器将配置到的负载均衡器。租户只能在其授权的网络(例如她自己的负载均衡器)上创建监听器。
- protocol:前端将侦听的协议。必须是 TCP、HTTP 或 HTTPS 之一
- protocol_port:前端将侦听的端口。必须是 1 到 65535 范围内的整数
如果请求中未指定某些属性,将收到默认值
- admin_state_up:此属性的默认值为 true。
- name:此属性的默认值为一个空字符串。
- description:此属性的默认值为一个空字符串。
- connection_limit:此属性的默认值为 -1,表示无限限制。
如果由于数据不足或无效而无法满足请求,将返回 HTTP 400(错误请求)错误响应,其中响应主体包含有关故障性质的信息。验证过程中的故障无法恢复,需要调用者更正故障原因并再次发布请求。
用户可以通过在请求中简单地提供其他元素或属性来配置监听器的所有已记录功能。
具有管理员角色的用户可以通过指定与他们自己不同的 tenant_id 属性来代表其他租户创建监听器。
如果负载均衡器尝试附加到的负载均衡器未处于 ACTIVE 配置状态,则无法更新监听器。
示例。创建监听器
JSON 请求
POST /lbaas/listeners
Host: lbaas-service.cloudX.com:8651
Content-Type: application/json
Accept: application/json
X-Auth-Token:887665443383838
{
"listener": {
"loadbalancer_id": "a36c20d0-18e9-42ce-88fd-82a35977ee8c",
"protocol": "HTTP",
"protocol_port": "80",
"connection_limit": 100,
"admin_state_up": true,
"name": "listener1",
"description": "listener one"
}
}
JSON 响应
HTTP/1.1 201 Created
Content-Type: application/json
Content-Length: 213
{
"listener": {
"default_pool_id": null,
"protocol": "HTTP",
"description": "listener one",
"admin_state_up": true,
"loadbalancers": [
{
"id": "a36c20d0-18e9-42ce-88fd-82a35977ee8c"
}
],
"tenant_id": "1a3e005cf9ce40308c900bcb08e5320c",
"connection_limit": 100,
"protocol_port": 80,
"id": "39de4d56-d663-46e5-85a1-5b9d5fa17829",
"name": "listener1"
}
}
更新监听器
| 动词 | URI |
| PUT | /lbaas/listeners/listener_id |
正常响应代码: 200
错误响应代码:serviceFault (500),serviceUnavailable (503),unauthorized (401),badRequest (400),overLimit (413)
此操作更新指定的监听器的属性。在成功验证请求后,服务将返回 202(已接受)响应代码。
更新操作允许调用者更改以下监听器属性之一
- name
- description
- admin_state_up
- connection_limit
Note The Listener's ID, tenant_id, loadbalancer_id, loadbalancers, default_pool_id, protocol, and protocol_port are immutable attributes and cannot be updated. Supplying an unsupported attribute will result in a 422 (Immutable) fault.
Note A Listener cannot be update if the load balancer it is attached to is not in an ACTIVE provisioning_status.
示例。更新监听器
JSON 请求
PUT /lbaas/listeners/39de4d56-d663-46e5-85a1-5b9d5fa17829
Host: lbaas-service.cloudX.com:8651
Content-Type: application/json
Accept: application/json
X-Auth-Token:887665443383838
Content-Length: 75
{
"listener": {
"name": "listener2",
"description": "listener two",
"admin_state_up": false,
"connection_limit": 200
}
}
JSON 响应
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 282
{
"listener": {
"default_pool_id": null,
"protocol": "HTTP",
"description": "listener two",
"admin_state_up": false,
"loadbalancers": [
{
"id": "a36c20d0-18e9-42ce-88fd-82a35977ee8c"
}
],
"tenant_id": "1a3e005cf9ce40308c900bcb08e5320c",
"connection_limit": 200,
"protocol_port": 80,
"id": "39de4d56-d663-46e5-85a1-5b9d5fa17829",
"name": "listener2"
}
}
删除监听器
| 动词 | URI | |
| DELETE | /lbaas/listeners/listener_id | 从帐户中删除监听器。 |
正常响应代码: 204
错误响应代码:serviceFault(500)、serviceUnavailable(503)、unauthorized(401)、badRequest(400)、Conflict(409)、overLimit(413)
此操作从租户帐户中删除指定的监听器及其关联的配置。所有配置数据立即被清除且无法恢复。
此操作不需要请求主体。
此操作不返回响应主体。
如果监听器附加到的负载均衡器未处于 ACTIVE 配置状态,则无法删除监听器。
示例。删除监听器
JSON 请求
DELETE /lbaas/listeners/39de4d56-d663-46e5-85a1-5b9d5fa17829 Host: lbaas-service.cloudX.com:8651 Accept: application/json X-Auth-Token:887665443383838
JSON 响应
HTTP/1.1 204 No Content
池
使用以下 API 管理池资源
| 动词 | URI |
| GET | /lbaas/pools/ |
| GET | /lbaas/pools/pool_id |
| POST | /lbaas/pools |
| PUT | /lbaas/pools/pool_id |
| DELETE | /lbaas/pools/pool_id |
列出所有池
| 动词 | URI |
| GET | /lbaas/pools/ |
正常响应代码: 200
错误响应代码:401(未授权),500(内部服务器错误),503(服务不可用)
此操作返回与您的租户帐户关联的所有池的列表。
此操作不需要请求主体。
此操作返回响应体。它返回一个(可能为空)列表,列表中的每个元素都是一个池,其中包含以下属性
- id
- tenant_id
- name
- description
- protocol
- lb_algorithm
- session_persistence
- admin_state_up
- listeners
- members
- healthmonitor_id
示例。列出所有池
JSON 请求
GET /lbaas/pools Host: lbaas-service.cloudX.com:8651 Accept: application/json X-Auth-Token:887665443383838
JSON 响应
HTTP/1.1 200 OK
Content-Type: application/json
{
"pools": [
{
"lb_algorithm": "ROUND_ROBIN",
"protocol": "HTTP",
"description": "simple pool",
"admin_state_up": true,
"tenant_id": "1a3e005cf9ce40308c900bcb08e5320c",
"healthmonitor_id": null,
"listeners": [
{
"id": "35cb8516-1173-4035-8dae-0dae3453f37f"
}
],
"members": [ ],
"id": "4c0a0a5f-cf8f-44b7-b912-957daa8ce5e5",
"name": "pool1"
}
]
}
检索特定的池
| 动词 | URI |
| GET | /lbaas/pools/"pool_id |
正常响应代码: 200
错误响应代码:401(未授权),403(禁止),404(未找到),409(冲突),413(超出限制),500(内部服务器错误),503(服务不可用)
此操作返回一个由 pool_id 标识的池对象。如果用户不是管理员,并且池对象不属于她的租户帐户,她将收到 403(禁止)错误。
此操作不需要请求主体。
此操作返回响应体。成功后,返回的元素是一个池,其中包含以下属性
- id
- tenant_id
- name
- description
- protocol
- lb_algorithm
- session_persistence
- admin_state_up
- listeners
- members
- healthmonitor_id
示例。检索池的详细信息
JSON 请求
GET /lbaas/pools/35cb8516-1173-4035-8dae-0dae3453f37f Host: lbaas-service.cloudX.com:8651 Accept: application/json X-Auth-Token:887665443383838
JSON 响应
HTTP/1.1 200 OK
Content-Type: application/json
{
"pool": {
"lb_algorithm": "ROUND_ROBIN",
"protocol": "HTTP",
"description": "simple pool",
"admin_state_up": true,
"tenant_id": "1a3e005cf9ce40308c900bcb08e5320c",
"healthmonitor_id": null,
"listeners": [
{
"id": "35cb8516-1173-4035-8dae-0dae3453f37f"
}
],
"members": [],
"id": "4c0a0a5f-cf8f-44b7-b912-957daa8ce5e5",
"name": "pool1"
}
}
创建池
| 动词 | URI |
| POST | /lbaas/pools |
正常响应代码: 201
错误响应代码:401(未授权),404(未找到),409(冲突),413(超出限制),500(内部服务器错误),503(服务不可用)
此操作根据请求对象中定义的配置配置新的池。在验证请求并开始配置过程后,将返回一个响应对象。该对象将包含一个唯一的标识符。
此操作的调用者必须指定池的至少以下属性
- tenant_id:仅当调用者具有管理员角色并希望为其他租户创建池时才需要。
- protocol:此池及其成员将侦听的协议。必须是 TCP、HTTP 或 HTTPS 之一
- lb_algorithm:将流量分配到池的成员的负载均衡算法。必须是 ROUND_ROBIN、LEAST_CONNECTIONS 或 SOURCE_IP 之一。
- listener_id:此池将成为默认池的监听器。一个监听器只能有一个默认池。
如果请求中未指定某些属性,将收到默认值
- admin_state_up:此属性的默认值为 true。
- name:此属性的默认值为一个空字符串。
- description:此属性的默认值为一个空字符串。
- session_persistence:默认情况下,此值为一个空字典。
如果由于数据不足或无效而无法满足请求,将返回 HTTP 400(错误请求)错误响应,其中响应主体包含有关故障性质的信息。验证过程中的故障无法恢复,需要调用者更正故障原因并再次发布请求。
用户可以通过在请求中简单地提供其他元素或属性来配置池的所有已记录功能。
具有管理员角色的用户可以通过指定与他们自己不同的 tenant_id 属性来代表其他租户创建池。
如果负载均衡器尝试附加到的负载均衡器未处于 ACTIVE 配置状态,则无法更新池。
示例。创建池
JSON 请求
POST /lbaas/pools
Host: lbaas-service.cloudX.com:8651
Content-Type: application/json
Accept: application/json
X-Auth-Token:887665443383838
{
"pool": {
"name": "pool1",
"description": "simple pool",
"listener_id": "39de4d56-d663-46e5-85a1-5b9d5fa17829",
"lb_algorithm": "ROUND_ROBIN",
"protocol": "HTTP",
"session_persistence": {
"type": "APP_COOKIE",
"cookie_name": "my_cookie"
},
"admin_state_up": true
}
}
JSON 响应
HTTP/1.1 201 Created
Content-Type: application/json
Content-Length: 213
{
"pool": {
"lb_algorithm": "ROUND_ROBIN",
"protocol": "HTTP",
"description": "simple pool",
"admin_state_up": true,
"tenant_id": "1a3e005cf9ce40308c900bcb08e5320c",
"session_persistence": {
"cookie_name": "my_cookie",
"type": "APP_COOKIE"
},
"healthmonitor_id": null,
"listeners": [
{
"id": "39de4d56-d663-46e5-85a1-5b9d5fa17829"
}
],
"members": [],
"id": "12ff63af-4127-4074-a251-bcb2ecc53ebe",
"name": "pool1"
}
}
更新池
| 动词 | URI |
| PUT | /lbaas/pools/pool_id |
正常响应代码: 200
错误响应代码:serviceFault (500),serviceUnavailable (503),unauthorized (401),badRequest (400),overLimit (413)
此操作更新指定的池的属性。在成功验证请求后,服务将返回 202(已接受)响应代码。
更新操作允许调用者更改以下池属性之一
- name
- description
- admin_state_up
- lb_algorithm
- session_persistence
Note The Pool's ID, tenant_id, listener_id, listeners, healthmonitor_id, protocol, and members are immutable attributes and cannot be updated. Supplying an unsupported attribute will result in a 422 (Immutable) fault.
Note A Pool cannot be updated if the load balancer it is attached to is not in an ACTIVE provisioning_status.
示例。更新池
JSON 请求
PUT /lbaas/pools/12ff63af-4127-4074-a251-bcb2ecc53ebe
Host: lbaas-service.cloudX.com:8651
Content-Type: application/json
Accept: application/json
X-Auth-Token:887665443383838
Content-Length: 75
{
"pool": {
"name": "pool2",
"description": "pool two",
"admin_state_up": false,
"lb_algorithm": "LEAST_CONNECTIONS",
"session_persistence": {"type": "HTTP_COOKIE"}
}
}
JSON 响应
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 282
{
"pool": {
"lb_algorithm": "LEAST_CONNECTIONS",
"protocol": "HTTP",
"description": "pool two",
"admin_state_up": false,
"tenant_id": "1a3e005cf9ce40308c900bcb08e5320c",
"session_persistence": {
"cookie_name": null,
"type": "HTTP_COOKIE"
},
"healthmonitor_id": null,
"listeners": [
{
"id": "39de4d56-d663-46e5-85a1-5b9d5fa17829"
}
],
"members": [],
"id": "12ff63af-4127-4074-a251-bcb2ecc53ebe",
"name": "pool2"
}
}
删除池
| 动词 | URI | |
| DELETE | /lbaas/pools/pool_id | 从帐户中删除池。 |
正常响应代码: 204
错误响应代码:serviceFault(500)、serviceUnavailable(503)、unauthorized(401)、badRequest(400)、Conflict(409)、overLimit(413)
此操作从租户帐户中删除指定的池及其关联的配置。所有配置数据立即被清除且无法恢复。
此操作不需要请求主体。
此操作不返回响应主体。
如果负载均衡器所附加的池的状态不是 ACTIVE,则无法删除该池。
示例:删除一个池
JSON 请求
DELETE /lbaas/pools/12ff63af-4127-4074-a251-bcb2ecc53ebe Host: lbaas-service.cloudX.com:8651 Accept: application/json X-Auth-Token:887665443383838
JSON 响应
HTTP/1.1 204 No Content
成员
使用以下 API 管理 Member 资源
| 动词 | URI |
| GET | /lbaas/pools/pool_id/members |
| GET | /lbaas/pools/pool_id/members/member_id |
| POST | /lbaas/pools/pool_id/members |
| PUT | /lbaas/pools/pool_id/members/member_id |
| DELETE | /lbaas/pools/pool_id/members/member_id |
列出池的所有 Member
| 动词 | URI |
| GET | /lbaas/pools/pool_id/members |
正常响应代码: 200
错误响应代码:401(未授权),500(内部服务器错误),503(服务不可用)
此操作返回与您的租户帐户关联的所有成员的列表。显示的成员列表仅包含属于由 pool_id 标识的池对象的成员。
此操作不需要请求主体。
此操作返回响应体。它返回一个(可能为空)列表,列表中的每个元素都是一个 Member,其中包含以下属性
- id
- tenant_id
- address
- protocol_port
- weight
- subnet_id
- admin_state_up
示例:列出池的所有 Member
JSON 请求
GET /lbaas/pools/4c0a0a5f-cf8f-44b7-b912-957daa8ce5e5/members Host: lbaas-service.cloudX.com:8651 Accept: application/json X-Auth-Token:887665443383838
JSON 响应
HTTP/1.1 200 OK
Content-Type: application/json
{
"members": [
{
"weight": 1,
"admin_state_up": true,
"subnet_id": "013d3059-87a4-45a5-91e9-d721068ae0b2",
"tenant_id": "1a3e005cf9ce40308c900bcb08e5320c",
"address": "10.0.0.8",
"protocol_port": 80,
"id": "9a7aff27-fd41-4ec1-ba4c-3eb92c629313"
}
]
}
检索池中的特定 Member
| 动词 | URI |
| GET | /lbaas/pools/"pool_id/members/member_id |
正常响应代码: 200
错误响应代码:401(未授权),403(禁止),404(未找到),409(冲突),413(超出限制),500(内部服务器错误),503(服务不可用)
此操作返回由 member_id 标识的属于由 pool_id 标识的池对象的 Member 对象。如果用户不是管理员,并且 Pool 或 Member 对象不属于她的租户帐户,她将收到 403(禁止)错误。
此操作不需要请求主体。
此操作返回响应体。成功后,返回的元素是一个池,其中包含以下属性
- id
- tenant_id
- address
- protocol_port
- weight
- subnet_id
- admin_state_up
示例:检索 Member 的详细信息
JSON 请求
GET /lbaas/pools/4c0a0a5f-cf8f-44b7-b912-957daa8ce5e5/members/9a7aff27-fd41-4ec1-ba4c-3eb92c629313 Host: lbaas-service.cloudX.com:8651 Accept: application/json X-Auth-Token:887665443383838
JSON 响应
HTTP/1.1 200 OK
Content-Type: application/json
{
"member": {
"weight": 1,
"admin_state_up": true,
"subnet_id": "013d3059-87a4-45a5-91e9-d721068ae0b2",
"tenant_id": "1a3e005cf9ce40308c900bcb08e5320c",
"address": "10.0.0.8",
"protocol_port": 80,
"id": "9a7aff27-fd41-4ec1-ba4c-3eb92c629313"
}
}
向池添加新的 Member
| 动词 | URI |
| POST | /lbaas/pools/pool_id/members |
正常响应代码: 201
错误响应代码:401(未授权),404(未找到),409(冲突),413(超出限制),500(内部服务器错误),503(服务不可用)
此操作根据请求对象中定义的配置,预置一个新的 Member 并将其添加到池中。一旦请求通过验证并开始预置过程,将返回一个响应对象。该对象将包含一个唯一的标识符。
此操作的调用者必须指定池的至少以下属性
- tenant_id:仅当调用者具有管理员角色并希望为其他租户创建池时才需要。
- address:负载均衡器接收流量的 Member 的 IP 地址。
- protocol_port:Member 侦听接收流量的端口。
- subnet_id:访问 Member 的子网。
如果请求中未指定某些属性,将收到默认值
- admin_state_up:此属性的默认值为 true。
- weight:此属性的默认值为 1。
如果由于数据不足或无效而无法满足请求,将返回 HTTP 400(错误请求)错误响应,其中响应主体包含有关故障性质的信息。验证过程中的故障无法恢复,需要调用者更正故障原因并再次发布请求。
用户只需在请求中提供额外的元素或属性,即可在创建时配置 Member 的所有已记录功能。
具有管理员角色的用户可以通过指定与他们自己不同的 tenant_id 属性,代表其他租户创建 Member。
如果负载均衡器尝试附加到的状态不是 ACTIVE,则无法更新 Member。
示例:向池添加 Member
JSON 请求
POST /lbaas/pools/4c0a0a5f-cf8f-44b7-b912-957daa8ce5e5/members
Host: lbaas-service.cloudX.com:8651
Content-Type: application/json
Accept: application/json
X-Auth-Token:887665443383838
{
"member": {
"address": "10.0.0.8",
"protocol_port": "80",
"admin_state_up": true,
"subnet_id": "013d3059-87a4-45a5-91e9-d721068ae0b2",
"weight": "1"
}
}
JSON 响应
HTTP/1.1 201 Created
Content-Type: application/json
Content-Length: 213
{
"member": {
"weight": 1,
"admin_state_up": true,
"subnet_id": "013d3059-87a4-45a5-91e9-d721068ae0b2",
"tenant_id": "1a3e005cf9ce40308c900bcb08e5320c",
"address": "10.0.0.8",
"protocol_port": 80,
"id": "9a7aff27-fd41-4ec1-ba4c-3eb92c629313"
}
}
更新池的 Member
| 动词 | URI |
| PUT | /lbaas/pools/pool_id/members/member_id |
正常响应代码: 200
错误响应代码:serviceFault (500),serviceUnavailable (503),unauthorized (401),badRequest (400),overLimit (413)
此操作更新指定池的属性。在成功验证请求后,服务将返回 200(OK)响应代码。
更新操作允许调用者更改以下池属性之一
- weight
- admin_state_up
Note The Member's ID, tenant_id, address, protocol_port, and subnet_id are immutable attributes and cannot be updated. Supplying an unsupported attribute will result in a 422 (Immutable) fault.
Note A Member cannot be updated if the load balancer it is attached to is not in an ACTIVE provisioning_status.
示例:更新池的 Member
JSON 请求
PUT /lbaas/pools/4c0a0a5f-cf8f-44b7-b912-957daa8ce5e5/members/9a7aff27-fd41-4ec1-ba4c-3eb92c629313
Host: lbaas-service.cloudX.com:8651
Content-Type: application/json
Accept: application/json
X-Auth-Token:887665443383838
Content-Length: 75
{
"member": {
"admin_state_up": false,
"weight": 5
}
}
JSON 响应
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 282
{
"member": {
"weight": 5,
"admin_state_up": false,
"subnet_id": "013d3059-87a4-45a5-91e9-d721068ae0b2",
"tenant_id": "1a3e005cf9ce40308c900bcb08e5320c",
"address": "10.0.0.8",
"protocol_port": 80,
"id": "9a7aff27-fd41-4ec1-ba4c-3eb92c629313"
}
}
从池中删除 Member
| 动词 | URI | |
| DELETE | /lbaas/pools/pool_id/members/member_id | 从池中删除 Member。 |
正常响应代码: 204
错误响应代码:serviceFault(500)、serviceUnavailable(503)、unauthorized(401)、badRequest(400)、Conflict(409)、overLimit(413)
此操作从租户帐户中删除指定的 Member 及其关联的配置。所有配置数据将被立即清除,且无法恢复。
此操作不需要请求主体。
此操作不返回响应主体。
如果负载均衡器尝试附加到的状态不是 ACTIVE,则无法删除 Member。
示例:从池中删除 Member
JSON 请求
DELETE /lbaas/pools/12ff63af-4127-4074-a251-bcb2ecc53ebe/members/9a7aff27-fd41-4ec1-ba4c-3eb92c629313 Host: lbaas-service.cloudX.com:8651 Accept: application/json X-Auth-Token:887665443383838
JSON 响应
HTTP/1.1 204 No Content
健康监控
使用以下 API 管理 Health Monitor 资源
| 动词 | URI |
| GET | /lbaas/healthmonitors/ |
| GET | /lbaas/healthmonitors/healthmonitor_id |
| POST | /lbaas/healthmonitors |
| PUT | /lbaas/healthmonitors/healthmonitor_id |
| DELETE | /lbaas/healthmonitors/healthmonitor_id |
列出所有健康监控
| 动词 | URI |
| GET | /lbaas/healthmonitors/ |
正常响应代码: 200
错误响应代码:401(未授权),500(内部服务器错误),503(服务不可用)
此操作返回与您的租户帐户关联的所有健康监控器的列表。
此操作不需要请求主体。
此操作返回响应体。它返回一个(可能为空)列表,列表中的每个元素都是一个 Health Monitor,其中包含以下属性
- id
- tenant_id
- type
- delay
- timeout
- max_retries
- http_method
- url_path
- expected_codes
- admin_state_up
- pool_id
- pools
示例:列出所有 Health Monitor
JSON 请求
GET /lbaas/healthmonitors Host: lbaas-service.cloudX.com:8651 Accept: application/json X-Auth-Token:887665443383838
JSON 响应
HTTP/1.1 200 OK
Content-Type: application/json
{
"healthmonitors": [
{
"admin_state_up": true,
"tenant_id": "6f3584d5754048a18e30685362b88411",
"delay": 1,
"expected_codes": "200,201,202",
"max_retries": 5,
"http_method": "GET",
"timeout": 1,
"pools": [
{
"id": "74aa2010-a59f-4d35-a436-60a6da882819"
}
],
"url_path": "/index.html",
"type": "HTTP",
"id": "0a9ac99d-0a09-4b18-8499-a0796850279a"
}
]
}
检索特定的 Health Monitor
| 动词 | URI |
| GET | /lbaas/healthmonitors/"healthmonitor_id |
正常响应代码: 200
错误响应代码:401(未授权),403(禁止),404(未找到),409(冲突),413(超出限制),500(内部服务器错误),503(服务不可用)
此操作返回由 healthmonitor_id 标识的 Health Monitor 对象。如果用户不是管理员,并且 Health Monitor 对象不属于她的租户帐户,她将收到 403(禁止)错误。
此操作不需要请求主体。
此操作返回响应体。成功后,返回的元素是一个 Health Monitor,其中包含以下属性
- id
- tenant_id
- type
- delay
- timeout
- max_retries
- http_method
- url_path
- expected_codes
- admin_state_up
- pool_id
- pools
示例:检索 Health Monitor 的详细信息
JSON 请求
GET /lbaas/healthmonitors/35cb8516-1173-4035-8dae-0dae3453f37f Host: lbaas-service.cloudX.com:8651 Accept: application/json X-Auth-Token:887665443383838
JSON 响应
HTTP/1.1 200 OK
Content-Type: application/json
{
"healthmonitor": {
"admin_state_up": true,
"tenant_id": "6f3584d5754048a18e30685362b88411",
"delay": 1,
"expected_codes": "200,201,202",
"max_retries": 5,
"http_method": "GET",
"timeout": 1,
"pools": [
{
"id": "74aa2010-a59f-4d35-a436-60a6da882819"
}
],
"url_path": "/index.html",
"type": "HTTP",
"id": "0a9ac99d-0a09-4b18-8499-a0796850279a"
}
}
创建健康监控
| 动词 | URI |
| POST | /lbaas/healthmonitors |
正常响应代码: 201
错误响应代码:401(未授权),404(未找到),409(冲突),413(超出限制),500(内部服务器错误),503(服务不可用)
此操作根据请求对象中定义的配置,预置一个新的 Health Monitor。一旦请求通过验证并开始预置过程,将返回一个响应对象。该对象将包含一个唯一的标识符。
此操作的调用者必须指定 Health Monitor 的至少以下属性
- tenant_id:仅当调用者具有管理员角色并希望为另一个租户创建 Health Monitor 时才需要。
- type:健康监控器的类型。必须是 TCP、HTTP 或 HTTPS 之一
- delay:健康检查之间的秒数间隔。
- timeout:健康检查超时的时间(秒)。
- max_retries:标记为 OFFLINE 之前的失败健康检查次数。
- pool_id:此健康监控器将监控的池。
如果请求中未指定某些属性,则它们将接收默认值,并且仅在健康监控器类型为 HTTP(S) 时才有用
- http_method:此属性的默认值为 GET。
- url_path:默认值为“/”
- expected_codes:从成功的健康检查中获得的预期 http 状态码。默认为 200。
- admin_state_up:默认值为 true。
如果由于数据不足或无效而无法满足请求,将返回 HTTP 400(错误请求)错误响应,其中响应主体包含有关故障性质的信息。验证过程中的故障无法恢复,需要调用者更正故障原因并再次发布请求。
用户只需在请求中提供额外的元素或属性,即可在创建时配置 Health Monitor 的所有已记录功能。
具有管理员角色的用户可以通过指定与他们自己不同的 tenant_id 属性,代表其他租户创建 Health Monitor。
如果负载均衡器尝试附加到的状态不是 ACTIVE,则无法更新 Health Monitor。
示例:创建一个 Health Monitor
JSON 请求
POST /lbaas/healthmonitors
Host: lbaas-service.cloudX.com:8651
Content-Type: application/json
Accept: application/json
X-Auth-Token:887665443383838
{
"healthmonitor": {
"pool_id": "74aa2010-a59f-4d35-a436-60a6da882819",
"type": "HTTP",
"delay": "1",
"timeout": 1,
"http_method": "GET",
"url_path": "/index.html",
"expected_codes": "200,201,202",
"max_retries": 5,
"admin_state_up": true
}
}
JSON 响应
HTTP/1.1 201 Created
Content-Type: application/json
Content-Length: 213
{
"healthmonitor": {
"admin_state_up": true,
"tenant_id": "6f3584d5754048a18e30685362b88411",
"delay": 1,
"expected_codes": "200,201,202",
"max_retries": 5,
"http_method": "GET",
"timeout": 1,
"pools": [
{
"id": "74aa2010-a59f-4d35-a436-60a6da882819"
}
],
"url_path": "/index.html",
"type": "HTTP",
"id": "0a9ac99d-0a09-4b18-8499-a0796850279a"
}
}
更新健康监控
| 动词 | URI |
| PUT | /lbaas/healthmonitors/healthmonitor_id |
正常响应代码: 200
错误响应代码:serviceFault (500),serviceUnavailable (503),unauthorized (401),badRequest (400),overLimit (413)
此操作更新指定的 Health Monitor 的属性。在成功验证请求后,服务将返回 202(已接受)响应代码。
更新操作允许调用者更改以下 Health Monitor 属性之一或多个
- delay
- timeout
- max_retries
- http_method
- url_path
- expected_codes
- admin_state_up
Note The Health Monitor's ID, tenant_id, pool_id, and type are immutable attributes and cannot be updated. Supplying an unsupported attribute will result in a 422 (Immutable) fault.
Note A Health Monitor cannot be updated if the load balancer it is attached to is not in an ACTIVE provisioning_status.
示例:更新 Health Monitor
JSON 请求
PUT /lbaas/healthmonitors/12ff63af-4127-4074-a251-bcb2ecc53ebe
Host: lbaas-service.cloudX.com:8651
Content-Type: application/json
Accept: application/json
X-Auth-Token:887665443383838
Content-Length: 75
{
"healthmonitor": {
"delay": "2",
"timeout": 2,
"http_method": "POST",
"url_path": "/page.html",
"expected_codes": "200",
"max_retries": 2,
"admin_state_up": false
}
}
JSON 响应
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 282
{
"healthmonitor": {
"admin_state_up": false,
"tenant_id": "6f3584d5754048a18e30685362b88411",
"delay": 2,
"expected_codes": "200",
"max_retries": 2,
"http_method": "POST",
"timeout": 2,
"pools": [
{
"id": "74aa2010-a59f-4d35-a436-60a6da882819"
}
],
"url_path": "/page.html",
"type": "HTTP",
"id": "0a9ac99d-0a09-4b18-8499-a0796850279a"
}
}
删除 Health Monitor
| 动词 | URI | |
| DELETE | /lbaas/healthmonitors/healthmonitor_id | 从帐户中删除 Health Monitor。 |
正常响应代码: 204
错误响应代码:serviceFault(500)、serviceUnavailable(503)、unauthorized(401)、badRequest(400)、Conflict(409)、overLimit(413)
此操作从租户帐户中删除指定的 Health Monitor 及其关联的配置。所有配置数据将被立即清除,且无法恢复。
此操作不需要请求主体。
此操作不返回响应主体。
如果负载均衡器尝试附加到的状态不是 ACTIVE,则无法删除 Health Monitor。
示例:删除 Health Monitor
JSON 请求
DELETE /lbaas/healthmonitors/12ff63af-4127-4074-a251-bcb2ecc53ebe Host: lbaas-service.cloudX.com:8651 Accept: application/json X-Auth-Token:887665443383838
JSON 响应
HTTP/1.1 204 No Content