Octavia API v2 (当前)

API 概述

本节将介绍 OpenStack Octavia v2 ReSTful HTTP API,并提供使用指南。

注意

为了区分 Octavia API 版本,我们已更新端点以支持以前文档中的 /v2.0 和新的路径 /v2。它们是完全相同的 API,并且 /v2.0 在 v2 API 的生命周期内将作为支持的别名。

服务端点

本文档其余部分描述的所有 API 调用都需要使用 OpenStack Identity 服务进行身份验证。身份验证后,可以从身份令牌返回的服务目录中提取“load-balancer”服务类型和“octavia”服务名称的基准 端点URL

示例令牌片段(含服务目录)

{
    "token": {
        "catalog": [
            {
                "endpoints": [
                    {
                        "url": "http://198.51.100.10:9876/",
                        "interface": "public",
                        "region": "RegionOne",
                        "region_id": "RegionOne",
                        "id": "cd1c3c2dc6434c739ed0a12015373754"
                    }
                ],
                "type": "load-balancer",
                "id": "1209701aecd3453e9803119cd28cb013",
                "name": "octavia"
            }
        ]
    }
}

例如,如果 端点URLhttp://198.51.100.10:9876/,那么 /v2/lbaas/loadbalancers 的完整 API 调用是 http://198.51.100.10:9876/v2/lbaas/loadbalancers

根据部署情况,load-balancer 端点URL 可能是 http 或 https、自定义端口、自定义路径,并且可能包含您的项目 ID。了解部署 URL 的唯一方法是使用服务目录。load-balancer 端点URL 绝不应硬编码在应用程序中,即使它们预计只在一个站点上工作。它们应始终从身份令牌中发现。

因此,在本文档的其余部分,我们将使用简写方式,其中 GET /v2/lbaas/loadbalancers 实际上意味着 GET {your_load-balancer_endpoint_URL}/v2/lbaas/loadbalancers

Neutron-lbaas 和 Octavia v2 API

Octavia v2 API 与 neutron-lbaas v2 API 完全向后兼容,并且是 neutron-lbaas v2 API 的超集。这是为了提供一个简单的迁移路径,供目前使用 neutron-lbaas v2 API 的部署使用。您可以将应用程序使用的端点从 keystone 服务目录更新为使用 octavia 端点而不是 neutron 端点来处理负载均衡器活动。

在 neutron-lbaas 弃用期间,neutron 中将包含一个直通代理,允许通过 neutron 和 neutron-lbaas v2 API 发出的请求继续正常工作。强烈建议用户将其应用程序更新为通过 Octavia v2 API 访问负载均衡。

警告

通过 neutron 端点访问的负载均衡功能已被弃用,将在未来版本中移除。强烈建议用户迁移到使用 octavia 端点。

身份验证和授权

Octavia API v2 使用 OpenStack Identity 服务作为默认身份验证服务。当 Keystone 启用时,向 Octavia 服务提交请求的用户必须在 **X-Auth-Token** 请求头中提供身份验证令牌。您可以通过向 Keystone 端点进行身份验证来获取令牌。

当 Keystone 启用时,在创建请求中不需要 project_id 属性,因为项目 ID 是从身份验证令牌派生的。

默认的授权设置仅允许管理员用户代表其他项目创建资源。

Octavia 使用从 Keystone 接收的信息来授权用户请求。Octavia Networking 处理以下类型的授权策略:

  • 基于操作的策略指定特定操作的访问标准,可能对特定属性进行精细控制。

  • 基于资源的策略访问特定资源。权限是否授予取决于为资源配置的权限。目前仅适用于网络资源。

Octavia 中实际强制执行的授权策略可能因部署而异。

请求和响应格式

Octavia API v2 仅支持 JSON 数据序列化请求和响应格式。

请求格式

Octavia API v2 仅接受 JSON 数据序列化格式的请求。请求必须没有 Accept 头,或者 Accept 头必须与 application/json 兼容。唯一的例外是 Oslo 中间件健康检查端点。

响应格式

Octavia API v2 始终以 JSON 数据序列化格式响应。唯一的例外是 Oslo 中间件健康检查端点。

查询扩展

可以在请求 URI 中添加 .json 扩展名。例如,以下请求中的 .json 扩展名是等效的:

  • GET publicURL/loadbalancers

  • GET publicURL/loadbalancers.json

过滤和列选择

Octavia API v2 支持基于资源所有顶级属性的过滤。过滤器适用于所有列表请求。

例如,以下请求返回所有名为 foobar 的负载均衡器:

GET /v2/lbaas/loadbalancers?name=foobar

当指定多个过滤器时,Octavia API v2 仅返回满足所有过滤条件的 O​​bjects。该操作在过滤器之间应用 AND 条件。

注意

Octavia 不提供 OR 过滤机制。

或者,您可以为每个过滤器发出不同的请求,并在客户端上从收到的响应构建一个响应集。

按标签过滤

版本 2.5 新增

大多数 Octavia 资源支持向资源属性添加标签。Octavia 支持使用这些标签进行高级过滤。Octavia API 支持以下标签过滤器:

  • tags - 返回具有此标签或标签的实体列表。

  • tags-any - 返回具有给定标签之一或多个的实体列表。

  • not-tags - 返回不具有给定标签之一或多个的实体列表。

  • not-tags-any - 返回不具有至少一个给定标签的实体列表。

提供标签列表时,标签应以逗号分隔的列表形式提供。

例如,如果您想获取同时具有“red”和“blue”标签的负载均衡器列表,您将请求:

GET /v2/lbaas/loadbalancers?tags=red,blue

要获取具有“red”或“blue”标签的负载均衡器列表,您将请求:

GET /v2/lbaas/loadbalancers?tags-any=red,blue

要获取不具有“red”标签的负载均衡器列表,您将请求:

GET /v2/lbaas/loadbalancers?not-tags=red

要获取不具有“red”或“blue”标签的负载均衡器列表,您将请求:

GET /v2/lbaas/loadbalancers?not-tags-any=red,blue

标签过滤器也可以在同一请求中组合:

GET /v2/lbaas/loadbalancers?tags=red,blue&tags-any=green,orange

列选择

默认情况下,Octavia 返回任何显示或列表调用的所有属性。Octavia API v2 有一种机制来限制返回的属性集。例如,返回 id

您可以使用 fields 查询参数来控制从 Octavia API v2 返回的属性。

例如,以下请求为每个负载均衡器仅返回 idname

GET /v2/lbaas/loadbalancers.json?fields=id&fields=name

同步与异步插件行为

Octavia API v2 提供了一个由监听器、池和成员组成的逻辑模型。由 OpenStack Octavia 插件负责与底层基础设施通信,以确保负载均衡与逻辑模型一致。插件可能会异步执行这些操作。

当 API 客户端通过发出 HTTP **POST**、**PUT** 或 **DELETE** 请求来修改逻辑模型时,API 调用可能在插件修改底层虚拟和物理负载均衡设备之前返回。但是,API 客户端保证所有后续 API 调用都能正确反映更改后的逻辑模型。

例如,如果客户端发出 HTTP **PUT** 请求来设置成员的权重,则不能保证在新权重生效时 HTTP 调用会返回。这由 HTTP 响应代码 202 指示。

您可以使用 provisioning_status 属性来确定 Octavia 插件是否已成功完成资源的配置。

批量创建

Octavia v2 API 不支持批量创建。您不能通过一次 API 调用创建多个负载均衡器。

Octavia v2 API 支持单次调用创建,允许您通过一次 API 调用创建完全配置的负载均衡器。这在本文档的负载均衡器创建部分有讨论。

分页

为了减少服务负载,列表操作每次将返回最大数量的项目。要导航集合,可以在 URI 中设置 limit、marker 和 page_reverse 参数。例如:

?limit=100&marker=1234&page_reverse=False

参数 marker 是前一个列表中最后一个项目的 ID。参数 limit 设置页面大小。参数 page_reverse 设置分页方向。这些参数是可选的。如果客户端请求的 limit 超出部署配置的最大 limit,则服务器将返回最大 limit 数量的项目。

为了方便起见,列表响应包含原子“next”链接和“previous”链接。使用‘page_reverse=False’请求的列表的最后一页将不包含“next”链接,使用‘page_reverse=True’请求的列表的最后一页将不包含“previous”链接。以下示例说明了三个项目的两页。第一页是通过以下方式检索的:

GET http://198.51.100.10:9876/v2/lbaas/loadbalancers.json?limit=2

如果特定插件不支持分页操作,Octavia API v2 将模拟分页行为,以便用户无论后台运行的是哪个插件都可以获得相同的行为。

示例负载均衡器列表,第一页:JSON 请求

GET /v2/lbaas/loadbalancers.json?limit=2 HTTP/1.1
Host: 198.51.100.10:9876
Content-Type: application/json
Accept: application/json

示例负载均衡器列表,第一页:JSON 响应

{
    "loadbalancers": [
        {
            "admin_state_up": true,
            "listeners": [],
            "vip_subnet_id": "08dce793-daef-411d-a896-d389cd45b1ea",
            "pools": [],
            "provider": "octavia",
            "description": "Best App load balancer 1",
            "name": "bestapplb1",
            "operating_status": "ONLINE",
            "id": "34d5f4a5-cbbc-43a0-878f-b8a26370e6e7",
            "provisioning_status": "ACTIVE",
            "vip_port_id": "1e20d91d-8df9-4c15-9778-28bc89226c19",
            "vip_address": "203.0.113.10",
            "project_id": "bf325b04-e7b1-4002-9b10-f4984630367f"
        },
        {
            "admin_state_up": true,
            "listeners": [],
            "vip_subnet_id": "08dce793-daef-411d-a896-d389cd45b1ea",
            "pools": [],
            "provider": "octavia",
            "description": "Second Best App load balancer 1",
            "name": "2ndbestapplb1",
            "operating_status": "ONLINE",
            "id": "0fdb0ca7-0a38-4aea-891c-daaed40bcafe",
            "provisioning_status": "ACTIVE",
            "vip_port_id": "21f7ac04-6824-4222-93cf-46e0d70607f9",
            "vip_address": "203.0.113.20",
            "project_id": "bf325b04-e7b1-4002-9b10-f4984630367f"
        }
    ],
    "loadbalancers_links": [
        {
            "href": "http://198.51.100.10:9876/v2/lbaas/loadbalancers.json?limit=2&marker=0fdb0ca7-0a38-4aea-891c-daaed40bcafe",
            "rel": "next"
        },
        {
            "href": "http://198.51.100.10:9876/v2/lbaas/loadbalancers.json?limit=2&marker=34d5f4a5-cbbc-43a0-878f-b8a26370e6e7&page_reverse=True",
            "rel": "previous"
        }
    ]
}

最后一页将不显示“next”链接

示例负载均衡器列表,最后一页:JSON 请求

GET /v2/lbaas/loadbalancers.json?limit=2&marker=4ef465f3-0233-44af-b93d-9d3eae4daf85 HTTP/1.1
Host: 198.51.100.10:9876
Content-Type: application/json
Accept: application/json

示例负载均衡器列表,最后一页:JSON 响应

{
    "loadbalancers": [
        {
            "admin_state_up": true,
            "listeners": [],
            "vip_subnet_id": "08dce793-daef-411d-a896-d389cd45b1ea",
            "pools": [],
            "provider": "octavia",
            "description": "Other App load balancer 1",
            "name": "otherapplb1",
            "operating_status": "ONLINE",
            "id": "4ef465f3-0233-44af-b93d-9d3eae4daf85",
            "provisioning_status": "ACTIVE",
            "vip_port_id": "f777a1c7-7f59-4a36-ad34-24dfebaf19e6",
            "vip_address": "203.0.113.50",
            "project_id": "bf325b04-e7b1-4002-9b10-f4984630367f"
        }
    ],
    "loadbalancers_links": [
        {
            "href": "http://198.51.100.10:9876/v2/lbaas/loadbalancers.json?limit=2&marker=4ef465f3-0233-44af-b93d-9d3eae4daf85&page_reverse=True",
            "rel": "previous"
        }
    ]
}

排序

排序通过使用 ‘sort’ 查询字符串参数来确定。此参数的值是以逗号分隔的排序键列表。排序方向可以可选地附加到每个排序键,用 ‘:’ 字符分隔。

支持的排序方向是“asc”(升序)或“desc”(降序)。

调用者可以(但不是必需)为每个键指定排序方向。如果未为键指定排序方向,则服务器将设置默认值。

例如

  • 仅指定排序键

    • sort=key1,key2,key3

    • ‘key1’是第一个键,‘key2’是第二个键,依此类推。

    • 排序方向由服务器默认

  • 指定了某些排序方向

    • sort=key1:asc,key2,key3

    • 任何没有相应方向的排序键都将使用默认值

    • ‘key1’是第一个键(升序),‘key2’是第二个键(由服务器默认方向),依此类推。

  • 指定了相同数量的排序键和方向

    • sort=key1:asc,key2:desc,key3:asc

    • 每个键都与相应的方向配对

    • ‘key1’是第一个键(升序),‘key2’是第二个键(降序),依此类推。

您还可以使用 sort_keysort_dir 参数对列表操作的结果进行排序。目前排序不适用于资源的扩展属性。 sort_keysort_dir 可以重复,并且提供的 sort_keysort_dir 的数量必须相同。 sort_dir 参数表示排序方向。可接受的值是 asc(升序)和 desc(降序)。

如果特定插件不支持排序操作,Octavia API v2 将模拟排序行为,以便用户无论后台运行的是哪个插件都可以获得相同的行为。

响应代码

Octavia v2 API 使用以下 HTTP 响应状态码。

成功

代码

描述

200

  • 同步请求成功

202

  • 异步请求已被接受并正在处理

204

  • 请求成功,无内容返回

  • 实体已成功删除

故障

Octavia API v2 在处理请求时发生失败时会返回错误响应。Octavia 仅使用标准的 HTTP 错误代码。4nn 错误表示客户端发送的特定请求存在问题。

代码

描述

400

  • 请求无效

  • 请求的 URI 或正文格式错误

  • 请求无法被理解

  • 输入值无效

  • 不允许批量操作

  • 验证失败

  • 请求正文不允许的操作(例如,尝试更新只能在创建时指定的属性)

401

  • 未经授权:由于凭据无效,访问被拒绝

403

  • 策略不允许当前用户执行此操作

  • 项目已超出配额

404

  • 未找到

  • URI 不存在

  • 资源未找到

409

  • 冲突

  • 资源处于不可变状态

500

  • 内部服务器错误

503

  • 服务不可用

  • 项目正忙于处理其他请求,请稍后重试

状态码

Octavia API v2 实体在响应体中有两个状态码。provisioning_status 描述了实体的生命周期状态,而 operating_status 提供了实体的观察状态。

例如,一个成员可能处于 PENDING_UPDATEprovisioning_status,并具有 ONLINEoperating_status。这表明该成员正在进行更新操作,处于不可变状态,但它是健康的并且能够处理请求。当用户发出更新成员权重的请求时,可能会出现这种情况。

运行状态码

代码

描述

ONLINE

  • 实体正常运行

  • 所有池成员都正常

DRAINING

  • 成员不再接受新连接

OFFLINE

  • 实体已停用

DEGRADED

  • 实体的一个或多个组件处于 ERROR 状态

ERROR

  • 实体已失败

  • 成员未通过健康监控检查

  • 所有池成员都处于 ERROR 状态

NO_MONITOR

  • 未为此实体配置健康监控,其状态未知

配置状态码

代码

描述

ACTIVE

  • 实体已成功配置

DELETED

  • 实体已成功删除

ERROR

  • 配置失败

PENDING_CREATE

  • 实体正在创建

PENDING_UPDATE

  • 实体正在更新

PENDING_DELETE

  • 实体正在删除

处于 PENDING_* 状态的实体是不可变的,在请求的操作完成后才能修改。当异步操作完成后,实体将返回到 ACTIVE 的配置状态。

处于 ERROR 状态的实体配置失败。可以删除并重新创建该实体。

协议组合(监听器/池)

监听器和池可以通过监听器的 default_pool_id 或 l7策略的 redirect_pool_id 关联。监听器和池都必须设置协议参数,但监听器和池之间的关联不是任意的,并且在协议方面有一些限制。

有效的协议组合

    监听器
HTTP

HTTPS

SCTP

TCP

TERMINATED_HTTPS

UDP

HTTP

  Y

  N

  N

  Y

        Y

  N

HTTPS

  N

  Y

  N

  Y

        N

  N

PROXY

  Y

  Y

  N

  Y

        Y

  N

PROXYV2

  Y

  Y

  N

  Y

        Y

  N

SCTP

  N

  N

  Y

  N

        N

  N

TCP

  N

  Y

  N

  Y

        N

  N

UDP

  N

  N

  N

  N

        N

  Y

“Y”表示组合有效,“N”表示无效。

HTTPS 协议是 HTTPS 直通。对于大多数提供商,这被视为 TCP 协议。一些高级提供商可能支持通过会话 ID 使用 HTTPS 会话持久性。Amphora 提供商将 HTTPS 视为 TCP 流,但目前不支持使用会话 ID 的 HTTPS 会话持久性。

池协议 PROXY 将使用监听器协议作为池协议,但会将该协议包装在代理协议中。在监听器协议 TERMINATED_HTTPS 的情况下,池协议 PROXY 将是包装在代理协议中的 HTTP。

协议组合(池/健康监控)

池和健康监控在协议方面也有关联。池设置实际成员连接的协议参数,健康监控为健康检查设置类型。健康检查类型受池协议的限制。

有效的协议组合

    健康监控
HTTP

HTTPS

PING

SCTP

TCP

TLS-HELLO

UDP-CONNECT

HTTP

  Y

  Y

  Y

  N

  Y

    Y

      N

HTTPS

  Y

  Y

  Y

  N

  Y

    Y

      N

PROXY

  Y

  Y

  Y

  N

  Y

    Y

      N

PROXYV2

  Y

  Y

  Y

  N

  Y

    Y

      N

SCTP

  Y

  N

  N

  Y

  Y

    N

      Y

TCP

  Y

  Y

  Y

  N

  Y

    Y

      N

UDP

  Y

  N

  N

  Y

  Y

    N

      Y

“Y”表示组合有效,“N”表示无效。

这些组合大多如您所料,适用于除 UDP/SCTP 池协议之外的所有协议:非 UDP/SCTP 池可以具有除 UDP-CONNECT 和 SCTP 之外的任何检查类型的健康监控。但对于 UDP 或 SCTP 池,情况要复杂一些。UDP 和 SCTP 池支持 UDP-CONNECT 和 SCTP,但也支持 HTTP 和 TCP 检查。HTTPS 检查在技术上可行,但尚未实现。

负载均衡器

GET
/v2/lbaas/loadbalancers

列出负载均衡器

列出项目的所有负载均衡器。

使用 fields 查询参数来控制响应体中返回的字段。此外,您还可以使用查询字符串参数过滤结果。有关信息,请参阅 过滤和列选择

管理员用户可以指定一个不同于自己的项目 ID 来列出其他项目的负载均衡器。

列表可能为空。

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

由于凭据无效,访问被拒绝。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

请求

名称

入参

类型

描述

fields (可选)

查询

字符串

您希望服务器返回的字段。如果未指定 fields 查询参数,则 octavia API 将返回策略设置允许的所有属性。通过使用 fields 参数,API 将仅返回请求的属性集。 fields 参数可以指定多次。例如,如果在请求 URL 中指定 fields=id&fields=name,则仅返回 idname 属性。

project_id (可选)

查询

字符串

要查询的项目 ID。

Curl 示例

curl -X GET -H "X-Auth-Token: <token>" http://198.51.100.10:9876/v2/lbaas/loadbalancers?project_id=e3cd678b11784734bc366148aa37580e

响应参数

名称

入参

类型

描述

additional_vips (可选)

body

数组

一组定义“其他 VIP”的 JSON 对象列表。格式为 {"subnet_id": <subnet_id>, "ip_address": <ip_address>},其中 subnet_id 字段是必需的,而 ip_address 字段是可选的。附加 VIP 子网必须全部属于与主 VIP 相同的网络。

版本 2.26 新增

admin_state_up

body

布尔值

资源的管理员状态,即启用(true)或禁用(false)。

availability_zone

body

对象

可用区域名称。

created_at

body

字符串

资源创建的 UTC 日期和时间戳。

description

body

字符串

资源的易于阅读的描述。

flavor_id

body

uuid

flavor 的 ID。

id

body

uuid

负载均衡器的 ID。

listeners

body

数组

关联的监听器 ID(如果存在)。

loadbalancers

body

数组

loadbalancer 对象列表。

name

body

字符串

资源的易于阅读的名称。

operating_status

body

字符串

资源的运行状态。请参阅 运行状态码

pools

body

数组

关联的池 ID(如果存在)。

project_id

body

字符串

拥有此资源的项目的 ID。

provider

body

字符串

负载均衡器的提供商名称。

provisioning_status

body

字符串

资源的配置状态。请参阅 配置状态码

tags

body

数组

分配给资源的简单字符串列表。

版本 2.5 新增

updated_at

body

字符串

上次更新资源的 UTC 日期和时间戳。

vip_address

body

字符串

虚拟 IP (VIP) 的 IP 地址。

vip_network_id

body

uuid

虚拟 IP (VIP) 的网络 ID。

vip_port_id

body

uuid

虚拟 IP (VIP) 端口的 ID。

vip_qos_policy_id

body

uuid

将应用于虚拟 IP (VIP) 的 QoS 策略的 ID。

vip_subnet_id

body

uuid

虚拟 IP (VIP) 的子网 ID。

vip_sg_ids

body

数组

负载均衡器虚拟 IP (VIP) 端口的安全组 ID 列表。

版本 2.29 新增

vip_vnic_type

body

字符串

负载均衡器使用的 VIP vNIC 类型。可以是 normaldirect

版本 2.28 新增

响应示例

{
    "loadbalancers": [
        {
            "description": "My favorite load balancer",
            "admin_state_up": true,
            "project_id": "e3cd678b11784734bc366148aa37580e",
            "provisioning_status": "ACTIVE",
            "flavor_id": "",
            "vip_subnet_id": "d4af86e1-0051-488c-b7a0-527f97490c9a",
            "listeners": [
                {
                    "id": "023f2e34-7806-443b-bfae-16c324569a3d"
                }
            ],
            "vip_address": "203.0.113.50",
            "vip_network_id": "d0d217df-3958-4fbf-a3c2-8dad2908c709",
            "vip_port_id": "b4ca07d1-a31e-43e2-891a-7d14f419f342",
            "additional_vips": [],
            "provider": "octavia",
            "pools": [
                {
                    "id": "9aa16cdc-8d18-47b9-aba9-ec044531a79f"
                }
            ],
            "created_at": "2017-02-28T00:41:44",
            "updated_at": "2017-02-28T00:43:30",
            "id": "607226db-27ef-4d41-ae89-f2a800e9c2db",
            "operating_status": "ONLINE",
            "name": "best_load_balancer",
            "vip_qos_policy_id": "ec4f78ca-8da8-4e99-8a1a-e3b94595a7a3",
            "availability_zone": "my_az",
            "tags": [],
            "vip_vnic_type": "normal"
        }
    ]
}
POST
/v2/lbaas/loadbalancers

创建负载均衡器

创建负载均衡器。

此操作通过使用您在请求对象中定义的配置来配置新的负载均衡器。在 API 验证请求并开始配置过程后,API 将返回一个响应对象,其中包含唯一的 ID 和负载均衡器配置的状态。

在响应中,负载均衡器的 配置状态ACTIVEPENDING_CREATEERROR

如果状态为 PENDING_CREATE,请发出 GET /v2/lbaas/loadbalancers/{loadbalancer_id} 以查看配置操作的进度。当负载均衡器状态更改为 ACTIVE 时,负载均衡器将成功配置并可进行进一步配置。

如果 API 由于数据不足或数据无效而无法满足请求,则服务将返回 HTTP Bad Request (400) 响应代码,并在响应体中提供失败信息。验证错误要求您纠正错误并重新提交请求。

管理员用户可以指定一个不同于自己的项目 ID 来为其他项目创建负载均衡器。

可选的 flavor_id 属性可用于使用预配置的 octavia flavor 创建负载均衡器。Flavor 由管理员创建,以允许自定义负载均衡器配置,例如为负载均衡器分配更多内存。

可选的来自 Neutron 的 vip_qos_policy_id 属性可用于在负载均衡器 VIP 上应用 QoS 策略,也可以传递“null”值以移除 QoS 策略。

您还可以指定 provider 属性来创建负载均衡器。 provider 属性指定了用于创建负载均衡器的后端。这可以是默认提供商(octavia)或已安装的供应商提供的 provider。设置 flavor_id 和 provider 将导致冲突错误,如果提供商与已配置的 flavor 配置文件的提供商不匹配。

指定虚拟 IP (VIP) 是必需的。有三种方法可以为负载均衡器指定 VIP 网络:

  1. 提供 vip_port_id

    vip_port_id 提供 neutron 端口 ID 会告诉 octavia 使用此端口作为 VIP。Octavia 可能需要更改或移除某些端口设置,但 IP 地址将保留。如果端口有多个子网,您必须指定 vip_subnet_idvip_address 以明确指示应使用哪个地址作为 VIP。

  2. 提供 vip_network_id

    当指定 vip_network_ip 时,除非同时指定了 vip_subnet_idvip_address,否则 octavia 将从网络中选择一个子网,优先选择 IPv4 而不是 IPv6 子网。

  3. 提供 vip_subnet_id

    指定 neutron 子网 ID 将告诉 octavia 在此子网上创建一个 neutron 端口,并从该子网分配一个 IP 地址(如果未指定 vip_address)。如果指定了 vip_address,octavia 将尝试从子网中为 VIP 地址分配 vip_address

还可以通过 additional_vips 字段指定其他 VIP,方法是提供一个 JSON 对象列表,其中包含 subnet_id 和可选的 ip_address。所有附加子网必须属于与主 VIP 相同的网络。

可选的 vip_sg_ids 属性可用于设置应用于负载均衡器 VIP 端口的自定义 Neutron 安全组。使用此选项时,Octavia 不会管理监听器的安全性,用户必须设置安全组规则以允许 VIP 端口上的网络流量。vip_sg_ids 与 SR-IOV 负载均衡器不兼容,并且如果负载均衡器具有使用 allowed_cidrs 的监听器,则无法设置。

成功

代码

原因

201 - 已创建

请求已完成,并创建了新资源。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

由于凭据无效,访问被拒绝。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

503 - 服务不可用

服务现在无法处理请求。

请求

名称

入参

类型

描述

additional_vips (可选)

body

数组

一组定义“其他 VIP”的 JSON 对象列表。格式为 {"subnet_id": <subnet_id>, "ip_address": <ip_address>},其中 subnet_id 字段是必需的,而 ip_address 字段是可选的。附加 VIP 子网必须全部属于与主 VIP 相同的网络。

版本 2.26 新增

admin_state_up (可选)

body

布尔值

资源的管理员状态,即启用(true)或禁用(false)。默认为 true

availability_zone (可选)

body

对象

可用区域名称。

description (可选)

body

字符串

资源的易于阅读的描述。

flavor_id (可选)

body

uuid

flavor 的 ID。

listeners (可选)

body

数组

关联的监听器 ID(如果存在)。

loadbalancer

body

对象

负载均衡器对象。

name (可选)

body

字符串

资源的易于阅读的名称。

project_id (可选)

body

字符串

拥有此资源的项目的 ID。

provider (可选)

body

字符串

负载均衡器的提供商名称。默认为 octavia

tags (可选)

body

数组

分配给资源的简单字符串列表。

版本 2.5 新增

vip_address (可选)

body

字符串

虚拟 IP (VIP) 的 IP 地址。

vip_network_id (可选)

body

uuid

虚拟 IP (VIP) 的网络 ID。必须指定 vip_network_idvip_port_idvip_subnet_id 之一。

vip_port_id (可选)

body

uuid

虚拟 IP (VIP) 端口的 ID。必须指定 vip_network_idvip_port_idvip_subnet_id 之一。

vip_qos_policy_id (可选)

body

uuid

将应用于虚拟 IP (VIP) 的 QoS 策略的 ID。

vip_subnet_id (可选)

body

uuid

虚拟 IP (VIP) 的子网 ID。必须指定 vip_network_idvip_port_idvip_subnet_id 之一。

vip_sg_ids (可选)

body

数组

负载均衡器虚拟 IP (VIP) 端口的安全组 ID 列表。

版本 2.29 新增

请求示例

{
    "loadbalancer": {
        "description": "My favorite load balancer",
        "admin_state_up": true,
        "project_id": "e3cd678b11784734bc366148aa37580e",
        "vip_subnet_id": "d4af86e1-0051-488c-b7a0-527f97490c9a",
        "vip_address": "203.0.113.50",
        "additional_vips": [
            {"subnet_id": "3ca40b2e-c286-4e53-bdb9-dd01c8a0ad6d", "ip_address": "2001:db8::b33f"},
            {"subnet_id": "44d92b92-510f-4c05-8058-bf5a17b4d41c"}
        ],
        "provider": "octavia",
        "name": "best_load_balancer",
        "vip_qos_policy_id": "ec4f78ca-8da8-4e99-8a1a-e3b94595a7a3",
        "availability_zone": "my_az",
        "tags": ["test_tag"]
    }
}

Curl 示例

curl -X POST -H "Content-Type: application/json" -H "X-Auth-Token: <token>" -d '{"loadbalancer": {"description": "My favorite load balancer", "admin_state_up": true, "project_id": "e3cd678b11784734bc366148aa37580e", "flavor_id": "a7ae5d5a-d855-4f9a-b187-af66b53f4d04", "vip_subnet_id": "d4af86e1-0051-488c-b7a0-527f97490c9a", "vip_address": "203.0.113.50", "additional_vips": [{"subnet_id": "3ca40b2e-c286-4e53-bdb9-dd01c8a0ad6d", "ip_address": "2001:db8::b33f"}, {"subnet_id": "44d92b92-510f-4c05-8058-bf5a17b4d41c"}], "provider": "octavia", "name": "best_load_balancer", "vip_qos_policy_id": "ec4f78ca-8da8-4e99-8a1a-e3b94595a7a3", "availability_zone": "my_az", "tags": ["test_tag"]}}' http://198.51.100.10:9876/v2/lbaas/loadbalancers

响应参数

名称

入参

类型

描述

additional_vips (可选)

body

数组

一组定义“其他 VIP”的 JSON 对象列表。格式为 {"subnet_id": <subnet_id>, "ip_address": <ip_address>},其中 subnet_id 字段是必需的,而 ip_address 字段是可选的。附加 VIP 子网必须全部属于与主 VIP 相同的网络。

版本 2.26 新增

admin_state_up

body

布尔值

资源的管理员状态,即启用(true)或禁用(false)。

availability_zone

body

对象

可用区域名称。

created_at

body

字符串

资源创建的 UTC 日期和时间戳。

description

body

字符串

资源的易于阅读的描述。

flavor_id

body

uuid

flavor 的 ID。

id

body

uuid

负载均衡器的 ID。

listeners

body

数组

关联的监听器 ID(如果存在)。

loadbalancer

body

对象

负载均衡器对象。

name

body

字符串

资源的易于阅读的名称。

operating_status

body

字符串

资源的运行状态。请参阅 运行状态码

pools

body

数组

关联的池 ID(如果存在)。

project_id

body

字符串

拥有此资源的项目的 ID。

provider

body

字符串

负载均衡器的提供商名称。

provisioning_status

body

字符串

资源的配置状态。请参阅 配置状态码

tags

body

数组

分配给资源的简单字符串列表。

版本 2.5 新增

updated_at

body

字符串

上次更新资源的 UTC 日期和时间戳。

vip_address

body

字符串

虚拟 IP (VIP) 的 IP 地址。

vip_network_id

body

uuid

虚拟 IP (VIP) 的网络 ID。

vip_port_id

body

uuid

虚拟 IP (VIP) 端口的 ID。

vip_qos_policy_id

body

uuid

将应用于虚拟 IP (VIP) 的 QoS 策略的 ID。

vip_subnet_id

body

uuid

虚拟 IP (VIP) 的子网 ID。

vip_sg_ids

body

数组

负载均衡器虚拟 IP (VIP) 端口的安全组 ID 列表。

版本 2.29 新增

vip_vnic_type

body

字符串

负载均衡器使用的 VIP vNIC 类型。可以是 normaldirect

版本 2.28 新增

响应示例

{
    "loadbalancer": {
        "description": "My favorite load balancer",
        "admin_state_up": true,
        "project_id": "e3cd678b11784734bc366148aa37580e",
        "provisioning_status": "PENDING_CREATE",
        "flavor_id": "",
        "vip_subnet_id": "d4af86e1-0051-488c-b7a0-527f97490c9a",
        "vip_address": "203.0.113.50",
        "vip_network_id": "d0d217df-3958-4fbf-a3c2-8dad2908c709",
        "vip_port_id": "b4ca07d1-a31e-43e2-891a-7d14f419f342",
        "additional_vips": [
            {"subnet_id": "3ca40b2e-c286-4e53-bdb9-dd01c8a0ad6d", "ip_address": "2001:db8::b33f"},
            {"subnet_id": "44d92b92-510f-4c05-8058-bf5a17b4d41c", "ip_address": "198.51.100.4"}
        ],
        "provider": "octavia",
        "created_at": "2017-02-28T00:41:44",
        "updated_at": "2017-02-28T00:43:30",
        "id": "607226db-27ef-4d41-ae89-f2a800e9c2db",
        "operating_status": "OFFLINE",
        "name": "best_load_balancer",
        "vip_qos_policy_id": "ec4f78ca-8da8-4e99-8a1a-e3b94595a7a3",
        "availability_zone": "my_az",
        "tags": ["test_tag"],
        "vip_vnic_type": "normal"
    }
}

创建完全配置的负载均衡器

您可以通过在请求中指定其他元素或属性来在创建时配置负载均衡器的所有已记录功能。

注意:所有池都必须有名称,并且只能完全定义一次。要从多个对象引用池,请在所有后续引用中仅提供池名称。

请求示例

{
    "loadbalancer": {
        "description": "My favorite load balancer",
        "admin_state_up": true,
        "project_id": "e3cd678b11784734bc366148aa37580e",
        "flavor_id": "",
        "listeners": [
            {
                "name": "http_listener",
                "protocol": "HTTP",
                "protocol_port": 80,
                "default_pool": {
                    "name": "rr_pool",
                    "protocol": "HTTP",
                    "lb_algorithm": "ROUND_ROBIN",
                    "healthmonitor": {
                        "type": "HTTP",
                        "delay": "3",
                        "expected_codes": "200,201,202",
                        "http_method": "GET",
                        "max_retries": 2,
                        "timeout": 1,
                        "url_path": "/index.html"
                    },
                    "members": [
                        {
                            "address": "192.0.2.16",
                            "protocol_port": 80
                        },
                        {
                            "address": "192.0.2.19",
                            "protocol_port": 80
                        }
                    ]
                }
            },
            {
                "name": "https_listener",
                "protocol": "HTTPS",
                "protocol_port": 443,
                "default_pool": {
                    "name": "https_pool"
                },
                "tags": ["test_tag"]
            },
            {
                "name": "redirect_listener",
                "protocol": "HTTP",
                "protocol_port": 8080,
                "l7policies": [
                    {
                        "action": "REDIRECT_TO_URL",
                        "name": "redirect_policy",
                        "redirect_url": "https://www.example.com/",
                        "admin_state_up": true
                    }
                ]
            }
        ],
        "pools": [
            {
                "name": "https_pool",
                "protocol": "HTTPS",
                "lb_algorithm": "ROUND_ROBIN",
                "healthmonitor": {
                    "type": "HTTPS",
                    "delay": "3",
                    "max_retries": 2,
                    "timeout": 1
                },
                "members": [
                    {
                        "address": "192.0.2.51",
                        "protocol_port": 80
                    },
                    {
                        "address": "192.0.2.52",
                        "protocol_port": 80
                    }
                ]
            }
        ],
        "vip_subnet_id": "d4af86e1-0051-488c-b7a0-527f97490c9a",
        "vip_address": "203.0.113.50",
        "provider": "octavia",
        "name": "best_load_balancer",
        "vip_qos_policy_id": "ec4f78ca-8da8-4e99-8a1a-e3b94595a7a3",
        "availability_zone": "my_az",
        "tags": ["test_tag"]
    }
}

响应示例

{
    "loadbalancer": {
        "description": "My favorite load balancer",
        "admin_state_up": true,
        "project_id": "e3cd678b11784734bc366148aa37580e",
        "provisioning_status": "ACTIVE",
        "flavor_id": "",
        "vip_subnet_id": "d4af86e1-0051-488c-b7a0-527f97490c9a",
        "listeners": [
            {
                "l7policies": [],
                "protocol": "HTTP",
                "description": "",
                "default_tls_container_ref": null,
                "admin_state_up": true,
                "default_pool": {
                    "id": "c8cec227-410a-4a5b-af13-ecf38c2b0abb"
                },
                "project_id": "e3cd678b11784734bc366148aa37580e",
                "default_tls_container_id": null,
                "connection_limit": -1,
                "sni_container_refs": [],
                "protocol_port": 80,
                "id": "a99995c6-4f04-4ed3-a37f-ae58f6e7e5e1",
                "name": "http_listener"
            },
            {
                "l7policies": [],
                "protocol": "HTTPS",
                "description": "",
                "default_tls_container_ref": null,
                "admin_state_up": true,
                "default_pool": {
                    "id": "b0577aff-c1f9-40c6-9a3b-7b1d2a669136"
                },
                "project_id": "e3cd678b11784734bc366148aa37580e",
                "default_tls_container_id": null,
                "connection_limit": -1,
                "sni_container_refs": [],
                "protocol_port": 443,
                "id": "73c6c564-f215-48e9-91d6-f10bb3454954",
                "name": "https_listener",
                "tags": ["test_tag"]
            },
            {
                "l7policies": [
                    {
                        "description": "",
                        "admin_state_up": true,
                        "rules": [],
                        "project_id": "e3cd678b11784734bc366148aa37580e",
                        "listener_id": "95de30ec-67f4-437b-b3f3-22c5d9ef9828",
                        "redirect_url": "https://www.example.com/",
                        "action": "REDIRECT_TO_URL",
                        "position": 1,
                        "id": "d0553837-f890-4981-b99a-f7cbd6a76577",
                        "name": "redirect_policy"
                    }
                ],
                "protocol": "HTTP",
                "description": "",
                "default_tls_container_ref": null,
                "admin_state_up": true,
                "default_pool": null,
                "project_id": "e3cd678b11784734bc366148aa37580e",
                "default_tls_container_id": null,
                "connection_limit": -1,
                "sni_container_refs": [],
                "protocol_port": 8080,
                "id": "95de30ec-67f4-437b-b3f3-22c5d9ef9828",
                "name": "redirect_listener"
            }
        ],
        "vip_address": "203.0.113.50",
        "vip_network_id": "d0d217df-3958-4fbf-a3c2-8dad2908c709",
        "vip_port_id": "b4ca07d1-a31e-43e2-891a-7d14f419f342",
        "additional_vips": [],
        "provider": "octavia",
        "pools": [
            {
                "lb_algorithm": "ROUND_ROBIN",
                "protocol": "HTTP",
                "description": "",
                "admin_state_up": true,
                "project_id": "e3cd678b11784734bc366148aa37580e",
                "session_persistence": null,
                "healthmonitor": {
                    "name": "",
                    "admin_state_up": true,
                    "project_id": "e3cd678b11784734bc366148aa37580e",
                    "delay": 3,
                    "expected_codes": "200,201,202",
                    "max_retries": 2,
                    "http_method": "GET",
                    "timeout": 1,
                    "max_retries_down": 3,
                    "url_path": "/index.html",
                    "type": "HTTP",
                    "id": "a8a2aa3f-d099-4752-8265-e6472f8147f9"
                },
                "members": [
                    {
                        "name": "",
                        "weight": 1,
                        "admin_state_up": true,
                        "subnet_id": "bbb35f84-35cc-4b2f-84c2-a6a29bba68aa",
                        "project_id": "e3cd678b11784734bc366148aa37580e",
                        "address": "192.0.2.16",
                        "protocol_port": 80,
                        "id": "7d19ad6c-d549-453e-a5cd-05382c6be96a"
                    },
                    {
                        "name": "",
                        "weight": 1,
                        "admin_state_up": true,
                        "subnet_id": "bbb35f84-35cc-4b2f-84c2-a6a29bba68aa",
                        "project_id": "e3cd678b11784734bc366148aa37580e",
                        "address": "192.0.2.19",
                        "protocol_port": 80,
                        "id": "a167402b-caa6-41d5-b4d4-bde7f2cbfa5e"
                    }
                ],
                "id": "c8cec227-410a-4a5b-af13-ecf38c2b0abb",
                "name": "rr_pool"
            },
            {
                "lb_algorithm": "ROUND_ROBIN",
                "protocol": "HTTPS",
                "description": "",
                "admin_state_up": true,
                "project_id": "e3cd678b11784734bc366148aa37580e",
                "session_persistence": null,
                "healthmonitor": {
                    "name": "",
                    "admin_state_up": true,
                    "project_id": "e3cd678b11784734bc366148aa37580e",
                    "delay": 3,
                    "expected_codes": "200,201,202",
                    "max_retries": 2,
                    "http_method": "GET",
                    "timeout": 1,
                    "max_retries_down": 3,
                    "url_path": "/index.html",
                    "type": "HTTPS",
                    "id": "d5bb7712-26b7-4809-8c14-3b407c0cb00d"
                },
                "members": [
                    {
                        "name": "",
                        "weight": 1,
                        "admin_state_up": true,
                        "subnet_id": "bbb35f84-35cc-4b2f-84c2-a6a29bba68aa",
                        "project_id": "e3cd678b11784734bc366148aa37580e",
                        "address": "192.0.2.51",
                        "protocol_port": 80,
                        "id": "f83832d5-1f22-45fa-866a-4abea36e0886"
                    },
                    {
                        "name": "",
                        "weight": 1,
                        "admin_state_up": true,
                        "subnet_id": "bbb35f84-35cc-4b2f-84c2-a6a29bba68aa",
                        "project_id": "e3cd678b11784734bc366148aa37580e",
                        "address": "192.0.2.52",
                        "protocol_port": 80,
                        "id": "f83832d5-1f22-45fa-866a-4abea36e0886"
                    }
                ],
                "id": "b0577aff-c1f9-40c6-9a3b-7b1d2a669136",
                "name": "https_pool"
            }
        ],
        "created_at": "2017-02-28T00:41:44",
        "updated_at": "2017-02-28T00:43:30",
        "id": "607226db-27ef-4d41-ae89-f2a800e9c2db",
        "operating_status": "ONLINE",
        "name": "best_load_balancer",
        "vip_qos_policy_id": "ec4f78ca-8da8-4e99-8a1a-e3b94595a7a3",
        "availability_zone": "my_az",
        "tags": ["test_tag"],
        "vip_vnic_type": "normal"
    }
}
GET
/v2/lbaas/loadbalancers/{loadbalancer_id}

显示负载均衡器详细信息

显示负载均衡器的详细信息。

如果您不是管理员用户,并且负载均衡器对象不属于您的项目,则服务将返回 HTTP Forbidden (403) 响应代码。

此操作不需要请求正文。

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

401 - 未授权

由于凭据无效,访问被拒绝。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

请求

名称

入参

类型

描述

fields (可选)

查询

字符串

您希望服务器返回的字段。如果未指定 fields 查询参数,则 octavia API 将返回策略设置允许的所有属性。通过使用 fields 参数,API 将仅返回请求的属性集。 fields 参数可以指定多次。例如,如果在请求 URL 中指定 fields=id&fields=name,则仅返回 idname 属性。

loadbalancer_id

路径

uuid

要查询的负载均衡器的 ID。

Curl 示例

curl -X GET -H "X-Auth-Token: <token>" http://198.51.100.10:9876/v2/lbaas/loadbalancers/8a562351-f0fb-424c-a0af-513461424ea5

响应参数

名称

入参

类型

描述

additional_vips (可选)

body

数组

一组定义“其他 VIP”的 JSON 对象列表。格式为 {"subnet_id": <subnet_id>, "ip_address": <ip_address>},其中 subnet_id 字段是必需的,而 ip_address 字段是可选的。附加 VIP 子网必须全部属于与主 VIP 相同的网络。

版本 2.26 新增

admin_state_up

body

布尔值

资源的管理员状态,即启用(true)或禁用(false)。

availability_zone

body

对象

可用区域名称。

created_at

body

字符串

资源创建的 UTC 日期和时间戳。

description

body

字符串

资源的易于阅读的描述。

flavor_id

body

uuid

flavor 的 ID。

id

body

uuid

负载均衡器的 ID。

loadbalancer

body

对象

负载均衡器对象。

listeners

body

数组

关联的监听器 ID(如果存在)。

name

body

字符串

资源的易于阅读的名称。

operating_status

body

字符串

资源的运行状态。请参阅 运行状态码

pools

body

数组

关联的池 ID(如果存在)。

project_id

body

字符串

拥有此资源的项目的 ID。

provider

body

字符串

负载均衡器的提供商名称。

provisioning_status

body

字符串

资源的配置状态。请参阅 配置状态码

tags

body

数组

分配给资源的简单字符串列表。

版本 2.5 新增

updated_at

body

字符串

上次更新资源的 UTC 日期和时间戳。

vip_address

body

字符串

虚拟 IP (VIP) 的 IP 地址。

vip_network_id

body

uuid

虚拟 IP (VIP) 的网络 ID。

vip_port_id

body

uuid

虚拟 IP (VIP) 端口的 ID。

vip_qos_policy_id

body

uuid

将应用于虚拟 IP (VIP) 的 QoS 策略的 ID。

vip_subnet_id

body

uuid

虚拟 IP (VIP) 的子网 ID。

vip_sg_ids

body

数组

负载均衡器虚拟 IP (VIP) 端口的安全组 ID 列表。

版本 2.29 新增

vip_vnic_type

body

字符串

负载均衡器使用的 VIP vNIC 类型。可以是 normaldirect

版本 2.28 新增

响应示例

{
    "loadbalancer": {
        "description": "My favorite load balancer",
        "admin_state_up": true,
        "project_id": "e3cd678b11784734bc366148aa37580e",
        "provisioning_status": "PENDING_CREATE",
        "flavor_id": "",
        "vip_subnet_id": "d4af86e1-0051-488c-b7a0-527f97490c9a",
        "vip_address": "203.0.113.50",
        "vip_network_id": "d0d217df-3958-4fbf-a3c2-8dad2908c709",
        "vip_port_id": "b4ca07d1-a31e-43e2-891a-7d14f419f342",
        "additional_vips": [],
        "provider": "octavia",
        "created_at": "2017-02-28T00:41:44",
        "updated_at": "2017-02-28T00:43:30",
        "id": "8a562351-f0fb-424c-a0af-513461424ea5",
        "operating_status": "ONLINE",
        "name": "best_load_balancer",
        "vip_qos_policy_id": "ec4f78ca-8da8-4e99-8a1a-e3b94595a7a3",
        "availability_zone": "my_az",
        "tags": [],
        "vip_vnic_type": "normal"
    }
}
PUT
/v2/lbaas/loadbalancers/{loadbalancer_id}

更新负载均衡器

更新负载均衡器。

如果请求有效,服务将返回 Accepted (202) 响应代码。要确认更新,请检查负载均衡器的配置状态是否为 ACTIVE。如果状态为 PENDING_UPDATE,请使用 GET 操作轮询负载均衡器对象以查看更改。

此操作返回更新后的负载均衡器对象,其配置状态为 ACTIVEPENDING_UPDATEERROR

成功

代码

原因

202 - Accepted

请求已接受,但处理可能需要一些时间。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

由于凭据无效,访问被拒绝。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

409 - Conflict

此资源有一个正在进行的操作,与此请求冲突。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

请求

名称

入参

类型

描述

admin_state_up (可选)

body

布尔值

资源的管理员状态,即启用(true)或禁用(false)。

description (可选)

body

字符串

资源的易于阅读的描述。

loadbalancer

body

对象

负载均衡器对象。

loadbalancer_id

路径

uuid

要查询的负载均衡器的 ID。

name (可选)

body

字符串

资源的易于阅读的名称。

tags (可选)

body

数组

分配给资源的简单字符串列表。

版本 2.5 新增

vip_qos_policy_id (可选)

body

uuid

将应用于虚拟 IP (VIP) 的 QoS 策略的 ID。

请求示例

{
    "loadbalancer": {
        "description": "Temporarily disabled load balancer",
        "admin_state_up": false,
        "name": "disabled_load_balancer",
        "vip_qos_policy_id": "ec4f78ca-8da8-4e99-8a1a-e3b94595a7a3",
        "tags": ["updated_tag"]
    }
}

Curl 示例

curl -X PUT -H "Content-Type: application/json" -H "X-Auth-Token: <token>" -d '{"loadbalancer": {"description": "Temporarily disabled load balancer", "admin_state_up": false, "name": "disabled_load_balancer", "vip_qos_policy_id": "ec4f78ca-8da8-4e99-8a1a-e3b94595a7a3", "tags": ["updated_tag"]}}' http://198.51.100.10:9876/v2/lbaas/loadbalancers/8b6fc468-07d5-4d8b-a0b9-695060e72c31

响应参数

名称

入参

类型

描述

additional_vips (可选)

body

数组

一组定义“其他 VIP”的 JSON 对象列表。格式为 {"subnet_id": <subnet_id>, "ip_address": <ip_address>},其中 subnet_id 字段是必需的,而 ip_address 字段是可选的。附加 VIP 子网必须全部属于与主 VIP 相同的网络。

版本 2.26 新增

admin_state_up

body

布尔值

资源的管理员状态,即启用(true)或禁用(false)。

created_at

body

字符串

资源创建的 UTC 日期和时间戳。

description

body

字符串

资源的易于阅读的描述。

flavor_id

body

uuid

flavor 的 ID。

id

body

uuid

负载均衡器的 ID。

listeners

body

数组

关联的监听器 ID(如果存在)。

loadbalancer

body

对象

负载均衡器对象。

name

body

字符串

资源的易于阅读的名称。

operating_status

body

字符串

资源的运行状态。请参阅 运行状态码

pools

body

数组

关联的池 ID(如果存在)。

project_id

body

字符串

拥有此资源的项目的 ID。

provider

body

字符串

负载均衡器的提供商名称。

provisioning_status

body

字符串

资源的配置状态。请参阅 配置状态码

tags

body

数组

分配给资源的简单字符串列表。

版本 2.5 新增

updated_at

body

字符串

上次更新资源的 UTC 日期和时间戳。

vip_address

body

字符串

虚拟 IP (VIP) 的 IP 地址。

vip_network_id

body

uuid

虚拟 IP (VIP) 的网络 ID。

vip_port_id

body

uuid

虚拟 IP (VIP) 端口的 ID。

vip_qos_policy_id

body

uuid

将应用于虚拟 IP (VIP) 的 QoS 策略的 ID。

vip_subnet_id

body

uuid

虚拟 IP (VIP) 的子网 ID。

vip_sg_ids

body

数组

负载均衡器虚拟 IP (VIP) 端口的安全组 ID 列表。

版本 2.29 新增

vip_vnic_type

body

字符串

负载均衡器使用的 VIP vNIC 类型。可以是 normaldirect

版本 2.28 新增

响应示例

{
    "loadbalancer": {
        "description": "Temporarily disabled load balancer",
        "admin_state_up": false,
        "project_id": "e3cd678b11784734bc366148aa37580e",
        "provisioning_status": "PENDING_UPDATE",
        "flavor_id": "",
        "vip_subnet_id": "d4af86e1-0051-488c-b7a0-527f97490c9a",
        "vip_address": "203.0.113.50",
        "vip_network_id": "d0d217df-3958-4fbf-a3c2-8dad2908c709",
        "vip_port_id": "b4ca07d1-a31e-43e2-891a-7d14f419f342",
        "additional_vips": [],
        "provider": "octavia",
        "created_at": "2017-02-28T00:41:44",
        "updated_at": "2017-02-28T00:43:30",
        "id": "8b6fc468-07d5-4d8b-a0b9-695060e72c31",
        "operating_status": "ONLINE",
        "name": "disabled_load_balancer",
        "vip_qos_policy_id": "ec4f78ca-8da8-4e99-8a1a-e3b94595a7a3",
        "tags": ["updated_tag"],
        "vip_vnic_type": "normal"
    }
}
DELETE
/v2/lbaas/loadbalancers/{loadbalancer_id}

移除负载均衡器

从项目中移除负载均衡器及其关联的配置。

可选参数 cascade,当定义为 true 时,将删除负载均衡器的所有子对象。

API 将立即清除任何和所有配置数据,具体取决于配置设置。您无法恢复它。

成功

代码

原因

204 - No Content

请求已满足,但服务未返回任何内容。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

由于凭据无效,访问被拒绝。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

409 - Conflict

此资源有一个正在进行的操作,与此请求冲突。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

请求

名称

入参

类型

描述

cascade (可选)

查询

布尔值

如果 true,将删除负载均衡器的所有子对象。

loadbalancer_id

路径

uuid

要查询的负载均衡器的 ID。

Curl 示例

curl -X DELETE -H "X-Auth-Token: <token>" http://198.51.100.10:9876/v2/lbaas/loadbalancers/4b9b652c-537a-44bf-bbe8-85a690625597

响应

成功的 DELETE 请求没有响应正文内容。

GET
/v2/lbaas/loadbalancers/{loadbalancer_id}/stats

获取负载均衡器统计信息

显示负载均衡器的当前统计信息。

此操作返回由 loadbalancer_id 标识的负载均衡器对象的统计信息。

如果您不是管理员用户,并且负载均衡器对象不属于您的项目,则服务将返回 HTTP Forbidden (403) 响应代码。

此操作不需要请求正文。

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

401 - 未授权

由于凭据无效,访问被拒绝。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

请求

名称

入参

类型

描述

loadbalancer_id

路径

uuid

要查询的负载均衡器的 ID。

Curl 示例

curl -X GET -H "X-Auth-Token: <token>" http://198.51.100.10:9876/v2/lbaas/loadbalancers/4a13c573-623c-4d23-8a9c-581dc17ceb1f/stats

响应参数

名称

入参

类型

描述

stats

body

对象

统计信息对象。

active_connections

body

整数

当前活动的连接数。

bytes_in

body

整数

接收到的总字节数。

bytes_out

body

整数

发送的总字节数。

request_errors

body

整数

无法完成的总请求数。

total_connections

body

整数

处理的总连接数。

响应示例

{
    "stats": {
        "bytes_in": 131342840,
        "total_connections": 52378345,
        "active_connections": 97258,
        "bytes_out": 1549542372,
        "request_errors": 0
    }
}
GET
/v2/lbaas/loadbalancers/{loadbalancer_id}/status

获取负载均衡器状态树

显示负载均衡器的状态树。

此操作通过负载均衡器 ID 返回负载均衡器对象的状态树。

provisioning_status 是与资源生命周期相关的状态。有关状态码的描述,请参阅 配置状态码

operating_status 是资源的观察状态。有关状态码的描述,请参阅 运行状态码

如果您不是管理员用户,并且负载均衡器对象不属于您的项目,则服务将返回 HTTP Forbidden (403) 响应代码。

如果操作成功,则返回的元素是一个状态树,其中包含负载均衡器及其所有子项的配置和运行状态。

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

401 - 未授权

由于凭据无效,访问被拒绝。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

请求

名称

入参

类型

描述

loadbalancer_id

路径

uuid

要查询的负载均衡器的 ID。

Curl 示例

curl -X GET -H "X-Auth-Token: <token>" http://198.51.100.10:9876/v2/lbaas/loadbalancers/bda6f032-80d3-414a-b395-e79c374e3929/status

响应参数

名称

入参

类型

描述

动作

body

字符串

与资源关联的操作。

address

body

字符串

资源的 IP 地址。

healthmonitor

body

对象

关联的健康监控状态对象。

id

body

uuid

资源的 ID。

l7policies

body

数组

L7 策略状态对象列表。

l7rules

body

数组

L7 规则状态对象列表。

listeners

body

数组

监听器状态对象列表。

loadbalancer

body

对象

负载均衡器状态对象。

members

body

数组

成员状态对象列表。

name

body

字符串

资源的易于阅读的名称。

operating_status

body

字符串

资源的运行状态。请参阅 运行状态码

pools

body

数组

池状态对象列表。

protocol_port

body

整数

资源的协议端口号。

provisioning_status

body

字符串

资源的配置状态。请参阅 配置状态码

statuses

body

对象

负载均衡器对象的状态树包含其所有子项的配置和运行状态。

type

body

字符串

与资源关联的类型。

响应示例

{
    "statuses": {
        "loadbalancer": {
            "name": "excellent_load_balancer",
            "provisioning_status": "ACTIVE",
            "listeners": [
                {
                    "name": "HTTP_listener",
                    "provisioning_status": "ACTIVE",
                    "pools": [
                        {
                            "name": "HTTP_pool",
                            "provisioning_status": "ACTIVE",
                            "healthmonitor": {
                                "type": "HTTP",
                                "id": "0b608787-ea2d-48c7-89a1-8b8c24fa3b17",
                                "name": "HTTP_healthmonitor",
                                "provisioning_status": "ACTIVE"
                            },
                            "members": [
                                {
                                    "name": "",
                                    "provisioning_status": "ACTIVE",
                                    "address": "192.0.2.20",
                                    "protocol_port": 80,
                                    "id": "3c6857f4-057a-405a-9134-bdeaa8796c8a",
                                    "operating_status": "ERROR"
                                },
                                {
                                    "name": "",
                                    "provisioning_status": "ACTIVE",
                                    "address": "192.0.2.21",
                                    "protocol_port": 80,
                                    "id": "f7495909-1706-4c91-83b4-641dab6962ac",
                                    "operating_status": "ONLINE"
                                }
                            ],
                            "id": "89a47f78-cf81-480b-ad74-bba4177eeb81",
                            "operating_status": "DEGRADED"
                        }
                    ],
                    "l7policies": [],
                    "id": "78febaf6-1e63-47c6-af5f-7b5e23fd7094",
                    "operating_status": "DEGRADED"
                },
                {
                    "name": "redirect_listener",
                    "provisioning_status": "ACTIVE",
                    "pools": [],
                    "l7policies": [
                        {
                            "action": "REDIRECT_TO_URL",
                            "rules": [
                                {
                                    "type": "PATH",
                                    "id": "27f3007a-a1cb-4e17-9696-0e578d617715",
                                    "provisioning_status": "ACTIVE"
                                }
                            ],
                            "id": "2e8f3139-0673-43f9-aae4-c7a9460e3233",
                            "name": "redirect_policy",
                            "provisioning_status": "ACTIVE"
                        }
                    ],
                    "id": "1341fbaf-ad4f-4cfe-a943-ad5e14e664cb",
                    "operating_status": "ONLINE"
                }
            ],
            "pools": [
                {
                    "name": "HTTP_pool",
                    "provisioning_status": "ACTIVE",
                    "healthmonitor": {
                        "type": "HTTP",
                        "id": "0b608787-ea2d-48c7-89a1-8b8c24fa3b17",
                        "name": "HTTP_healthmonitor",
                        "provisioning_status": "ACTIVE"
                    },
                    "members": [
                        {
                            "name": "",
                            "provisioning_status": "ACTIVE",
                            "address": "192.0.2.20",
                            "protocol_port": 80,
                            "id": "3c6857f4-057a-405a-9134-bdeaa8796c8a",
                            "operating_status": "ERROR"
                        },
                        {
                            "name": "",
                            "provisioning_status": "ACTIVE",
                            "address": "192.0.2.21",
                            "protocol_port": 80,
                            "id": "f7495909-1706-4c91-83b4-641dab6962ac",
                            "operating_status": "ONLINE"
                        }
                    ],
                    "id": "89a47f78-cf81-480b-ad74-bba4177eeb81",
                    "operating_status": "DEGRADED"
                },
                {
                    "name": "source_ip_pool",
                    "provisioning_status": "ACTIVE",
                    "healthmonitor": {},
                    "members": [],
                    "id": "8189d6a9-646e-4d23-b742-548dab991951",
                    "operating_status": "ONLINE"
                }
            ],
            "id": "84faceee-cb97-48d0-93df-9e41d40d4cb4",
            "operating_status": "DEGRADED"
        }
    }
}
PUT
/v2/lbaas/loadbalancers/{loadbalancer_id}/failover

负载均衡器故障转移

执行负载均衡器的故障转移。

此操作仅对具有负载均衡器管理员权限的用户可用。

成功

代码

原因

202 - Accepted

请求已接受,但处理可能需要一些时间。

错误

代码

原因

401 - 未授权

由于凭据无效,访问被拒绝。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

409 - Conflict

此资源有一个正在进行的操作,与此请求冲突。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

请求

名称

入参

类型

描述

loadbalancer_id

路径

uuid

要查询的负载均衡器的 ID。

Curl 示例

curl -X PUT -H "X-Auth-Token: <token>" http://198.51.100.10:9876/v2/lbaas/loadbalancers/4a13c573-623c-4d23-8a9c-581dc17ceb1f/failover

Response

成功的故障转移请求没有响应正文内容。

监听器

GET
/v2/lbaas/listeners

列出监听器

列出项目的所有监听器。

使用 fields 查询参数来控制响应体中返回的字段。此外,您还可以使用查询字符串参数过滤结果。有关信息,请参阅 过滤和列选择

管理员用户可以指定一个不同于自己的项目 ID 来列出其他项目的监听器。

列表可能为空。

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

由于凭据无效,访问被拒绝。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

请求

名称

入参

类型

描述

fields (可选)

查询

字符串

您希望服务器返回的字段。如果未指定 fields 查询参数,则 octavia API 将返回策略设置允许的所有属性。通过使用 fields 参数,API 将仅返回请求的属性集。 fields 参数可以指定多次。例如,如果在请求 URL 中指定 fields=id&fields=name,则仅返回 idname 属性。

project_id (可选)

查询

字符串

要查询的项目 ID。

Curl 示例

curl -X GET -H "X-Auth-Token: <token>" http://198.51.100.10:9876/v2/lbaas/listeners?project_id=e3cd678b11784734bc366148aa37580e

响应参数

名称

入参

类型

描述

admin_state_up

body

布尔值

资源的管理员状态,即启用(true)或禁用(false)。

allowed_cidrs

body

数组

IPv4、IPv6 或两者的混合 CIDR 列表。

版本 2.12 中新增

alpn_protocols

body

数组

ALPN 协议列表。可用协议:http/1.0、http/1.1、h2

版本 2.20 新增

client_authentication

body

字符串

TLS 客户端身份验证模式。选项包括 NONEOPTIONALMANDATORY

版本 2.8 新增

client_ca_tls_container_ref

body

字符串

指向 密钥管理器服务中包含 PEM 格式客户端 CA 证书包的 Secret 的引用,用于 TERMINATED_HTTPS 监听器。

版本 2.8 新增

client_crl_container_ref

body

字符串

指向 密钥管理器服务中包含 PEM 格式 CA 吊销列表文件的 Secret 的 URI,用于 TERMINATED_HTTPS 监听器。

版本 2.8 新增

connection_limit

body

整数

此监听器允许的最大连接数。默认值为 -1,表示无限连接或由提供商驱动程序定义的默认值。

created_at

body

字符串

资源创建的 UTC 日期和时间戳。

default_pool_id

body

uuid

如果 L7 策略不匹配,则监听器使用的池的 ID。池存在一些限制。请参阅 协议组合(监听器/池)

default_tls_container_ref

body

字符串

指向 密钥管理器服务中包含 PKCS12 格式证书/密钥包的 Secret 的 URI,用于 TERMINATED_HTTPS 监听器。已弃用:类型为“certificate”的 Secret 容器,包含 TERMINATED_HTTPS 监听器的证书和密钥。

description

body

字符串

资源的易于阅读的描述。

hsts_include_subdomains

body

bool

定义是否应将 includeSubDomains 指令添加到 Strict-Transport-Security HTTP 响应头。

版本 2.27 新增

hsts_max_age

body

整数

Strict-Transport-Security HTTP 响应头的 max_age 指令的值。

版本 2.27 新增

hsts_preload

body

bool

定义是否应将 preload 指令添加到 Strict-Transport-Security HTTP 响应头。

版本 2.27 新增

id

body

uuid

监听器的 ID。

insert_headers

body

对象

将在请求发送到后端 member 之前插入的可选头部的字典。请参阅 支持的 HTTP 头部插入。键和值始终以字符串形式指定。

l7policies

body

数组

L7 策略 ID 列表。

listener

body

对象

监听器对象。

loadbalancers

body

数组

负载均衡器 ID 列表。

name

body

字符串

资源的易于阅读的名称。

operating_status

body

字符串

资源的运行状态。请参阅 运行状态码

project_id

body

字符串

拥有此资源的项目的 ID。

协议

body

字符串

资源的协议。可以是 HTTPHTTPSSCTPPROMETHEUSTCPTERMINATED_HTTPSUDP

protocol_port

body

整数

资源的协议端口号。

provisioning_status

body

字符串

资源的配置状态。请参阅 配置状态码

sni_container_refs

body

数组

密钥管理器服务 Secret 的 URI 列表,包含 PKCS12 格式的证书/密钥包,用于 TERMINATED_HTTPS 监听器。(已弃用)类型为“certificate”的 Secret 容器,包含 TERMINATED_HTTPS 监听器的证书和密钥。

tags

body

数组

分配给资源的简单字符串列表。

版本 2.5 新增

timeout_client_data

body

整数

前端客户端不活动超时时间,以毫秒为单位。默认值:50000。

新增于版本 2.1

timeout_member_connect

body

整数

后端成员连接超时时间,以毫秒为单位。默认值:5000。

新增于版本 2.1

timeout_member_data

body

整数

后端成员不活动超时时间,以毫秒为单位。默认值:50000。

新增于版本 2.1

timeout_tcp_inspect

body

整数

等待进行内容检查的附加 TCP 数据包的时间,以毫秒为单位。默认值:0。

新增于版本 2.1

tls_ciphers

body

字符串

OpenSSL 格式的密码列表(冒号分隔)。请参阅 https://www.openssl.org/docs/man1.1.1/man1/ciphers.html

版本 2.15 新增

tls_versions

body

数组

TLS 协议版本列表。可用版本:SSLv3、TLSv1、TLSv1.1、TLSv1.2、TLSv1.3

版本 2.17 新增

updated_at

body

字符串

上次更新资源的 UTC 日期和时间戳。

响应示例

{
    "listeners": [
        {
            "description": "A great TLS listener",
            "admin_state_up": true,
            "project_id": "e3cd678b11784734bc366148aa37580e",
            "protocol": "TERMINATED_HTTPS",
            "protocol_port": 443,
            "provisioning_status": "ACTIVE",
            "default_tls_container_ref": "http://198.51.100.10:9311/v1/containers/a570068c-d295-4780-91d4-3046a325db51",
            "loadbalancers": [
                {
                    "id": "607226db-27ef-4d41-ae89-f2a800e9c2db"
                }
            ],
            "insert_headers": {
                "X-Forwarded-Port": "true",
                "X-Forwarded-For": "true"
            },
            "created_at": "2017-02-28T00:42:44",
            "updated_at": "2017-02-28T00:44:30",
            "id": "023f2e34-7806-443b-bfae-16c324569a3d",
            "operating_status": "ONLINE",
            "default_pool_id": "ddb2b28f-89e9-45d3-a329-a359c3e39e4a",
            "sni_container_refs": [
                "http://198.51.100.10:9311/v1/containers/a570068c-d295-4780-91d4-3046a325db51",
                "http://198.51.100.10:9311/v1/containers/aaebb31e-7761-4826-8cb4-2b829caca3ee"
            ],
            "l7policies": [
                {
                    "id": "58284ac9-673e-47ff-9dcb-09871a1956c4",
                    "id": "5e618272-339d-4a80-8d14-dbc093091bb1"
                }
            ],
            "name": "great_tls_listener",
            "timeout_client_data": 50000,
            "timeout_member_connect": 5000,
            "timeout_member_data": 50000,
            "timeout_tcp_inspect": 0,
            "tags": [
                "test_tag"
            ],
            "client_ca_tls_container_ref": "http://198.51.100.10:9311/v1/containers/35649991-49f3-4625-81ce-2465fe8932e5",
            "client_authentication": "NONE",
            "client_crl_container_ref": "http://198.51.100.10:9311/v1/containers/e222b065-b93b-4e2a-9a02-804b7a118c3c",
            "allowed_cidrs": [
                "192.0.2.0/24",
                "198.51.100.0/24"
            ],
            "tls_ciphers": "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256",
            "tls_versions": [
                "TLSv1.2",
                "TLSv1.3"
            ],
            "alpn_protocols": [
                "http/1.1",
                "http/1.0"
            ],
            "hsts_include_subdomains": true,
            "hsts_max_age": 31536000,
            "hsts_preload": true
        }
    ]
}
POST
/v2/lbaas/listeners

创建监听器

为负载均衡器创建监听器。

监听器配置了负载均衡器要监听的端口和协议,以接收传入的请求。负载均衡器可以配置零个或多个监听器。

此操作通过使用您在请求对象中定义的配置来配置新的监听器。在 API 验证请求并开始配置过程后,API 将返回一个响应对象,其中包含唯一的 ID 和监听器配置的状态。

在响应中,监听器的 配置状态ACTIVEPENDING_CREATEERROR

如果状态为 PENDING_CREATE,请发出 GET /v2/lbaas/listeners/{listener_id} 以查看配置操作的进度。当监听器状态更改为 ACTIVE 时,监听器将成功配置并可进行进一步配置。

如果 API 由于数据不足或数据无效而无法满足请求,则服务将返回 HTTP Bad Request (400) 响应代码,并在响应体中提供失败信息。验证错误要求您纠正错误并重新提交请求。

指定 project_id 已弃用。监听器将继承父负载均衡器的 project_id。

您可以通过在请求中指定其他元素或属性来在创建时配置监听器的所有已记录功能。

要创建监听器,父负载均衡器必须具有 ACTIVE 的配置状态。

成功

代码

原因

201 - 已创建

请求已完成,并创建了新资源。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

由于凭据无效,访问被拒绝。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

409 - Conflict

此资源有一个正在进行的操作,与此请求冲突。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

503 - 服务不可用

服务现在无法处理请求。

请求

名称

入参

类型

描述

admin_state_up (可选)

body

布尔值

资源的管理员状态,即启用(true)或禁用(false)。默认为 true

allowed_cidrs (可选)

body

数组

IPv4、IPv6 或两者的混合 CIDR 列表。默认为全部允许。当提供 CIDR 列表时,默认更改为拒绝所有。

版本 2.12 中新增

alpn_protocols (可选)

body

数组

ALPN 协议列表。可用协议:http/1.0、http/1.1、h2

版本 2.20 新增

client_authentication (可选)

body

字符串

TLS 客户端身份验证模式。选项包括 NONEOPTIONALMANDATORY

版本 2.8 新增

client_ca_tls_container_ref (可选)

body

字符串

指向 密钥管理器服务中包含 PEM 格式客户端 CA 证书包的 Secret 的引用,用于 TERMINATED_HTTPS 监听器。

版本 2.8 新增

client_crl_container_ref (可选)

body

字符串

指向 密钥管理器服务中包含 PEM 格式 CA 吊销列表文件的 Secret 的 URI,用于 TERMINATED_HTTPS 监听器。

版本 2.8 新增

connection_limit (可选)

body

整数

此监听器允许的最大连接数。默认值为 -1,表示无限连接或由提供商驱动程序定义的默认值。

default_pool (可选)

body

对象

池对象。

default_pool_id (可选)

body

uuid

如果 L7 策略不匹配,则监听器使用的池的 ID。池存在一些限制。请参阅 协议组合(监听器/池)

default_tls_container_ref (可选)

body

字符串

指向 密钥管理器服务中包含 PKCS12 格式证书/密钥包的 Secret 的 URI,用于 TERMINATED_HTTPS 监听器。已弃用:类型为“certificate”的 Secret 容器,包含 TERMINATED_HTTPS 监听器的证书和密钥。

description (可选)

body

字符串

资源的易于阅读的描述。

hsts_include_subdomains (可选)

body

bool

定义是否应将 includeSubDomains 指令添加到 Strict-Transport-Security HTTP 响应头。这需要同时设置 hsts_max_age 选项才能生效。

版本 2.27 新增

hsts_max_age (可选)

body

整数

Strict-Transport-Security HTTP 响应头的 max_age 指令的值。设置此项将为 TLS 终止监听器启用 HTTP 严格传输安全 (HSTS)。

版本 2.27 新增

hsts_preload (可选)

body

bool

定义是否应将 preload 指令添加到 Strict-Transport-Security HTTP 响应头。这需要同时设置 hsts_max_age 选项才能生效。

版本 2.27 新增

insert_headers (可选)

body

对象

将在请求发送到后端 member 之前插入的可选头部的字典。请参阅 支持的 HTTP 头部插入。键和值始终以字符串形式指定。

l7policies (可选)

body

数组

L7 策略对象列表。

listeners

body

对象

监听器对象。

loadbalancer_id

body

uuid

负载均衡器的 ID。

name (可选)

body

字符串

资源的易于阅读的名称。

project_id (可选)

body

字符串

拥有此资源的项目的 ID。(已弃用)

协议

body

字符串

资源的协议。可以是 HTTPHTTPSSCTPPROMETHEUSTCPTERMINATED_HTTPSUDP

protocol_port

body

整数

资源的协议端口号。

sni_container_refs (可选)

body

数组

密钥管理器服务 Secret 的 URI 列表,包含 PKCS12 格式的证书/密钥包,用于 TERMINATED_HTTPS 监听器。(已弃用)类型为“certificate”的 Secret 容器,包含 TERMINATED_HTTPS 监听器的证书和密钥。

tags (可选)

body

数组

分配给资源的简单字符串列表。

版本 2.5 新增

timeout_client_data (可选)

body

整数

前端客户端不活动超时时间,以毫秒为单位。默认值:50000。

新增于版本 2.1

timeout_member_connect (可选)

body

整数

后端成员连接超时时间,以毫秒为单位。默认值:5000。

新增于版本 2.1

timeout_member_data (可选)

body

整数

后端成员不活动超时时间,以毫秒为单位。默认值:50000。

新增于版本 2.1

timeout_tcp_inspect (可选)

body

整数

等待进行内容检查的附加 TCP 数据包的时间,以毫秒为单位。默认值:0。

新增于版本 2.1

tls_ciphers (可选)

body

字符串

OpenSSL 格式的密码列表(冒号分隔)。请参阅 https://www.openssl.org/docs/man1.1.1/man1/ciphers.html

版本 2.15 新增

tls_versions (可选)

body

数组

TLS 协议版本列表。可用版本:SSLv3、TLSv1、TLSv1.1、TLSv1.2、TLSv1.3

版本 2.17 新增

支持的 HTTP 头部插入

注意

指定头部插入时,键和值都始终以字符串形式指定。

描述

X-Forwarded-For

字符串

当为“true”时,将在发送到后端 member 的请求中插入 X-Forwarded-For 头部,该头部指定客户端 IP 地址。

X-Forwarded-Port

字符串

当为“true”时,将在发送到后端 member 的请求中插入 X-Forwarded-Port 头部,该头部指定监听器端口。

X-Forwarded-Proto

字符串

当为“true”时,将在发送到后端 member 的请求中插入 X-Forwarded-Proto 头部。对于 HTTP 监听器协议类型为 HTTP,对于 TERMINATED_HTTPS 监听器协议类型为 HTTPS。**版本 2.1 新增**

X-SSL-Client-Verify

字符串

当为“true”时,将在发送到后端 member 的请求中插入 X-SSL-Client-Verify 头部,其中包含 0(如果客户端身份验证成功)或大于 0 的错误结果编号,这些编号与 openssl verify 错误代码一致。

X-SSL-Client-Has-Cert

字符串

当为“true”时,将在发送到后端 member 的请求中插入 X-SSL-Client-Has-Cert 头部,该头部为“true”(如果提供了客户端身份验证证书)或“false”(如果未提供)。不表示有效性。

X-SSL-Client-DN

字符串

当为“true”时,将在发送到后端 member 的请求中插入 X-SSL-Client-DN 头部,该头部包含客户端提供的证书的完整区分名称。

X-SSL-Client-CN

字符串

当为“true”时,将在发送到后端 member 的请求中插入 X-SSL-Client-CN 头部,该头部包含客户端提供的证书的完整区分名称中的通用名称。

X-SSL-Issuer

字符串

当为“true”时,将在发送到后端 member 的请求中插入 X-SSL-Issuer 头部,该头部包含客户端证书颁发者的完整区分名称。

X-SSL-Client-SHA1

字符串

当为“true”时,将在发送到后端 member 的请求中插入 X-SSL-Client-SHA1 头部,该头部以十六进制字符串格式包含客户端提供的证书的 SHA-1 指纹。

X-SSL-Client-Not-Before

字符串

当为“true”时,将在发送到后端 member 的请求中插入 X-SSL-Client-Not-Before 头部,该头部包含客户端提供的开始日期,格式为 YYMMDDhhmmss[Z] 的字符串。

X-SSL-Client-Not-After

字符串

当为“true”时,将在发送到后端 member 的请求中插入 X-SSL-Client-Not-After 头部,该头部包含客户端提供的结束日期,格式为 YYMMDDhhmmss[Z] 的字符串。

请求示例

{
    "listener": {
        "protocol": "TERMINATED_HTTPS",
        "description": "A great TLS listener",
        "admin_state_up": true,
        "connection_limit": 200,
        "protocol_port": "443",
        "loadbalancer_id": "607226db-27ef-4d41-ae89-f2a800e9c2db",
        "name": "great_tls_listener",
        "insert_headers": {
            "X-Forwarded-For": "true",
            "X-Forwarded-Port": "true"
        },
        "default_tls_container_ref": "http://198.51.100.10:9311/v1/containers/a570068c-d295-4780-91d4-3046a325db51",
        "sni_container_refs": [
            "http://198.51.100.10:9311/v1/containers/a570068c-d295-4780-91d4-3046a325db51",
            "http://198.51.100.10:9311/v1/containers/aaebb31e-7761-4826-8cb4-2b829caca3ee"
        ],
        "timeout_client_data": 50000,
        "timeout_member_connect": 5000,
        "timeout_member_data": 50000,
        "timeout_tcp_inspect": 0,
        "tags": ["test_tag"],
        "client_ca_tls_container_ref": "http://198.51.100.10:9311/v1/containers/35649991-49f3-4625-81ce-2465fe8932e5",
        "client_authentication": "MANDATORY",
        "client_crl_container_ref": "http://198.51.100.10:9311/v1/containers/e222b065-b93b-4e2a-9a02-804b7a118c3c",
        "allowed_cidrs": [
            "192.0.2.0/24",
            "198.51.100.0/24"
        ],
        "tls_ciphers": "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256",
        "tls_versions": ["TLSv1.2", "TLSv1.3"],
        "alpn_protocols": ["http/1.1", "http/1.0"],
        "hsts_include_subdomains": true,
        "hsts_max_age": 31536000,
        "hsts_preload": true
    }
}

Curl 示例

curl -X POST -H "Content-Type: application/json" -H "X-Auth-Token: <token>" -d '{"listener": {"protocol": "TERMINATED_HTTPS", "description": "A great TLS listener", "admin_state_up": true, "connection_limit": 200, "protocol_port": "443", "loadbalancer_id": "607226db-27ef-4d41-ae89-f2a800e9c2db", "name": "great_tls_listener", "insert_headers": {"X-Forwarded-For": "true", "X-Forwarded-Port": "true"}, "default_tls_container_ref": "http://198.51.100.10:9311/v1/containers/a570068c-d295-4780-91d4-3046a325db51", "sni_container_refs": ["http://198.51.100.10:9311/v1/containers/a570068c-d295-4780-91d4-3046a325db51", "http://198.51.100.10:9311/v1/containers/aaebb31e-7761-4826-8cb4-2b829caca3ee"], "timeout_client_data": 50000, "timeout_member_connect": 5000, "timeout_member_data": 50000, "timeout_tcp_inspect": 0, "tags": ["test_tag"], "client_ca_tls_container_ref": "http://198.51.100.10:9311/v1/containers/35649991-49f3-4625-81ce-2465fe8932e5", "client_authentication": "MANDATORY", "client_crl_container_ref": "http://198.51.100.10:9311/v1/containers/e222b065-b93b-4e2a-9a02-804b7a118c3c", "allowed_cidrs": ["192.0.2.0/24", "198.51.100.0/24"], "tls_ciphers": "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256", "tls_versions": ["TLSv1.2", "TLSv1.3"], "alpn_protocols": ["http/1.1", "http/1.0"], "hsts_include_subdomains": true, "hsts_max_age": 31536000, "hsts_preload": true}}' http://198.51.100.10:9876/v2/lbaas/listeners

响应参数

名称

入参

类型

描述

admin_state_up

body

布尔值

资源的管理员状态,即启用(true)或禁用(false)。

allowed_cidrs

body

数组

IPv4、IPv6 或两者的混合 CIDR 列表。

版本 2.12 中新增

alpn_protocols

body

数组

ALPN 协议列表。可用协议:http/1.0、http/1.1、h2

版本 2.20 新增

client_authentication

body

字符串

TLS 客户端身份验证模式。选项包括 NONEOPTIONALMANDATORY

版本 2.8 新增

client_ca_tls_container_ref

body

字符串

指向 密钥管理器服务中包含 PEM 格式客户端 CA 证书包的 Secret 的引用,用于 TERMINATED_HTTPS 监听器。

版本 2.8 新增

client_crl_container_ref

body

字符串

指向 密钥管理器服务中包含 PEM 格式 CA 吊销列表文件的 Secret 的 URI,用于 TERMINATED_HTTPS 监听器。

版本 2.8 新增

connection_limit

body

整数

此监听器允许的最大连接数。默认值为 -1,表示无限连接或由提供商驱动程序定义的默认值。

created_at

body

字符串

资源创建的 UTC 日期和时间戳。

default_pool_id

body

uuid

如果 L7 策略不匹配,则监听器使用的池的 ID。池存在一些限制。请参阅 协议组合(监听器/池)

default_tls_container_ref

body

字符串

指向 密钥管理器服务中包含 PKCS12 格式证书/密钥包的 Secret 的 URI,用于 TERMINATED_HTTPS 监听器。已弃用:类型为“certificate”的 Secret 容器,包含 TERMINATED_HTTPS 监听器的证书和密钥。

description

body

字符串

资源的易于阅读的描述。

hsts_include_subdomains

body

bool

定义是否应将 includeSubDomains 指令添加到 Strict-Transport-Security HTTP 响应头。

版本 2.27 新增

hsts_max_age

body

整数

Strict-Transport-Security HTTP 响应头的 max_age 指令的值。

版本 2.27 新增

hsts_preload

body

bool

定义是否应将 preload 指令添加到 Strict-Transport-Security HTTP 响应头。

版本 2.27 新增

id

body

uuid

监听器的 ID。

insert_headers

body

对象

将在请求发送到后端 member 之前插入的可选头部的字典。请参阅 支持的 HTTP 头部插入。键和值始终以字符串形式指定。

l7policies

body

数组

L7 策略 ID 列表。

listener

body

对象

监听器对象。

loadbalancers

body

数组

负载均衡器 ID 列表。

name

body

字符串

资源的易于阅读的名称。

operating_status

body

字符串

资源的运行状态。请参阅 运行状态码

project_id

body

字符串

拥有此资源的项目的 ID。

协议

body

字符串

资源的协议。可以是 HTTPHTTPSSCTPPROMETHEUSTCPTERMINATED_HTTPSUDP

protocol_port

body

整数

资源的协议端口号。

provisioning_status

body

字符串

资源的配置状态。请参阅 配置状态码

sni_container_refs

body

数组

密钥管理器服务 Secret 的 URI 列表,包含 PKCS12 格式的证书/密钥包,用于 TERMINATED_HTTPS 监听器。(已弃用)类型为“certificate”的 Secret 容器,包含 TERMINATED_HTTPS 监听器的证书和密钥。

tags

body

数组

分配给资源的简单字符串列表。

版本 2.5 新增

timeout_client_data

body

整数

前端客户端不活动超时时间,以毫秒为单位。默认值:50000。

新增于版本 2.1

timeout_member_connect

body

整数

后端成员连接超时时间,以毫秒为单位。默认值:5000。

新增于版本 2.1

timeout_member_data

body

整数

后端成员不活动超时时间,以毫秒为单位。默认值:50000。

新增于版本 2.1

timeout_tcp_inspect

body

整数

等待进行内容检查的附加 TCP 数据包的时间,以毫秒为单位。默认值:0。

新增于版本 2.1

tls_ciphers

body

字符串

OpenSSL 格式的密码列表(冒号分隔)。请参阅 https://www.openssl.org/docs/man1.1.1/man1/ciphers.html

版本 2.15 新增

tls_versions

body

数组

TLS 协议版本列表。可用版本:SSLv3、TLSv1、TLSv1.1、TLSv1.2、TLSv1.3

版本 2.17 新增

updated_at

body

字符串

上次更新资源的 UTC 日期和时间戳。

响应示例

{
    "listener": {
        "description": "A great TLS listener",
        "admin_state_up": true,
        "project_id": "e3cd678b11784734bc366148aa37580e",
        "protocol": "TERMINATED_HTTPS",
        "protocol_port": 443,
        "provisioning_status": "PENDING_CREATE",
        "default_tls_container_ref": "http://198.51.100.10:9311/v1/containers/a570068c-d295-4780-91d4-3046a325db51",
        "loadbalancers": [
            {
                "id": "607226db-27ef-4d41-ae89-f2a800e9c2db"
            }
        ],
        "insert_headers": {
            "X-Forwarded-Port": "true",
            "X-Forwarded-For": "true"
        },
        "created_at": "2017-02-28T00:42:44",
        "updated_at": "2017-02-28T00:44:30",
        "id": "023f2e34-7806-443b-bfae-16c324569a3d",
        "operating_status": "OFFLINE",
        "default_pool_id": "ddb2b28f-89e9-45d3-a329-a359c3e39e4a",
        "sni_container_refs": [
            "http://198.51.100.10:9311/v1/containers/a570068c-d295-4780-91d4-3046a325db51",
            "http://198.51.100.10:9311/v1/containers/aaebb31e-7761-4826-8cb4-2b829caca3ee"
        ],
        "l7policies": [
            {
                "id": "5e618272-339d-4a80-8d14-dbc093091bb1"
            }
        ],
        "name": "great_tls_listener",
        "timeout_client_data": 50000,
        "timeout_member_connect": 5000,
        "timeout_member_data": 50000,
        "timeout_tcp_inspect": 0,
        "tags": ["test_tag"],
        "client_ca_tls_container_ref": "http://198.51.100.10:9311/v1/containers/35649991-49f3-4625-81ce-2465fe8932e5",
        "client_authentication": "MANDATORY",
        "client_crl_container_ref": "http://198.51.100.10:9311/v1/containers/e222b065-b93b-4e2a-9a02-804b7a118c3c",
        "allowed_cidrs": [
            "192.0.2.0/24",
            "198.51.100.0/24"
        ],
        "tls_ciphers": "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256",
        "tls_versions": [
            "TLSv1.2",
            "TLSv1.3"
        ],
        "alpn_protocols": [
            "http/1.1",
            "http/1.0"
        ],
        "hsts_include_subdomains": true,
        "hsts_max_age": 31536000,
        "hsts_preload": true
    }
}
GET
/v2/lbaas/listeners/{listener_id}

显示监听器详细信息

显示监听器的详细信息。

如果您不是管理员用户,并且父负载均衡器不属于您的项目,则服务将返回 HTTP Forbidden (403) 响应代码。

此操作不需要请求正文。

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

401 - 未授权

由于凭据无效,访问被拒绝。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

请求

名称

入参

类型

描述

fields (可选)

查询

字符串

您希望服务器返回的字段。如果未指定 fields 查询参数,则 octavia API 将返回策略设置允许的所有属性。通过使用 fields 参数,API 将仅返回请求的属性集。 fields 参数可以指定多次。例如,如果在请求 URL 中指定 fields=id&fields=name,则仅返回 idname 属性。

listener_id

路径

uuid

要查询的监听器的 ID。

Curl 示例

curl -X GET -H "X-Auth-Token: <token>" http://198.51.100.10:9876/v2/lbaas/listeners/023f2e34-7806-443b-bfae-16c324569a3d

响应参数

名称

入参

类型

描述

admin_state_up

body

布尔值

资源的管理员状态,即启用(true)或禁用(false)。

allowed_cidrs

body

数组

IPv4、IPv6 或两者的混合 CIDR 列表。

版本 2.12 中新增

alpn_protocols

body

数组

ALPN 协议列表。可用协议:http/1.0、http/1.1、h2

版本 2.20 新增

client_authentication

body

字符串

TLS 客户端身份验证模式。选项包括 NONEOPTIONALMANDATORY

版本 2.8 新增

client_ca_tls_container_ref

body

字符串

指向 密钥管理器服务中包含 PEM 格式客户端 CA 证书包的 Secret 的引用,用于 TERMINATED_HTTPS 监听器。

版本 2.8 新增

client_crl_container_ref

body

字符串

指向 密钥管理器服务中包含 PEM 格式 CA 吊销列表文件的 Secret 的 URI,用于 TERMINATED_HTTPS 监听器。

版本 2.8 新增

connection_limit

body

整数

此监听器允许的最大连接数。默认值为 -1,表示无限连接或由提供商驱动程序定义的默认值。

created_at

body

字符串

资源创建的 UTC 日期和时间戳。

default_pool_id

body

uuid

如果 L7 策略不匹配,则监听器使用的池的 ID。池存在一些限制。请参阅 协议组合(监听器/池)

default_tls_container_ref

body

字符串

指向 密钥管理器服务中包含 PKCS12 格式证书/密钥包的 Secret 的 URI,用于 TERMINATED_HTTPS 监听器。已弃用:类型为“certificate”的 Secret 容器,包含 TERMINATED_HTTPS 监听器的证书和密钥。

description

body

字符串

资源的易于阅读的描述。

hsts_include_subdomains

body

bool

定义是否应将 includeSubDomains 指令添加到 Strict-Transport-Security HTTP 响应头。

版本 2.27 新增

hsts_max_age

body

整数

Strict-Transport-Security HTTP 响应头的 max_age 指令的值。

版本 2.27 新增

hsts_preload

body

bool

定义是否应将 preload 指令添加到 Strict-Transport-Security HTTP 响应头。

版本 2.27 新增

id

body

uuid

监听器的 ID。

insert_headers

body

对象

将在请求发送到后端 member 之前插入的可选头部的字典。请参阅 支持的 HTTP 头部插入。键和值始终以字符串形式指定。

l7policies

body

数组

L7 策略 ID 列表。

listener

body

对象

监听器对象。

loadbalancers

body

数组

负载均衡器 ID 列表。

name

body

字符串

资源的易于阅读的名称。

operating_status

body

字符串

资源的运行状态。请参阅 运行状态码

project_id

body

字符串

拥有此资源的项目的 ID。

协议

body

字符串

资源的协议。可以是 HTTPHTTPSSCTPPROMETHEUSTCPTERMINATED_HTTPSUDP

protocol_port

body

整数

资源的协议端口号。

provisioning_status

body

字符串

资源的配置状态。请参阅 配置状态码

sni_container_refs

body

数组

密钥管理器服务 Secret 的 URI 列表,包含 PKCS12 格式的证书/密钥包,用于 TERMINATED_HTTPS 监听器。(已弃用)类型为“certificate”的 Secret 容器,包含 TERMINATED_HTTPS 监听器的证书和密钥。

tags

body

数组

分配给资源的简单字符串列表。

版本 2.5 新增

timeout_client_data

body

整数

前端客户端不活动超时时间,以毫秒为单位。默认值:50000。

新增于版本 2.1

timeout_member_connect

body

整数

后端成员连接超时时间,以毫秒为单位。默认值:5000。

新增于版本 2.1

timeout_member_data

body

整数

后端成员不活动超时时间,以毫秒为单位。默认值:50000。

新增于版本 2.1

timeout_tcp_inspect

body

整数

等待进行内容检查的附加 TCP 数据包的时间,以毫秒为单位。默认值:0。

新增于版本 2.1

tls_ciphers

body

字符串

OpenSSL 格式的密码列表(冒号分隔)。请参阅 https://www.openssl.org/docs/man1.1.1/man1/ciphers.html

版本 2.15 新增

tls_versions

body

数组

TLS 协议版本列表。可用版本:SSLv3、TLSv1、TLSv1.1、TLSv1.2、TLSv1.3

版本 2.17 新增

updated_at

body

字符串

上次更新资源的 UTC 日期和时间戳。

响应示例

{
    "listener": {
        "description": "A great TLS listener",
        "admin_state_up": true,
        "project_id": "e3cd678b11784734bc366148aa37580e",
        "protocol": "TERMINATED_HTTPS",
        "protocol_port": 443,
        "provisioning_status": "ACTIVE",
        "default_tls_container_ref": "http://198.51.100.10:9311/v1/containers/a570068c-d295-4780-91d4-3046a325db51",
        "loadbalancers": [
            {
                "id": "607226db-27ef-4d41-ae89-f2a800e9c2db"
            }
        ],
        "insert_headers": {
            "X-Forwarded-Port": "true",
            "X-Forwarded-For": "true"
        },
        "created_at": "2017-02-28T00:42:44",
        "updated_at": "2017-02-28T00:44:30",
        "id": "023f2e34-7806-443b-bfae-16c324569a3d",
        "operating_status": "ONLINE",
        "default_pool_id": "ddb2b28f-89e9-45d3-a329-a359c3e39e4a",
        "sni_container_refs": [
            "http://198.51.100.10:9311/v1/containers/a570068c-d295-4780-91d4-3046a325db51",
            "http://198.51.100.10:9311/v1/containers/aaebb31e-7761-4826-8cb4-2b829caca3ee"
        ],
        "l7policies": [
            {
                "id": "5e618272-339d-4a80-8d14-dbc093091bb1"
            }
        ],
        "name": "great_tls_listener",
        "timeout_client_data": 50000,
        "timeout_member_connect": 5000,
        "timeout_member_data": 50000,
        "timeout_tcp_inspect": 0,
        "tags": ["test_tag"],
        "client_ca_tls_container_ref": "http://198.51.100.10:9311/v1/containers/35649991-49f3-4625-81ce-2465fe8932e5",
        "client_authentication": "MANDATORY",
        "client_crl_container_ref": "http://198.51.100.10:9311/v1/containers/e222b065-b93b-4e2a-9a02-804b7a118c3c",
        "allowed_cidrs": [
            "192.0.2.0/24",
            "198.51.100.0/24"
        ],
        "tls_ciphers": "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256",
        "tls_versions": [
            "TLSv1.2",
            "TLSv1.3"
        ],
        "alpn_protocols": [
            "http/1.1",
            "http/1.0"
        ],
        "hsts_include_subdomains": true,
        "hsts_max_age": 31536000,
        "hsts_preload": true
    }
}
PUT
/v2/lbaas/listeners/{listener_id}

更新监听器

更新现有监听器。

如果请求有效,服务将返回 Accepted (202) 响应代码。要确认更新,请检查监听器的配置状态是否为 ACTIVE。如果状态为 PENDING_UPDATE,请使用 GET 操作轮询监听器对象以查看更改。

此操作返回更新后的监听器对象,其配置状态为 ACTIVEPENDING_UPDATEERROR

成功

代码

原因

202 - Accepted

请求已接受,但处理可能需要一些时间。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

由于凭据无效,访问被拒绝。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

409 - Conflict

此资源有一个正在进行的操作,与此请求冲突。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

请求

名称

入参

类型

描述

admin_state_up (可选)

body

布尔值

资源的管理员状态,即启用(true)或禁用(false)。默认为 true

allowed_cidrs (可选)

body

数组

IPv4、IPv6 或两者的混合 CIDR 列表。默认为全部允许。当提供 CIDR 列表时,默认更改为拒绝所有。

版本 2.12 中新增

alpn_protocols (可选)

body

数组

ALPN 协议列表。可用协议:http/1.0、http/1.1、h2

版本 2.20 新增

client_authentication (可选)

body

字符串

TLS 客户端身份验证模式。选项包括 NONEOPTIONALMANDATORY

版本 2.8 新增

client_ca_tls_container_ref (可选)

body

字符串

指向 密钥管理器服务中包含 PEM 格式客户端 CA 证书包的 Secret 的引用,用于 TERMINATED_HTTPS 监听器。

版本 2.8 新增

client_crl_container_ref (可选)

body

字符串

指向 密钥管理器服务中包含 PEM 格式 CA 吊销列表文件的 Secret 的 URI,用于 TERMINATED_HTTPS 监听器。

版本 2.8 新增

connection_limit (可选)

body

整数

此监听器允许的最大连接数。默认值为 -1,表示无限连接或由提供商驱动程序定义的默认值。

default_pool_id (可选)

body

uuid

如果 L7 策略不匹配,则监听器使用的池的 ID。池存在一些限制。请参阅 协议组合(监听器/池)

default_tls_container_ref (可选)

body

字符串

指向 密钥管理器服务中包含 PKCS12 格式证书/密钥包的 Secret 的 URI,用于 TERMINATED_HTTPS 监听器。已弃用:类型为“certificate”的 Secret 容器,包含 TERMINATED_HTTPS 监听器的证书和密钥。

description (可选)

body

字符串

资源的易于阅读的描述。

hsts_include_subdomains (可选)

body

bool

定义是否应将 includeSubDomains 指令添加到 Strict-Transport-Security HTTP 响应头。这需要同时设置 hsts_max_age 选项才能生效。

版本 2.27 新增

hsts_max_age (可选)

body

整数

Strict-Transport-Security HTTP 响应头的 max_age 指令的值。设置此项将为 TLS 终止监听器启用 HTTP 严格传输安全 (HSTS)。

版本 2.27 新增

hsts_preload (可选)

body

bool

定义是否应将 preload 指令添加到 Strict-Transport-Security HTTP 响应头。这需要同时设置 hsts_max_age 选项才能生效。

版本 2.27 新增

insert_headers (可选)

body

对象

将在请求发送到后端 member 之前插入的可选头部的字典。请参阅 支持的 HTTP 头部插入。键和值始终以字符串形式指定。

listener_id

路径

uuid

要查询的监听器的 ID。

name (可选)

body

字符串

资源的易于阅读的名称。

sni_container_refs (可选)

body

数组

密钥管理器服务 Secret 的 URI 列表,包含 PKCS12 格式的证书/密钥包,用于 TERMINATED_HTTPS 监听器。(已弃用)类型为“certificate”的 Secret 容器,包含 TERMINATED_HTTPS 监听器的证书和密钥。

tags (可选)

body

数组

分配给资源的简单字符串列表。

版本 2.5 新增

timeout_client_data (可选)

body

整数

前端客户端不活动超时时间,以毫秒为单位。默认值:50000。

新增于版本 2.1

timeout_member_connect (可选)

body

整数

后端成员连接超时时间,以毫秒为单位。默认值:5000。

新增于版本 2.1

timeout_member_data (可选)

body

整数

后端成员不活动超时时间,以毫秒为单位。默认值:50000。

新增于版本 2.1

timeout_tcp_inspect (可选)

body

整数

等待进行内容检查的附加 TCP 数据包的时间,以毫秒为单位。默认值:0。

新增于版本 2.1

tls_ciphers (可选)

body

字符串

OpenSSL 格式的密码列表(冒号分隔)。请参阅 https://www.openssl.org/docs/man1.1.1/man1/ciphers.html

版本 2.15 新增

tls_versions (可选)

body

数组

TLS 协议版本列表。可用版本:SSLv3、TLSv1、TLSv1.1、TLSv1.2、TLSv1.3

版本 2.17 新增

请求示例

{
    "listener": {
        "description": "An updated great TLS listener",
        "admin_state_up": true,
        "connection_limit": 200,
        "name": "great_updated_tls_listener",
        "default_pool_id": "ddb2b28f-89e9-45d3-a329-a359c3e39e4a",
        "insert_headers": {
            "X-Forwarded-For": "false",
            "X-Forwarded-Port": "true"
        },
        "default_tls_container_ref": "http://198.51.100.10:9311/v1/containers/a570068c-d295-4780-91d4-3046a325db51",
        "sni_container_refs": [
            "http://198.51.100.10:9311/v1/containers/a570068c-d295-4780-91d4-3046a325db51",
            "http://198.51.100.10:9311/v1/containers/aaebb31e-7761-4826-8cb4-2b829caca3ee"
        ],
        "timeout_client_data": 100000,
        "timeout_member_connect": 1000,
        "timeout_member_data": 100000,
        "timeout_tcp_inspect": 5,
        "tags": [
            "updated_tag"
        ],
        "client_ca_tls_container_ref": null,
        "allowed_cidrs": [
            "192.0.2.0/24",
            "198.51.100.0/24"
        ],
        "tls_ciphers": "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256",
        "tls_versions": [
            "TLSv1.2",
            "TLSv1.3"
        ],
        "alpn_protocols": [
            "http/1.1",
            "http/1.0"
        ],
        "hsts_include_subdomains": true,
        "hsts_max_age": 31536000,
        "hsts_preload": true
    }
}

Curl 示例

curl -X PUT -H "Content-Type: application/json" -H "X-Auth-Token: <token>" -d '{"listener": {"description": "An updated great TLS listener", "admin_state_up": true, "connection_limit": 200, "name": "great_updated_tls_listener", "insert_headers": {"X-Forwarded-For": "false", "X-Forwarded-Port": "true"}, "default_tls_container_ref": "http://198.51.100.10:9311/v1/containers/a570068c-d295-4780-91d4-3046a325db51", "sni_container_refs": ["http://198.51.100.10:9311/v1/containers/a570068c-d295-4780-91d4-3046a325db51", "http://198.51.100.10:9311/v1/containers/aaebb31e-7761-4826-8cb4-2b829caca3ee"], "timeout_client_data": 100000, "timeout_member_connect": 1000, "timeout_member_data": 100000, "timeout_tcp_inspect": 5, "tags": ["updated_tag"], "client_ca_tls_container_ref": null, "allowed_cidrs": ["192.0.2.0/24", "198.51.100.0/24"], "tls_ciphers": "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256", "tls_versions": ["TLSv1.2", "TLSv1.3"], "alpn_protocols": ["http/1.1", "http/1.0"], "hsts_include_subdomains": true, "hsts_max_age": 31536000, "hsts_preload": true}}' http://198.51.100.10:9876/v2/lbaas/listeners/023f2e34-7806-443b-bfae-16c324569a3d

响应参数

名称

入参

类型

描述

admin_state_up

body

布尔值

资源的管理员状态,即启用(true)或禁用(false)。

allowed_cidrs

body

数组

IPv4、IPv6 或两者的混合 CIDR 列表。

版本 2.12 中新增

alpn_protocols

body

数组

ALPN 协议列表。可用协议:http/1.0、http/1.1、h2

版本 2.20 新增

client_authentication

body

字符串

TLS 客户端身份验证模式。选项包括 NONEOPTIONALMANDATORY

版本 2.8 新增

client_ca_tls_container_ref

body

字符串

指向 密钥管理器服务中包含 PEM 格式客户端 CA 证书包的 Secret 的引用,用于 TERMINATED_HTTPS 监听器。

版本 2.8 新增

client_crl_container_ref

body

字符串

指向 密钥管理器服务中包含 PEM 格式 CA 吊销列表文件的 Secret 的 URI,用于 TERMINATED_HTTPS 监听器。

版本 2.8 新增

connection_limit

body

整数

此监听器允许的最大连接数。默认值为 -1,表示无限连接或由提供商驱动程序定义的默认值。

created_at

body

字符串

资源创建的 UTC 日期和时间戳。

default_pool_id

body

uuid

如果 L7 策略不匹配,则监听器使用的池的 ID。池存在一些限制。请参阅 协议组合(监听器/池)

default_tls_container_ref

body

字符串

指向 密钥管理器服务中包含 PKCS12 格式证书/密钥包的 Secret 的 URI,用于 TERMINATED_HTTPS 监听器。已弃用:类型为“certificate”的 Secret 容器,包含 TERMINATED_HTTPS 监听器的证书和密钥。

description

body

字符串

资源的易于阅读的描述。

hsts_include_subdomains

body

bool

定义是否应将 includeSubDomains 指令添加到 Strict-Transport-Security HTTP 响应头。

版本 2.27 新增

hsts_max_age

body

整数

Strict-Transport-Security HTTP 响应头的 max_age 指令的值。

版本 2.27 新增

hsts_preload

body

bool

定义是否应将 preload 指令添加到 Strict-Transport-Security HTTP 响应头。

版本 2.27 新增

id

body

uuid

监听器的 ID。

insert_headers

body

对象

将在请求发送到后端 member 之前插入的可选头部的字典。请参阅 支持的 HTTP 头部插入。键和值始终以字符串形式指定。

l7policies

body

数组

L7 策略 ID 列表。

listener

body

对象

监听器对象。

loadbalancers

body

数组

负载均衡器 ID 列表。

name

body

字符串

资源的易于阅读的名称。

operating_status

body

字符串

资源的运行状态。请参阅 运行状态码

project_id

body

字符串

拥有此资源的项目的 ID。

协议

body

字符串

资源的协议。可以是 HTTPHTTPSSCTPPROMETHEUSTCPTERMINATED_HTTPSUDP

protocol_port

body

整数

资源的协议端口号。

provisioning_status

body

字符串

资源的配置状态。请参阅 配置状态码

sni_container_refs

body

数组

密钥管理器服务 Secret 的 URI 列表,包含 PKCS12 格式的证书/密钥包,用于 TERMINATED_HTTPS 监听器。(已弃用)类型为“certificate”的 Secret 容器,包含 TERMINATED_HTTPS 监听器的证书和密钥。

tags

body

数组

分配给资源的简单字符串列表。

版本 2.5 新增

timeout_client_data

body

整数

前端客户端不活动超时时间,以毫秒为单位。默认值:50000。

新增于版本 2.1

timeout_member_connect

body

整数

后端成员连接超时时间,以毫秒为单位。默认值:5000。

新增于版本 2.1

timeout_member_data

body

整数

后端成员不活动超时时间,以毫秒为单位。默认值:50000。

新增于版本 2.1

timeout_tcp_inspect

body

整数

等待进行内容检查的附加 TCP 数据包的时间,以毫秒为单位。默认值:0。

新增于版本 2.1

tls_ciphers

body

字符串

OpenSSL 格式的密码列表(冒号分隔)。请参阅 https://www.openssl.org/docs/man1.1.1/man1/ciphers.html

版本 2.15 新增

tls_versions

body

数组

TLS 协议版本列表。可用版本:SSLv3、TLSv1、TLSv1.1、TLSv1.2、TLSv1.3

版本 2.17 新增

updated_at

body

字符串

上次更新资源的 UTC 日期和时间戳。

响应示例

{
    "listener": {
        "description": "An updated great TLS listener",
        "admin_state_up": true,
        "project_id": "e3cd678b11784734bc366148aa37580e",
        "protocol": "TERMINATED_HTTPS",
        "protocol_port": 443,
        "provisioning_status": "PENDING_UPDATE",
        "default_tls_container_ref": "http://198.51.100.10:9311/v1/containers/a570068c-d295-4780-91d4-3046a325db51",
        "loadbalancers": [
            {
                "id": "607226db-27ef-4d41-ae89-f2a800e9c2db"
            }
        ],
        "insert_headers": {
            "X-Forwarded-Port": "true",
            "X-Forwarded-For": "false"
        },
        "created_at": "2017-02-28T00:42:44",
        "updated_at": "2017-02-28T00:44:30",
        "id": "023f2e34-7806-443b-bfae-16c324569a3d",
        "operating_status": "OFFLINE",
        "default_pool_id": "ddb2b28f-89e9-45d3-a329-a359c3e39e4a",
        "sni_container_refs": [
            "http://198.51.100.10:9311/v1/containers/a570068c-d295-4780-91d4-3046a325db51",
            "http://198.51.100.10:9311/v1/containers/aaebb31e-7761-4826-8cb4-2b829caca3ee"
        ],
        "l7policies": [
            {
                "id": "5e618272-339d-4a80-8d14-dbc093091bb1"
            }
        ],
        "name": "great_updated_tls_listener",
        "timeout_client_data": 100000,
        "timeout_member_connect": 1000,
        "timeout_member_data": 100000,
        "timeout_tcp_inspect": 5,
        "tags": ["updated_tag"],
        "client_ca_tls_container_ref": null,
        "client_authentication": "NONE",
        "client_crl_container_ref": null,
        "allowed_cidrs": [
            "192.0.2.0/24",
            "198.51.100.0/24"
        ],
        "tls_ciphers": "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256",
        "tls_versions": [
            "TLSv1.2",
            "TLSv1.3"
        ],
        "alpn_protocols": [
            "http/1.1",
            "http/1.0"
        ],
        "hsts_include_subdomains": true,
        "hsts_max_age": 31536000,
        "hsts_preload": true
    }
}
DELETE
/v2/lbaas/listeners/{listener_id}

移除监听器

从项目中移除监听器及其关联的配置。

API 将立即清除任何和所有配置数据,具体取决于配置设置。您无法恢复它。

成功

代码

原因

204 - No Content

请求已满足,但服务未返回任何内容。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

由于凭据无效,访问被拒绝。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

409 - Conflict

此资源有一个正在进行的操作,与此请求冲突。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

请求

名称

入参

类型

描述

listener_id

路径

uuid

要查询的监听器的 ID。

Curl 示例

curl -X DELETE -H "X-Auth-Token: <token>" http://198.51.100.10:9876/v2/lbaas/listeners/023f2e34-7806-443b-bfae-16c324569a3d

响应

成功的 DELETE 请求没有响应正文内容。

GET
/v2/lbaas/listeners/{listener_id}/stats

获取监听器统计信息

显示 Listener 的当前统计信息。

此操作返回由 listener_id 标识的监听器对象的统计信息。

如果您不是管理员用户,并且父负载均衡器不属于您的项目,则服务将返回 HTTP Forbidden (403) 响应代码。

此操作不需要请求正文。

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

401 - 未授权

由于凭据无效,访问被拒绝。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

请求

名称

入参

类型

描述

listener_id

路径

uuid

要查询的监听器的 ID。

Curl 示例

curl -X GET -H "X-Auth-Token: <token>" http://198.51.100.10:9876/v2/lbaas/listeners/023f2e34-7806-443b-bfae-16c324569a3d/stats

响应参数

名称

入参

类型

描述

stats

body

对象

统计信息对象。

active_connections

body

整数

当前活动的连接数。

bytes_in

body

整数

接收到的总字节数。

bytes_out

body

整数

发送的总字节数。

request_errors

body

整数

无法完成的总请求数。

total_connections

body

整数

处理的总连接数。

响应示例

{
    "stats": {
        "bytes_in": 65671420,
        "total_connections": 26189172,
        "active_connections": 48629,
        "bytes_out": 774771186,
        "request_errors": 0
    }
}

GET
/v2/lbaas/pools

列出池

列出项目的所有池。

使用 fields 查询参数来控制响应体中返回的字段。此外,您还可以使用查询字符串参数过滤结果。有关信息,请参阅 过滤和列选择

管理员用户可以指定一个不同于自己的项目 ID 来列出其他项目的池。

列表可能为空。

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

由于凭据无效,访问被拒绝。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

请求

名称

入参

类型

描述

fields (可选)

查询

字符串

您希望服务器返回的字段。如果未指定 fields 查询参数,则 octavia API 将返回策略设置允许的所有属性。通过使用 fields 参数,API 将仅返回请求的属性集。 fields 参数可以指定多次。例如,如果在请求 URL 中指定 fields=id&fields=name,则仅返回 idname 属性。

project_id (可选)

查询

字符串

要查询的项目 ID。

Curl 示例

curl -X GET -H "X-Auth-Token: <token>" http://198.51.100.10:9876/v2/lbaas/pools?project_id=e3cd678b11784734bc366148aa37580e

响应参数

名称

入参

类型

描述

admin_state_up

body

布尔值

资源的管理员状态,即启用(true)或禁用(false)。

alpn_protocols

body

数组

ALPN 协议列表。可用协议:http/1.0、http/1.1、h2

版本 2.24 新增

ca_tls_container_ref

body

字符串

指向 密钥管理器服务中包含 PEM 格式 CA 证书包的 Secret 的引用,用于 tls_enabled 池。

版本 2.8 新增

created_at

body

字符串

资源创建的 UTC 日期和时间戳。

crl_container_ref

body

字符串

指向 密钥管理器服务中包含 PEM 格式 CA 吊销列表文件的 Secret 的引用,用于 tls_enabled 池。

description

body

字符串

资源的易于阅读的描述。

healthmonitor_id

body

uuid

关联的健康监控 ID。

id

body

uuid

池的 ID。

lb_algorithm

body

字符串

池的负载均衡算法。可以是 LEAST_CONNECTIONSROUND_ROBINSOURCE_IPSOURCE_IP_PORT 之一。

listeners

body

数组

监听器 ID 列表。

loadbalancers

body

数组

负载均衡器 ID 列表。

members

body

数组

成员 ID 列表。

name

body

字符串

资源的易于阅读的名称。

operating_status

body

字符串

资源的运行状态。请参阅 运行状态码

project_id

body

字符串

拥有此资源的项目的 ID。

协议

body

字符串

资源的协议。可以是 HTTPHTTPSPROXYPROXYV2SCTPTCPUDP 之一。

provisioning_status

body

字符串

资源的配置状态。请参阅 配置状态码

session_persistence

body

对象

一个 JSON 对象,指定池的会话持久性,或者 null 表示无会话持久性。请参阅 池会话持久性。默认为 null

tags

body

数组

分配给资源的简单字符串列表。

版本 2.5 新增

tls_ciphers

body

字符串

OpenSSL 格式的密码列表(冒号分隔)。请参阅 https://www.openssl.org/docs/man1.1.1/man1/ciphers.html

版本 2.15 新增

tls_container_ref

body

字符串

指向 密钥管理器服务中包含 PKCS12 格式证书/密钥包的 Secret 的引用,用于 tls_enabled 池,用于与成员服务器建立 TLS 客户端身份验证。

版本 2.8 新增

tls_enabled

body

布尔值

true 时,到后端成员服务器的连接将使用 TLS 加密。默认为 false

版本 2.8 新增

tls_versions

body

数组

TLS 协议版本列表。可用版本:SSLv3、TLSv1、TLSv1.1、TLSv1.2、TLSv1.3

版本 2.17 新增

updated_at

body

字符串

上次更新资源的 UTC 日期和时间戳。

响应示例

{
    "pools": [
        {
            "lb_algorithm": "ROUND_ROBIN",
            "protocol": "HTTP",
            "description": "My round robin pool",
            "admin_state_up": true,
            "loadbalancers": [
                {
                    "id": "607226db-27ef-4d41-ae89-f2a800e9c2db"
                }
            ],
            "created_at": "2017-04-13T18:14:44",
            "provisioning_status": "ACTIVE",
            "updated_at": "2017-04-13T23:08:12",
            "session_persistence": {
                "cookie_name": null,
                "type": "SOURCE_IP"
            },
            "listeners": [
                {
                    "id": "023f2e34-7806-443b-bfae-16c324569a3d"
                }
            ],
            "members": [
                {
                    "id": "5bc73753-348f-4b5a-8f9c-10bd7b30dc35",
                    "id": "692e8358-f8fd-4b92-bbca-6e4b97c75571"
                }
            ],
            "healthmonitor_id": null,
            "project_id": "e3cd678b11784734bc366148aa37580e",
            "id": "ddb2b28f-89e9-45d3-a329-a359c3e39e4a",
            "operating_status": "ONLINE",
            "name": "round_robin_pool",
            "tags": ["test_tag"],
            "tls_container_ref": "http://198.51.100.10:9311/v1/containers/4073846f-1d5e-42e1-a4cf-a7046419d0e6",
            "ca_tls_container_ref": "http://198.51.100.10:9311/v1/containers/5f0d5540-fae6-4646-85d6-8a84883807fb",
            "crl_container_ref": "http://198.51.100.10:9311/v1/containers/6faf0a01-6892-454c-aaac-650282820c0b",
            "tls_enabled": true,
            "tls_ciphers": "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256",
            "tls_versions": ["TLSv1.2", "TLSv1.3"],
            "alpn_protocols": ["http/1.1", "http/1.0"]
        }
    ]
}
POST
/v2/lbaas/pools

创建池

为负载均衡器创建池。

池定义了请求应如何跨后端成员服务器进行负载均衡。

此操作通过使用您在请求对象中定义的配置来配置池。在 API 验证请求并开始配置过程后,API 将返回一个响应对象,其中包含唯一的 ID。

在响应中,池 provisioning statusACTIVEPENDING_CREATEERROR

如果状态为 PENDING_CREATE,请发出 GET 请求 /v2/lbaas/pools/{pool_id} 来查看预配操作的进度。当池状态更改为 ACTIVE 时,表示池已成功预配并可进行进一步配置。

最低限度,您必须指定以下池属性

  • protocol 此池及其成员侦听的协议。有效值为 HTTPHTTPSPROXYPROXYV2SCTPTCPUDP

  • lb_algorithm 将流量分发到池成员的负载均衡器算法,例如 ROUND_ROBINLEAST_CONNECTIONSSOURCE_IPSOURCE_IP_PORT。负载均衡器提供商必须支持此算法。

  • listener_id 监听器(listener)的 ID,在此监听器中此池将成为默认池。每个监听器只有一个默认池。

    —或—

  • loadbalancer_id 负载均衡器(load balancer)的 ID,在此负载均衡器下创建此池。每个负载均衡器可以关联零个或多个池。这些池可用于 L7 策略。

注意

必须指定 listener_idloadbalancer_id

省略某些属性时,它们将接收默认值

  • admin_state_up 默认为 true

  • name 默认为空字符串。

  • description 默认为空字符串。

如果 API 由于数据不足或数据无效而无法满足请求,则服务将返回 HTTP Bad Request (400) 响应代码,并在响应体中提供失败信息。验证错误要求您纠正错误并重新提交请求。

指定 project_id 已弃用。池将继承父负载均衡器的 project_id

通过在请求中指定附加元素或属性,您可以在创建时配置池的所有文档化功能。

要创建池,父负载均衡器必须具有 ACTIVE 预配状态。

SOURCE_IP_PORT 算法可在 2.13 版本中使用。

成功

代码

原因

201 - 已创建

请求已完成,并创建了新资源。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

由于凭据无效,访问被拒绝。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

409 - Conflict

此资源有一个正在进行的操作,与此请求冲突。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

503 - 服务不可用

服务现在无法处理请求。

请求

名称

入参

类型

描述

admin_state_up (可选)

body

布尔值

资源的管理员状态,即启用(true)或禁用(false)。默认为 true

alpn_protocols (可选)

body

数组

ALPN 协议列表。可用协议:http/1.0、http/1.1、h2

版本 2.24 新增

ca_tls_container_ref (可选)

body

字符串

指向 密钥管理器服务中包含 PEM 格式 CA 证书包的 Secret 的引用,用于 tls_enabled 池。

版本 2.8 新增

crl_container_ref (可选)

body

字符串

指向 密钥管理器服务中包含 PEM 格式 CA 吊销列表文件的 Secret 的引用,用于 tls_enabled 池。

description (可选)

body

字符串

资源的易于阅读的描述。

lb_algorithm

body

字符串

池的负载均衡算法。可以是 LEAST_CONNECTIONSROUND_ROBINSOURCE_IPSOURCE_IP_PORT 之一。

listener_id (可选)

body

uuid

池的监听器 ID。必须指定 listener_idloadbalancer_id。监听器有一些限制,请参见 协议组合(监听器/池)

loadbalancer_id (可选)

body

uuid

池的负载均衡器 ID。必须指定 listener_idloadbalancer_id

name (可选)

body

字符串

资源的易于阅读的名称。

project_id (可选)

body

字符串

拥有此资源的项目的 ID。(已弃用)

协议

body

字符串

资源的协议。可以是 HTTPHTTPSPROXYPROXYV2SCTPTCPUDP 之一。

session_persistence (可选)

body

对象

一个 JSON 对象,指定池的会话持久性,或者 null 表示无会话持久性。请参阅 池会话持久性。默认为 null

tags (可选)

body

数组

分配给资源的简单字符串列表。

版本 2.5 新增

tls_enabled (可选)

body

布尔值

true 时,到后端成员服务器的连接将使用 TLS 加密。默认为 false

版本 2.8 新增

tls_ciphers (可选)

body

字符串

OpenSSL 格式的密码列表(冒号分隔)。请参阅 https://www.openssl.org/docs/man1.1.1/man1/ciphers.html

版本 2.15 新增

tls_container_ref (可选)

body

字符串

指向 密钥管理器服务中包含 PKCS12 格式证书/密钥包的 Secret 的引用,用于 tls_enabled 池,用于与成员服务器建立 TLS 客户端身份验证。

版本 2.8 新增

tls_versions (可选)

body

数组

TLS 协议版本列表。可用版本:SSLv3、TLSv1、TLSv1.1、TLSv1.2、TLSv1.3

版本 2.17 新增

池会话持久性

池会话持久性指示负载均衡器尝试将来自客户端的后续请求发送到与初始请求相同的后端成员。

当池没有会话持久性时,会话持久性对象为 null

Octavia 目前支持三种会话持久性方法

方法

描述

APP_COOKIE

使用指定的 cookie_name 将后续请求发送到同一成员。

HTTP_COOKIE

负载均衡器将生成一个 cookie,并将其插入到响应中。此 cookie 将用于将后续请求发送到同一成员。

SOURCE_IP

请求的源 IP 地址将被哈希以将后续请求发送到同一成员。

池会话持久性对象

名称

入参

类型

描述

type

body

字符串

池的会话持久性类型。可以是 APP_COOKIEHTTP_COOKIESOURCE_IP 之一。

cookie_name (可选)

body

字符串

用于会话持久性的 cookie 名称。仅适用于 APP_COOKIE 会话持久性类型,此时是必需的。

persistence_timeout (可选)

body

整数

SCTP 或 UDP 流在重新调度到不同成员后可能发生的超时(以秒为单位)。目前仅适用于具有 SOURCE_IP 会话持久性的 SCTP 或 UDP 池。默认值为 360。

版本 2.2 中新增

persistence_granularity (可选)

body

字符串

用于确定 SCTP 或 UDP 会话持久性的网络掩码。目前仅对具有 SOURCE_IP 会话持久性的 SCTP 或 UDP 池有效。默认网络掩码为 255.255.255.255,表示按客户端的完整 IP。

版本 2.2 中新增

池会话持久性对象示例
{"cookie_name": "my_app_cookie", "type": "APP_COOKIE"}

请求示例

{
    "pool": {
        "lb_algorithm": "ROUND_ROBIN",
        "protocol": "HTTP",
        "description": "Super Round Robin Pool",
        "admin_state_up": true,
        "session_persistence": {
            "cookie_name": "ChocolateChip",
            "type": "APP_COOKIE"
        },
        "listener_id": "023f2e34-7806-443b-bfae-16c324569a3d",
        "name": "super-pool",
        "tags": ["test_tag"],
        "tls_container_ref": "http://198.51.100.10:9311/v1/containers/4073846f-1d5e-42e1-a4cf-a7046419d0e6",
        "ca_tls_container_ref": "http://198.51.100.10:9311/v1/containers/5f0d5540-fae6-4646-85d6-8a84883807fb",
        "crl_container_ref": "http://198.51.100.10:9311/v1/containers/6faf0a01-6892-454c-aaac-650282820c0b",
        "tls_enabled": true,
        "tls_ciphers": "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256",
        "tls_versions": ["TLSv1.2", "TLSv1.3"],
        "alpn_protocols": ["http/1.1", "http/1.0"]
    }
}

Curl 示例

curl -X POST -H "Content-Type: application/json" -H "X-Auth-Token: <token>" -d '{"pool":{"lb_algorithm":"ROUND_ROBIN","protocol":"HTTP","description":"Super Round Robin Pool","admin_state_up":true,"session_persistence":{"cookie_name":"ChocolateChip","type":"APP_COOKIE"},"listener_id":"023f2e34-7806-443b-bfae-16c324569a3d","name":"super-pool","tags":["test_tag"],"tls_container_ref":"http://198.51.100.10:9311/v1/containers/4073846f-1d5e-42e1-a4cf-a7046419d0e6","ca_tls_container_ref":"http://198.51.100.10:9311/v1/containers/5f0d5540-fae6-4646-85d6-8a84883807fb","crl_container_ref":"http://198.51.100.10:9311/v1/containers/6faf0a01-6892-454c-aaac-650282820c0b","tls_enabled":true,"tls_ciphers":"ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256", "tls_versions": ["TLSv1.2", "TLSv1.3"], "alpn_protocols": ["http/1.1", "http/1.0"]}}' http://198.51.100.10:9876/v2/lbaas/pools

响应参数

名称

入参

类型

描述

admin_state_up

body

布尔值

资源的管理员状态,即启用(true)或禁用(false)。

alpn_protocols

body

数组

ALPN 协议列表。可用协议:http/1.0、http/1.1、h2

版本 2.24 新增

ca_tls_container_ref

body

字符串

指向 密钥管理器服务中包含 PEM 格式 CA 证书包的 Secret 的引用,用于 tls_enabled 池。

版本 2.8 新增

created_at

body

字符串

资源创建的 UTC 日期和时间戳。

crl_container_ref

body

字符串

指向 密钥管理器服务中包含 PEM 格式 CA 吊销列表文件的 Secret 的引用,用于 tls_enabled 池。

description

body

字符串

资源的易于阅读的描述。

healthmonitor_id

body

uuid

关联的健康监控 ID。

id

body

uuid

池的 ID。

lb_algorithm

body

字符串

池的负载均衡算法。可以是 LEAST_CONNECTIONSROUND_ROBINSOURCE_IPSOURCE_IP_PORT 之一。

listeners

body

数组

监听器 ID 列表。

loadbalancers

body

数组

负载均衡器 ID 列表。

members

body

数组

成员 ID 列表。

name

body

字符串

资源的易于阅读的名称。

operating_status

body

字符串

资源的运行状态。请参阅 运行状态码

project_id

body

字符串

拥有此资源的项目的 ID。

协议

body

字符串

资源的协议。可以是 HTTPHTTPSPROXYPROXYV2SCTPTCPUDP 之一。

provisioning_status

body

字符串

资源的配置状态。请参阅 配置状态码

session_persistence

body

对象

一个 JSON 对象,指定池的会话持久性,或者 null 表示无会话持久性。请参阅 池会话持久性。默认为 null

tags

body

数组

分配给资源的简单字符串列表。

版本 2.5 新增

tls_enabled

body

布尔值

true 时,到后端成员服务器的连接将使用 TLS 加密。默认为 false

版本 2.8 新增

tls_ciphers

body

字符串

OpenSSL 格式的密码列表(冒号分隔)。请参阅 https://www.openssl.org/docs/man1.1.1/man1/ciphers.html

版本 2.15 新增

tls_container_ref

body

字符串

指向 密钥管理器服务中包含 PKCS12 格式证书/密钥包的 Secret 的引用,用于 tls_enabled 池,用于与成员服务器建立 TLS 客户端身份验证。

版本 2.8 新增

tls_versions

body

数组

TLS 协议版本列表。可用版本:SSLv3、TLSv1、TLSv1.1、TLSv1.2、TLSv1.3

版本 2.17 新增

updated_at

body

字符串

上次更新资源的 UTC 日期和时间戳。

响应示例

{
    "pool": {
        "lb_algorithm": "ROUND_ROBIN",
        "protocol": "HTTP",
        "description": "Super Round Robin Pool",
        "admin_state_up": true,
        "loadbalancers": [
            {
                "id": "607226db-27ef-4d41-ae89-f2a800e9c2db"
            }
        ],
        "created_at": "2017-05-10T18:14:44",
        "provisioning_status": "ACTIVE",
        "updated_at": "2017-05-10T23:08:12",
        "session_persistence": {
            "cookie_name": "ChocolateChip",
            "type": "APP_COOKIE"
        },
        "listeners": [
            {
                "id": "023f2e34-7806-443b-bfae-16c324569a3d"
            }
        ],
        "members": [],
        "healthmonitor_id": null,
        "project_id": "e3cd678b11784734bc366148aa37580e",
        "id": "4029d267-3983-4224-a3d0-afb3fe16a2cd",
        "operating_status": "ONLINE",
        "name": "super-pool",
        "tags": ["test_tag"],
        "tls_container_ref": "http://198.51.100.10:9311/v1/containers/4073846f-1d5e-42e1-a4cf-a7046419d0e6",
        "ca_tls_container_ref": "http://198.51.100.10:9311/v1/containers/5f0d5540-fae6-4646-85d6-8a84883807fb",
        "crl_container_ref": "http://198.51.100.10:9311/v1/containers/6faf0a01-6892-454c-aaac-650282820c0b",
        "tls_enabled": true,
        "tls_ciphers": "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256",
        "tls_versions": ["TLSv1.2", "TLSv1.3"],
        "alpn_protocols": ["http/1.1", "http/1.0"]
    }
}
GET
/v2/lbaas/pools/{pool_id}

显示池详细信息

显示池的详细信息。

如果您不是管理员用户,并且父负载均衡器不属于您的项目,则服务将返回 HTTP Forbidden (403) 响应代码。

此操作不需要请求正文。

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

401 - 未授权

由于凭据无效,访问被拒绝。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

请求

名称

入参

类型

描述

fields (可选)

查询

字符串

您希望服务器返回的字段。如果未指定 fields 查询参数,则 octavia API 将返回策略设置允许的所有属性。通过使用 fields 参数,API 将仅返回请求的属性集。 fields 参数可以指定多次。例如,如果在请求 URL 中指定 fields=id&fields=name,则仅返回 idname 属性。

pool_id

路径

uuid

要查询的池的 ID。

Curl 示例

curl -X GET -H "X-Auth-Token: <token>" http://198.51.100.10:9876/v2/lbaas/pools/24a43e68-36de-45f6-89cf-c03df583131d

响应参数

名称

入参

类型

描述

admin_state_up

body

布尔值

资源的管理员状态,即启用(true)或禁用(false)。

alpn_protocols

body

数组

ALPN 协议列表。可用协议:http/1.0、http/1.1、h2

版本 2.24 新增

ca_tls_container_ref

body

字符串

指向 密钥管理器服务中包含 PEM 格式 CA 证书包的 Secret 的引用,用于 tls_enabled 池。

版本 2.8 新增

created_at

body

字符串

资源创建的 UTC 日期和时间戳。

crl_container_ref

body

字符串

指向 密钥管理器服务中包含 PEM 格式 CA 吊销列表文件的 Secret 的引用,用于 tls_enabled 池。

description

body

字符串

资源的易于阅读的描述。

healthmonitor_id

body

uuid

关联的健康监控 ID。

id

body

uuid

池的 ID。

lb_algorithm

body

字符串

池的负载均衡算法。可以是 LEAST_CONNECTIONSROUND_ROBINSOURCE_IPSOURCE_IP_PORT 之一。

listeners

body

数组

监听器 ID 列表。

loadbalancers

body

数组

负载均衡器 ID 列表。

members

body

数组

成员 ID 列表。

name

body

字符串

资源的易于阅读的名称。

operating_status

body

字符串

资源的运行状态。请参阅 运行状态码

project_id

body

字符串

拥有此资源的项目的 ID。

协议

body

字符串

资源的协议。可以是 HTTPHTTPSPROXYPROXYV2SCTPTCPUDP 之一。

provisioning_status

body

字符串

资源的配置状态。请参阅 配置状态码

session_persistence

body

对象

一个 JSON 对象,指定池的会话持久性,或者 null 表示无会话持久性。请参阅 池会话持久性。默认为 null

tags

body

数组

分配给资源的简单字符串列表。

版本 2.5 新增

tls_enabled

body

布尔值

true 时,到后端成员服务器的连接将使用 TLS 加密。默认为 false

版本 2.8 新增

tls_ciphers

body

字符串

OpenSSL 格式的密码列表(冒号分隔)。请参阅 https://www.openssl.org/docs/man1.1.1/man1/ciphers.html

版本 2.15 新增

tls_container_ref

body

字符串

指向 密钥管理器服务中包含 PKCS12 格式证书/密钥包的 Secret 的引用,用于 tls_enabled 池,用于与成员服务器建立 TLS 客户端身份验证。

版本 2.8 新增

tls_versions

body

数组

TLS 协议版本列表。可用版本:SSLv3、TLSv1、TLSv1.1、TLSv1.2、TLSv1.3

版本 2.17 新增

updated_at

body

字符串

上次更新资源的 UTC 日期和时间戳。

响应示例

{
    "pool": {
        "lb_algorithm": "ROUND_ROBIN",
        "protocol": "HTTP",
        "description": "Super Round Robin Pool",
        "admin_state_up": true,
        "loadbalancers": [
            {
                "id": "607226db-27ef-4d41-ae89-f2a800e9c2db"
            }
        ],
        "created_at": "2017-05-10T18:14:44",
        "provisioning_status": "ACTIVE",
        "updated_at": "2017-05-10T23:08:12",
        "session_persistence": {
            "cookie_name": "ChocolateChip",
            "type": "APP_COOKIE"
        },
        "listeners": [
            {
                "id": "023f2e34-7806-443b-bfae-16c324569a3d"
            }
        ],
        "members": [],
        "healthmonitor_id": null,
        "project_id": "e3cd678b11784734bc366148aa37580e",
        "id": "4029d267-3983-4224-a3d0-afb3fe16a2cd",
        "operating_status": "ONLINE",
        "name": "super-pool",
        "tags": ["test_tag"],
        "tls_container_ref": "http://198.51.100.10:9311/v1/containers/4073846f-1d5e-42e1-a4cf-a7046419d0e6",
        "ca_tls_container_ref": "http://198.51.100.10:9311/v1/containers/5f0d5540-fae6-4646-85d6-8a84883807fb",
        "crl_container_ref": "http://198.51.100.10:9311/v1/containers/6faf0a01-6892-454c-aaac-650282820c0b",
        "tls_enabled": false,
        "tls_ciphers": "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256",
        "tls_versions": ["TLSv1.2", "TLSv1.3"],
        "alpn_protocols": ["http/1.1", "http/1.0"]
    }
}
PUT
/v2/lbaas/pools/{pool_id}

更新池

更新现有池。

如果请求有效,服务将返回 Accepted (202) 响应代码。要确认更新,请检查池的预配状态是否为 ACTIVE。如果状态为 PENDING_UPDATE,请使用 GET 操作轮询池对象以了解更改。

此操作将返回更新后的池对象,其预配状态为 ACTIVEPENDING_UPDATEERROR

成功

代码

原因

202 - Accepted

请求已接受,但处理可能需要一些时间。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

由于凭据无效,访问被拒绝。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

409 - Conflict

此资源有一个正在进行的操作,与此请求冲突。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

请求

名称

入参

类型

描述

admin_state_up (可选)

body

布尔值

资源的管理员状态,即启用(true)或禁用(false)。默认为 true

alpn_protocols (可选)

body

数组

ALPN 协议列表。可用协议:http/1.0、http/1.1、h2

版本 2.24 新增

ca_tls_container_ref (可选)

body

字符串

指向 密钥管理器服务中包含 PEM 格式 CA 证书包的 Secret 的引用,用于 tls_enabled 池。

版本 2.8 新增

crl_container_ref (可选)

body

字符串

指向 密钥管理器服务中包含 PEM 格式 CA 吊销列表文件的 Secret 的引用,用于 tls_enabled 池。

description (可选)

body

字符串

资源的易于阅读的描述。

lb_algorithm (可选)

body

字符串

池的负载均衡算法。可以是 LEAST_CONNECTIONSROUND_ROBINSOURCE_IP 之一。

name (可选)

body

字符串

资源的易于阅读的名称。

pool_id

路径

uuid

要查询的池的 ID。

session_persistence (可选)

body

对象

一个 JSON 对象,指定池的会话持久性,或者 null 表示无会话持久性。请参阅 池会话持久性。默认为 null

tags (可选)

body

数组

分配给资源的简单字符串列表。

版本 2.5 新增

tls_enabled (可选)

body

布尔值

true 时,到后端成员服务器的连接将使用 TLS 加密。默认为 false

版本 2.8 新增

tls_ciphers (可选)

body

字符串

OpenSSL 格式的密码列表(冒号分隔)。请参阅 https://www.openssl.org/docs/man1.1.1/man1/ciphers.html

版本 2.15 新增

tls_container_ref (可选)

body

字符串

指向 密钥管理器服务中包含 PKCS12 格式证书/密钥包的 Secret 的引用,用于 tls_enabled 池,用于与成员服务器建立 TLS 客户端身份验证。

版本 2.8 新增

tls_versions (可选)

body

数组

TLS 协议版本列表。可用版本:SSLv3、TLSv1、TLSv1.1、TLSv1.2、TLSv1.3

版本 2.17 新增

请求示例

{
    "pool": {
        "lb_algorithm": "LEAST_CONNECTIONS",
        "session_persistence": {
            "type": "SOURCE_IP"
        },
        "description": "Super Least Connections Pool",
        "name": "super-least-conn-pool",
        "tags": ["updated_tag"],
        "tls_container_ref": "http://198.51.100.10:9311/v1/containers/c1cd501d-3cf9-4873-a11b-a74bebcde929",
        "ca_tls_container_ref": null,
        "crl_container_ref": null,
        "tls_enabled": false,
        "tls_ciphers": "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256",
        "tls_versions": ["TLSv1.2", "TLSv1.3"],
        "alpn_protocols": ["http/1.1", "http/1.0"]
    }
}

Curl 示例

curl -X PUT -H "Content-Type: application/json" -H "X-Auth-Token: <token>" -d '{"pool":{"lb_algorithm":"LEAST_CONNECTIONS","session_persistence":{"type":"SOURCE_IP"},"description":"second description","name":"second_name","tags":["updated_tag"],"tls_container_ref":"http://198.51.100.10:9311/v1/containers/c1cd501d-3cf9-4873-a11b-a74bebcde929","ca_tls_container_ref":null,"crl_container_ref":null,"tls_enabled":false,"tls_ciphers":"ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256", "tls_versions": ["TLSv1.2", "TLSv1.3"], "alpn_protocols": ["http/1.1", "http/1.0"]}}' http://198.51.100.10:9876/v2/lbaas/pools/4029d267-3983-4224-a3d0-afb3fe16a2cd

响应参数

名称

入参

类型

描述

admin_state_up

body

布尔值

资源的管理员状态,即启用(true)或禁用(false)。

alpn_protocols

body

数组

ALPN 协议列表。可用协议:http/1.0、http/1.1、h2

版本 2.24 新增

ca_tls_container_ref

body

字符串

指向 密钥管理器服务中包含 PEM 格式 CA 证书包的 Secret 的引用,用于 tls_enabled 池。

版本 2.8 新增

created_at

body

字符串

资源创建的 UTC 日期和时间戳。

crl_container_ref

body

字符串

指向 密钥管理器服务中包含 PEM 格式 CA 吊销列表文件的 Secret 的引用,用于 tls_enabled 池。

description

body

字符串

资源的易于阅读的描述。

healthmonitor_id

body

uuid

关联的健康监控 ID。

id

body

uuid

池的 ID。

lb_algorithm

body

字符串

池的负载均衡算法。可以是 LEAST_CONNECTIONSROUND_ROBINSOURCE_IPSOURCE_IP_PORT 之一。

listeners

body

数组

监听器 ID 列表。

loadbalancers

body

数组

负载均衡器 ID 列表。

members

body

数组

成员 ID 列表。

name

body

字符串

资源的易于阅读的名称。

operating_status

body

字符串

资源的运行状态。请参阅 运行状态码

project_id

body

字符串

拥有此资源的项目的 ID。

协议

body

字符串

资源的协议。可以是 HTTPHTTPSPROXYPROXYV2SCTPTCPUDP 之一。

provisioning_status

body

字符串

资源的配置状态。请参阅 配置状态码

session_persistence

body

对象

一个 JSON 对象,指定池的会话持久性,或者 null 表示无会话持久性。请参阅 池会话持久性。默认为 null

tags

body

数组

分配给资源的简单字符串列表。

版本 2.5 新增

tls_enabled

body

布尔值

true 时,到后端成员服务器的连接将使用 TLS 加密。默认为 false

版本 2.8 新增

tls_ciphers

body

字符串

OpenSSL 格式的密码列表(冒号分隔)。请参阅 https://www.openssl.org/docs/man1.1.1/man1/ciphers.html

版本 2.15 新增

tls_container_ref

body

字符串

指向 密钥管理器服务中包含 PKCS12 格式证书/密钥包的 Secret 的引用,用于 tls_enabled 池,用于与成员服务器建立 TLS 客户端身份验证。

版本 2.8 新增

tls_versions

body

数组

TLS 协议版本列表。可用版本:SSLv3、TLSv1、TLSv1.1、TLSv1.2、TLSv1.3

版本 2.17 新增

updated_at

body

字符串

上次更新资源的 UTC 日期和时间戳。

响应示例

{
    "pool": {
        "lb_algorithm": "LEAST_CONNECTIONS",
        "protocol": "HTTP",
        "description": "Super Least Connections Pool",
        "admin_state_up": true,
        "loadbalancers": [
            {
                "id": "607226db-27ef-4d41-ae89-f2a800e9c2db"
            }
        ],
        "created_at": "2017-05-10T18:14:44",
        "provisioning_status": "PENDING_UPDATE",
        "updated_at": "2017-05-10T23:08:12",
        "session_persistence": {
            "cookie_name": null,
            "type": "SOURCE_IP"
        },
        "listeners": [
            {
                "id": "023f2e34-7806-443b-bfae-16c324569a3d"
            }
        ],
        "members": [],
        "healthmonitor_id": null,
        "project_id": "e3cd678b11784734bc366148aa37580e",
        "id": "4029d267-3983-4224-a3d0-afb3fe16a2cd",
        "operating_status": "ONLINE",
        "name": "super-least-conn-pool",
        "tags": ["updated_tag"],
        "tls_container_ref": "http://198.51.100.10:9311/v1/containers/c1cd501d-3cf9-4873-a11b-a74bebcde929",
        "ca_tls_container_ref": null,
        "crl_container_ref": null,
        "tls_enabled": false,
        "tls_ciphers": "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256",
        "tls_versions": ["TLSv1.2", "TLSv1.3"],
        "alpn_protocols": ["http/1.1", "http/1.0"]
    }
}
DELETE
/v2/lbaas/pools/{pool_id}

移除池

从负载均衡器中移除池及其关联配置。

API 将立即清除任何和所有配置数据,具体取决于配置设置。您无法恢复它。

成功

代码

原因

204 - No Content

请求已满足,但服务未返回任何内容。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

由于凭据无效,访问被拒绝。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

409 - Conflict

此资源有一个正在进行的操作,与此请求冲突。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

请求

名称

入参

类型

描述

pool_id

路径

uuid

要查询的池的 ID。

Curl 示例

curl -X DELETE -H "X-Auth-Token: <token>" http://198.51.100.10:9876/v2/lbaas/pools/4029d267-3983-4224-a3d0-afb3fe16a2cd

响应

成功的 DELETE 请求没有响应正文内容。

成员

GET
/v2/lbaas/pools/{pool_id}/members

列出成员

列出项目所有成员。

使用 fields 查询参数来控制响应体中返回的字段。此外,您还可以使用查询字符串参数过滤结果。有关信息,请参阅 过滤和列选择

管理员用户可以指定一个与自己的不同的项目 ID 来列出其他项目的成员。

列表可能为空。

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

由于凭据无效,访问被拒绝。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

请求

名称

入参

类型

描述

fields (可选)

查询

字符串

您希望服务器返回的字段。如果未指定 fields 查询参数,则 octavia API 将返回策略设置允许的所有属性。通过使用 fields 参数,API 将仅返回请求的属性集。 fields 参数可以指定多次。例如,如果在请求 URL 中指定 fields=id&fields=name,则仅返回 idname 属性。

pool_id

路径

uuid

要查询的池的 ID。

project_id (可选)

查询

字符串

要查询的项目 ID。

Curl 示例

curl -X GET -H "X-Auth-Token: <token>" http://198.51.100.10:9876/v2/lbaas/pools/24a43e68-36de-45f6-89cf-c03df583131d/members?project_id=e3cd678b11784734bc366148aa37580e

响应参数

名称

入参

类型

描述

address

body

字符串

后端成员服务器的 IP 地址。

admin_state_up

body

布尔值

资源的管理员状态,即启用(true)或禁用(false)。

备份中

body

布尔值

成员是否为备份?只有当所有非备份成员都处于宕机状态时,备份成员才会接收流量。

新增于版本 2.1

created_at

body

字符串

资源创建的 UTC 日期和时间戳。

id

body

uuid

成员的 ID。

monitor_address

body

字符串

用于健康监控后端成员的备用 IP 地址。默认为 null,表示监控成员的 address

monitor_port

body

整数

用于健康监控后端成员的备用协议端口。默认为 null,表示监控成员的 protocol_port

name

body

字符串

资源的易于阅读的名称。

operating_status

body

字符串

资源的运行状态。请参阅 运行状态码

project_id

body

字符串

拥有此资源的项目的 ID。

protocol_port

body

整数

后端成员服务器正在侦听的协议端口号。

provisioning_status

body

字符串

资源的配置状态。请参阅 配置状态码

subnet_id

body

uuid

成员服务可访问的子网 ID。

tags

body

数组

分配给资源的简单字符串列表。

版本 2.5 新增

updated_at

body

字符串

上次更新资源的 UTC 日期和时间戳。

weight

body

整数

成员的权重决定了其与其他池成员相比服务的请求或连接的比例。例如,权重为 10 的成员接收的请求是权重为 2 的成员的五倍。值为 0 表示该成员不接收新连接,但继续处理现有连接。有效值范围为 0256。默认为 1

vnic_type

body

字符串

用于成员端口的成员 vNIC 类型。可以是 normaldirect 之一。

版本 2.29 新增

响应示例

{
    "members": [
        {
            "monitor_port": 8080,
            "project_id": "e3cd678b11784734bc366148aa37580e",
            "name": "web-server-1",
            "weight": 20,
            "backup": false,
            "admin_state_up": true,
            "subnet_id": "bbb35f84-35cc-4b2f-84c2-a6a29bba68aa",
            "created_at": "2017-05-11T17:21:34",
            "provisioning_status": "ACTIVE",
            "monitor_address": null,
            "updated_at": "2017-05-11T17:21:37",
            "address": "192.0.2.16",
            "protocol_port": 80,
            "id": "957a1ace-1bd2-449b-8455-820b6e4b63f3",
            "operating_status": "NO_MONITOR",
            "tags": ["test_tag"],
            "vnic_type": "normal"
        }
    ]
}
POST
/v2/lbaas/pools/{pool_id}/members

创建成员

此操作通过使用您在请求对象中定义的配置来预配成员并将其添加到池中。API 验证请求并开始预配过程后,将返回一个包含唯一 ID 的响应对象。

在响应中,成员的 provisioning statusACTIVEPENDING_CREATEERROR

如果状态为 PENDING_CREATE,请发出 GET 请求 /v2/lbaas/pools/{pool_id}/members/{member_id} 来查看预配操作的进度。当成员状态更改为 ACTIVE 时,表示成员已成功预配并可进行进一步配置。

如果 API 由于数据不足或数据无效而无法满足请求,则服务将返回 HTTP Bad Request (400) 响应代码,并在响应体中提供失败信息。验证错误要求您纠正错误并重新提交请求。

最低限度,您必须指定以下成员属性

  • address。后端成员接收来自负载均衡器流量的 IP 地址。

  • protocol_port 后端成员侦听流量的端口。

省略某些属性时,它们将接收默认值

  • admin_state_up。默认为 true

  • backup。默认为 false

  • weight。默认为 1

如果省略 subnet_id 参数,则将使用父负载均衡器的 vip_subnet_id 作为成员子网 UUID。

成员的 address 不一定需要是 subnet_id 子网的成员。成员可以通过默认路由或使用子网上定义的 host_routes 从指定的子网路由。

管理员用户可以指定一个与自己的不同的项目 ID 来为其他项目创建成员。

monitor_address 和/或 monitor_port 可用于让健康监视器(如果已为池配置)在执行对成员的健康检查时连接到备用 IP 地址和端口。

要创建成员,负载均衡器必须具有 ACTIVE 预配状态。

成功

代码

原因

201 - 已创建

请求已完成,并创建了新资源。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

由于凭据无效,访问被拒绝。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

409 - Conflict

此资源有一个正在进行的操作,与此请求冲突。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

503 - 服务不可用

服务现在无法处理请求。

请求

名称

入参

类型

描述

admin_state_up (可选)

body

布尔值

资源的管理员状态,即启用(true)或禁用(false)。默认为 true

address

body

字符串

资源的 IP 地址。

backup (可选)

body

布尔值

成员是否为备份?只有当所有非备份成员都处于宕机状态时,备份成员才会接收流量。

新增于版本 2.1

monitor_address (可选)

body

字符串

用于健康监控后端成员的备用 IP 地址。默认为 null,表示监控成员的 address

monitor_port (可选)

body

整数

用于健康监控后端成员的备用协议端口。默认为 null,表示监控成员的 protocol_port

name (可选)

body

字符串

资源的易于阅读的名称。

pool_id

路径

uuid

要查询的池的 ID。

project_id (可选)

body

字符串

拥有此资源的项目的 ID。(已弃用)

protocol_port

body

整数

资源的协议端口号。

request_sriov (可选)

body

布尔值

请求为成员网络端口使用 SR-IOV VF。默认为 false

版本 2.29 新增

subnet_id (可选)

body

uuid

成员服务可访问的子网 ID。

tags (可选)

body

数组

分配给资源的简单字符串列表。

版本 2.5 新增

weight (可选)

body

整数

成员的权重决定了其与其他池成员相比服务的请求或连接的比例。例如,权重为 10 的成员接收的请求是权重为 2 的成员的五倍。值为 0 表示该成员不接收新连接,但继续处理现有连接。有效值范围为 0256。默认为 1

请求示例

{
    "member": {
        "name": "web-server-1",
        "weight": "20",
        "admin_state_up": true,
        "subnet_id": "bbb35f84-35cc-4b2f-84c2-a6a29bba68aa",
        "address": "192.0.2.16",
        "protocol_port": "80",
        "monitor_port": 8080,
        "backup": false,
        "tags": ["test_tag"]
    }
}

Curl 示例

curl -X POST -H "Content-Type: application/json" -H "X-Auth-Token: <token>" -d '{"member":{"name":"web-server-1","weight":"20","admin_state_up":true,"subnet_id":"bbb35f84-35cc-4b2f-84c2-a6a29bba68aa","address":"192.0.2.16","protocol_port":"80","monitor_port":8080,"backup":false,"tags":["test_tag"]}}' http://198.51.100.10:9876/v2/lbaas/pools/4029d267-3983-4224-a3d0-afb3fe16a2cd/members

响应参数

名称

入参

类型

描述

address

body

字符串

后端成员服务器的 IP 地址。

admin_state_up

body

布尔值

资源的管理员状态,即启用(true)或禁用(false)。

备份中

body

布尔值

成员是否为备份?只有当所有非备份成员都处于宕机状态时,备份成员才会接收流量。

新增于版本 2.1

created_at

body

字符串

资源创建的 UTC 日期和时间戳。

id

body

uuid

成员的 ID。

monitor_address

body

字符串

用于健康监控后端成员的备用 IP 地址。默认为 null,表示监控成员的 address

monitor_port

body

整数

用于健康监控后端成员的备用协议端口。默认为 null,表示监控成员的 protocol_port

name

body

字符串

资源的易于阅读的名称。

operating_status

body

字符串

资源的运行状态。请参阅 运行状态码

project_id

body

字符串

拥有此资源的项目的 ID。

protocol_port

body

整数

后端成员服务器正在侦听的协议端口号。

provisioning_status

body

字符串

资源的配置状态。请参阅 配置状态码

subnet_id

body

uuid

成员服务可访问的子网 ID。

tags

body

数组

分配给资源的简单字符串列表。

版本 2.5 新增

updated_at

body

字符串

上次更新资源的 UTC 日期和时间戳。

weight

body

整数

成员的权重决定了其与其他池成员相比服务的请求或连接的比例。例如,权重为 10 的成员接收的请求是权重为 2 的成员的五倍。值为 0 表示该成员不接收新连接,但继续处理现有连接。有效值范围为 0256。默认为 1

vnic_type

body

字符串

用于成员端口的成员 vNIC 类型。可以是 normaldirect 之一。

版本 2.29 新增

响应示例

{
    "member": {
        "monitor_port": 8080,
        "project_id": "e3cd678b11784734bc366148aa37580e",
        "name": "web-server-1",
        "weight": 20,
        "backup": false,
        "admin_state_up": true,
        "subnet_id": "bbb35f84-35cc-4b2f-84c2-a6a29bba68aa",
        "created_at": "2017-05-11T17:21:34",
        "provisioning_status": "ACTIVE",
        "monitor_address": null,
        "updated_at": "2017-05-11T17:21:37",
        "address": "192.0.2.16",
        "protocol_port": 80,
        "id": "957a1ace-1bd2-449b-8455-820b6e4b63f3",
        "operating_status": "NO_MONITOR",
        "tags": ["test_tag"],
        "vnic_type": "normal"
    }
}
GET
/v2/lbaas/pools/{pool_id}/members/{member-id}

显示成员详细信息

显示池成员的详细信息。

如果您不是管理员用户,并且父负载均衡器不属于您的项目,则服务将返回 HTTP Forbidden (403) 响应代码。

此操作不需要请求正文。

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

401 - 未授权

由于凭据无效,访问被拒绝。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

请求

名称

入参

类型

描述

fields (可选)

查询

字符串

您希望服务器返回的字段。如果未指定 fields 查询参数,则 octavia API 将返回策略设置允许的所有属性。通过使用 fields 参数,API 将仅返回请求的属性集。 fields 参数可以指定多次。例如,如果在请求 URL 中指定 fields=id&fields=name,则仅返回 idname 属性。

member_id

路径

uuid

要查询的成员的 ID。

pool_id

路径

uuid

要查询的池的 ID。

Curl 示例

curl -X GET -H "X-Auth-Token: <token>" http://198.51.100.10:9876/v2/lbaas/pools/24a43e68-36de-45f6-89cf-c03df583131d/members/957a1ace-1bd2-449b-8455-820b6e4b63f3

响应参数

名称

入参

类型

描述

address

body

字符串

后端成员服务器的 IP 地址。

admin_state_up

body

布尔值

资源的管理员状态,即启用(true)或禁用(false)。

备份中

body

布尔值

成员是否为备份?只有当所有非备份成员都处于宕机状态时,备份成员才会接收流量。

新增于版本 2.1

created_at

body

字符串

资源创建的 UTC 日期和时间戳。

id

body

uuid

成员的 ID。

monitor_address

body

字符串

用于健康监控后端成员的备用 IP 地址。默认为 null,表示监控成员的 address

monitor_port

body

整数

用于健康监控后端成员的备用协议端口。默认为 null,表示监控成员的 protocol_port

name

body

字符串

资源的易于阅读的名称。

operating_status

body

字符串

资源的运行状态。请参阅 运行状态码

project_id

body

字符串

拥有此资源的项目的 ID。

protocol_port

body

整数

后端成员服务器正在侦听的协议端口号。

provisioning_status

body

字符串

资源的配置状态。请参阅 配置状态码

subnet_id

body

uuid

成员服务可访问的子网 ID。

tags

body

数组

分配给资源的简单字符串列表。

版本 2.5 新增

updated_at

body

字符串

上次更新资源的 UTC 日期和时间戳。

weight

body

整数

成员的权重决定了其与其他池成员相比服务的请求或连接的比例。例如,权重为 10 的成员接收的请求是权重为 2 的成员的五倍。值为 0 表示该成员不接收新连接,但继续处理现有连接。有效值范围为 0256。默认为 1

vnic_type

body

字符串

用于成员端口的成员 vNIC 类型。可以是 normaldirect 之一。

版本 2.29 新增

响应示例

{
    "member": {
        "monitor_port": 8080,
        "project_id": "e3cd678b11784734bc366148aa37580e",
        "name": "web-server-1",
        "weight": 20,
        "backup": false,
        "admin_state_up": true,
        "subnet_id": "bbb35f84-35cc-4b2f-84c2-a6a29bba68aa",
        "created_at": "2017-05-11T17:21:34",
        "provisioning_status": "ACTIVE",
        "monitor_address": null,
        "updated_at": "2017-05-11T17:21:37",
        "address": "192.0.2.16",
        "protocol_port": 80,
        "id": "957a1ace-1bd2-449b-8455-820b6e4b63f3",
        "operating_status": "NO_MONITOR",
        "tags": ["test_tag"],
        "vnic_type": "normal"
    }
}
PUT
/v2/lbaas/pools/{pool_id}/members/{member_id}

更新成员

更新现有成员。

如果请求有效,服务将返回 Accepted (202) 响应代码。要确认更新,请检查成员的预配状态是否为 ACTIVE。如果状态为 PENDING_UPDATE,请使用 GET 操作轮询成员对象以了解更改。

将成员权重设置为 0 意味着该成员将不接收新请求,但会完成任何现有连接。这会将后端成员的活动连接“耗尽”。

此操作将返回更新后的成员对象,其预配状态为 ACTIVEPENDING_UPDATEERROR

成功

代码

原因

202 - Accepted

请求已接受,但处理可能需要一些时间。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

由于凭据无效,访问被拒绝。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

409 - Conflict

此资源有一个正在进行的操作,与此请求冲突。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

请求

名称

入参

类型

描述

admin_state_up (可选)

body

布尔值

资源的管理员状态,即启用(true)或禁用(false)。默认为 true

backup (可选)

body

布尔值

成员是否为备份?只有当所有非备份成员都处于宕机状态时,备份成员才会接收流量。

新增于版本 2.1

member_id

路径

uuid

要查询的成员的 ID。

monitor_address (可选)

body

字符串

用于健康监控后端成员的备用 IP 地址。默认为 null,表示监控成员的 address

monitor_port (可选)

body

整数

用于健康监控后端成员的备用协议端口。默认为 null,表示监控成员的 protocol_port

name (可选)

body

字符串

资源的易于阅读的名称。

pool_id

路径

uuid

要查询的池的 ID。

tags (可选)

body

数组

分配给资源的简单字符串列表。

版本 2.5 新增

weight (可选)

body

整数

成员的权重决定了其与其他池成员相比服务的请求或连接的比例。例如,权重为 10 的成员接收的请求是权重为 2 的成员的五倍。值为 0 表示该成员不接收新连接,但继续处理现有连接。有效值范围为 0256。默认为 1

请求示例

{
    "member": {
        "name": "web-server-1-2",
        "weight": "0",
        "admin_state_up": "true",
        "monitor_address": "192.0.2.40",
        "monitor_port": 8888,
        "backup": false,
        "tags": ["updated_tag"]
    }
}

Curl 示例

curl -X PUT -H "Content-Type: application/json" -H "X-Auth-Token: <token>" -d '{"member":{"name":"web-server-1-2","weight":"0","admin_state_up":"true","monitor_address":"192.0.2.40","monitor_port":8888,"backup":false,"tags":["updated_tag"]}}' http://198.51.100.10:9876/v2/lbaas/pools/4029d267-3983-4224-a3d0-afb3fe16a2cd/members/957a1ace-1bd2-449b-8455-820b6e4b63f3

响应参数

名称

入参

类型

描述

address

body

字符串

后端成员服务器的 IP 地址。

admin_state_up

body

布尔值

资源的管理员状态,即启用(true)或禁用(false)。

备份中

body

布尔值

成员是否为备份?只有当所有非备份成员都处于宕机状态时,备份成员才会接收流量。

新增于版本 2.1

created_at

body

字符串

资源创建的 UTC 日期和时间戳。

id

body

uuid

成员的 ID。

monitor_address

body

字符串

用于健康监控后端成员的备用 IP 地址。默认为 null,表示监控成员的 address

monitor_port

body

整数

用于健康监控后端成员的备用协议端口。默认为 null,表示监控成员的 protocol_port

name

body

字符串

资源的易于阅读的名称。

operating_status

body

字符串

资源的运行状态。请参阅 运行状态码

project_id

body

字符串

拥有此资源的项目的 ID。

protocol_port

body

整数

后端成员服务器正在侦听的协议端口号。

provisioning_status

body

字符串

资源的配置状态。请参阅 配置状态码

subnet_id

body

uuid

成员服务可访问的子网 ID。

tags

body

数组

分配给资源的简单字符串列表。

版本 2.5 新增

updated_at

body

字符串

上次更新资源的 UTC 日期和时间戳。

weight

body

整数

成员的权重决定了其与其他池成员相比服务的请求或连接的比例。例如,权重为 10 的成员接收的请求是权重为 2 的成员的五倍。值为 0 表示该成员不接收新连接,但继续处理现有连接。有效值范围为 0256。默认为 1

vnic_type

body

字符串

用于成员端口的成员 vNIC 类型。可以是 normaldirect 之一。

版本 2.29 新增

响应示例

{
    "member": {
        "monitor_port": 8080,
        "project_id": "e3cd678b11784734bc366148aa37580e",
        "name": "web-server-1",
        "weight": 20,
        "backup": false,
        "admin_state_up": true,
        "subnet_id": "bbb35f84-35cc-4b2f-84c2-a6a29bba68aa",
        "created_at": "2017-05-11T17:21:34",
        "provisioning_status": "PENDING_UPDATE",
        "monitor_address": null,
        "updated_at": "2017-05-11T17:21:37",
        "address": "192.0.2.16",
        "protocol_port": 80,
        "id": "957a1ace-1bd2-449b-8455-820b6e4b63f3",
        "operating_status": "NO_MONITOR",
        "tags": ["updated_tag"],
        "vnic_type": "normal"
    }
}
PUT
/v2/lbaas/pools/{pool_id}/members

批量更新成员

一次 API 调用设置池成员的状态。这可能包括创建新成员、删除旧成员和更新现有成员。现有成员根据地址/端口组合进行匹配。

例如,假设一个池当前有两个成员。这些成员具有以下地址/端口组合:“192.0.2.15:80”和“192.0.2.16:80”。现在假设发出一个 PUT 请求,其中包含以下地址/端口组合的成员:“192.0.2.16:80”和“192.0.2.17:80”。

成员“192.0.2.15:80”将被删除,因为它不在请求中。

成员“192.0.2.16:80”将被更新为匹配该成员的请求数据,因为它已被匹配。

成员“192.0.2.17:80”将被创建,因为不存在这样的成员。

可选参数 additive_only 如果设置为 true,将跳过对列表中缺失成员的删除。如果在上述示例中设置了此参数,成员“192.0.2.15:80”将保留在池中。

如果请求有效,服务将返回 Accepted (202) 响应代码。要确认更新,请检查新成员或更新成员的预配状态是否为 ACTIVE,以及未指定的成员是否已正确删除。如果状态为 PENDING_UPDATEPENDING_DELETE,请使用 GET 轮询成员对象以了解更改。

成功

代码

原因

202 - Accepted

请求已接受,但处理可能需要一些时间。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

由于凭据无效,访问被拒绝。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

409 - Conflict

此资源有一个正在进行的操作,与此请求冲突。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

503 - 服务不可用

服务现在无法处理请求。

请求

名称

入参

类型

描述

additive_only (可选)

查询

布尔值

如果为 true,在批量操作期间不会删除任何成员。

版本 2.11 中新增

admin_state_up (可选)

body

布尔值

资源的管理员状态,即启用(true)或禁用(false)。默认为 true

address

body

字符串

资源的 IP 地址。

backup (可选)

body

布尔值

成员是否为备份?只有当所有非备份成员都处于宕机状态时,备份成员才会接收流量。

新增于版本 2.1

monitor_address (可选)

body

字符串

用于健康监控后端成员的备用 IP 地址。默认为 null,表示监控成员的 address

monitor_port (可选)

body

整数

用于健康监控后端成员的备用协议端口。默认为 null,表示监控成员的 protocol_port

name (可选)

body

字符串

资源的易于阅读的名称。

pool_id

路径

uuid

要查询的池的 ID。

project_id (可选)

body

字符串

拥有此资源的项目的 ID。(已弃用)

protocol_port

body

整数

资源的协议端口号。

request_sriov (可选)

body

布尔值

请求为成员网络端口使用 SR-IOV VF。默认为 false

版本 2.29 新增

subnet_id (可选)

body

uuid

成员服务可访问的子网 ID。

tags (可选)

body

数组

分配给资源的简单字符串列表。

版本 2.5 新增

weight (可选)

body

整数

成员的权重决定了其与其他池成员相比服务的请求或连接的比例。例如,权重为 10 的成员接收的请求是权重为 2 的成员的五倍。值为 0 表示该成员不接收新连接,但继续处理现有连接。有效值范围为 0256。默认为 1

请求示例

{
    "members": [
        {
            "name": "web-server-1",
            "weight": 20,
            "admin_state_up": true,
            "subnet_id": "bbb35f84-35cc-4b2f-84c2-a6a29bba68aa",
            "address": "192.0.2.16",
            "protocol_port": 80,
            "monitor_port": 8080,
            "tags": ["updated_tag"]
        },
        {
            "name": "web-server-2",
            "weight": 10,
            "admin_state_up": true,
            "subnet_id": "bbb35f84-35cc-4b2f-84c2-a6a29bba68aa",
            "address": "192.0.2.17",
            "protocol_port": 80,
            "monitor_port": 8080,
            "tags": ["updated_tag"]
        }
    ]
}

Curl 示例

curl -X PUT -H "Content-Type: application/json" -H "X-Auth-Token: <token>" -d '{"members":[{"name":"web-server-1","weight":"20","admin_state_up":true,"subnet_id":"bbb35f84-35cc-4b2f-84c2-a6a29bba68aa","address":"192.0.2.16","protocol_port":"80","monitor_port":8080,"tags":["updated_tag"]},{"name":"web-server-2","weight":"10","admin_state_up":true,"subnet_id":"bbb35f84-35cc-4b2f-84c2-a6a29bba68aa","address":"192.0.2.17","protocol_port":"80","monitor_port":8080,"tags":["updated_tag"]}]}' http://198.51.100.10:9876/v2/lbaas/pools/4029d267-3983-4224-a3d0-afb3fe16a2cd/members

响应

成功的 PUT 请求响应没有正文内容。

DELETE
/v2/lbaas/pools/{pool_id}/members/{member_id}

移除成员

从池中移除成员及其关联配置。

API 将立即清除任何和所有配置数据,具体取决于配置设置。您无法恢复它。

成功

代码

原因

204 - No Content

请求已满足,但服务未返回任何内容。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

由于凭据无效,访问被拒绝。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

409 - Conflict

此资源有一个正在进行的操作,与此请求冲突。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

请求

名称

入参

类型

描述

member_id

路径

uuid

要查询的成员的 ID。

pool_id

路径

uuid

要查询的池的 ID。

Curl 示例

curl -X DELETE -H "X-Auth-Token: <token>" http://198.51.100.10:9876/v2/lbaas/pools/4029d267-3983-4224-a3d0-afb3fe16a2cd/members/957a1ace-1bd2-449b-8455-820b6e4b63f3

响应

成功的 DELETE 请求没有响应正文内容。

健康监视器

GET
/v2/lbaas/healthmonitors

列出健康监视器

列出项目所有健康监视器。

使用 fields 查询参数来控制响应体中返回的字段。此外,您还可以使用查询字符串参数过滤结果。有关信息,请参阅 过滤和列选择

管理员用户可以指定一个与自己的不同的项目 ID 来列出其他项目的健康监视器。

列表可能为空。

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

由于凭据无效,访问被拒绝。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

请求

名称

入参

类型

描述

fields (可选)

查询

字符串

您希望服务器返回的字段。如果未指定 fields 查询参数,则 octavia API 将返回策略设置允许的所有属性。通过使用 fields 参数,API 将仅返回请求的属性集。 fields 参数可以指定多次。例如,如果在请求 URL 中指定 fields=id&fields=name,则仅返回 idname 属性。

project_id (可选)

查询

字符串

要查询的项目 ID。

Curl 示例

curl -X GET -H "X-Auth-Token: <token>" http://198.51.100.10:9876/v2/lbaas/healthmonitors?project_id=e3cd678b11784734bc366148aa37580e

响应参数

名称

入参

类型

描述

admin_state_up

body

布尔值

资源的管理员状态,即启用(true)或禁用(false)。

created_at

body

字符串

资源创建的 UTC 日期和时间戳。

delay

body

整数

向成员发送探测的间隔时间,以秒为单位。

domain_name

body

字符串

域名,将被注入到发往后端服务器的 HTTP Host Header 中,用于 HTTP 健康检查。

版本 2.10 中新增

expected_codes

body

字符串

成员响应中用于声明其健康的预期 HTTP 状态码列表。指定以下值之一

  • 单个值,例如 200

  • 列表,例如 200, 202

  • 范围,例如 200-204

http_method

body

字符串

健康监视器用于请求的 HTTP 方法。可以是 CONNECTDELETEGETHEADOPTIONSPATCHPOSTPUTTRACE 之一。

http_version

body

float

HTTP 版本。可以是 1.01.1。默认为 1.0

版本 2.10 中新增

id

body

uuid

关联的健康监控 ID。

max_retries

body

整数

在将成员的 operating status 更改为 ONLINE 之前的成功检查次数。有效值范围为 110

max_retries_down

body

整数

在将成员的 operating status 更改为 ERROR 之前的允许检查失败次数。有效值范围为 110

name

body

字符串

资源的易于阅读的名称。

operating_status

body

字符串

资源的运行状态。请参阅 运行状态码

pool_id

body

uuid

池的 ID。

project_id

body

字符串

拥有此资源的项目的 ID。

provisioning_status

body

字符串

资源的配置状态。请参阅 配置状态码

tags

body

数组

分配给资源的简单字符串列表。

版本 2.5 新增

timeout

body

整数

监视器在超时前等待连接的最大时间(以秒为单位)。此值必须小于 delay 值。

type

body

字符串

健康监视器的类型。可以是 HTTPHTTPSPINGSCTPTCPTLS-HELLOUDP-CONNECT 之一。

updated_at

body

字符串

上次更新资源的 UTC 日期和时间戳。

url_path

body

字符串

监视器用于测试后端成员健康状况的请求的 HTTP URL 路径。必须是以斜杠(/)开头的字符串。

响应示例

{
    "healthmonitors": [
        {
            "project_id": "e3cd678b11784734bc366148aa37580e",
            "name": "super-pool-health-monitor",
            "admin_state_up": true,
            "pools": [
                {
                    "id": "4029d267-3983-4224-a3d0-afb3fe16a2cd"
                }
            ],
            "created_at": "2017-05-11T23:53:47",
            "provisioning_status": "ACTIVE",
            "updated_at": "2017-05-11T23:53:47",
            "delay": 10,
            "expected_codes": "200",
            "max_retries": 1,
            "http_method": "GET",
            "timeout": 5,
            "max_retries_down": 3,
            "url_path": "/",
            "type": "HTTP",
            "id": "8ed3c5ac-6efa-420c-bedb-99ba14e58db5",
            "operating_status": "ONLINE",
            "tags": ["test_tag"],
            "http_version": 1.0,
            "domain_name": null
        }
    ]
}
POST
/v2/lbaas/healthmonitors

创建健康监视器

在池上创建健康监视器。

健康监视器定义负载均衡器如何监视后端服务器以确定它们是否可用以服务请求。

此操作通过使用您在请求对象中定义的配置来预配新的健康监视器。API 验证请求并开始预配过程后,API 将返回一个包含唯一 ID 和健康监视器预配状态的响应对象。

在响应中,健康监视器的 provisioning statusACTIVEPENDING_CREATEERROR

如果状态为 PENDING_CREATE,请发出 GET 请求 /v2/lbaas/healthmonitors/{healthmonitor_id} 来查看预配操作的进度。当健康监视器状态更改为 ACTIVE 时,表示健康监视器已成功预配并可进行进一步配置。

如果 API 由于数据不足或数据无效而无法满足请求,则服务将返回 HTTP Bad Request (400) 响应代码,并在响应体中提供失败信息。验证错误要求您纠正错误并重新提交请求。

指定 project_id 已弃用。健康监视器将继承父负载均衡器的 project_id

最低限度,您必须指定以下健康监视器属性

  • delay 健康检查之间的间隔(以秒为单位)。

  • max_retries 在将成员的运行状态更改为 ONLINE 之前的成功检查次数。

  • pool_id 要监视的池。

  • timeout 健康检查超时的等待时间(以秒为单位)。

  • type 健康监视器的类型。可以是 HTTPHTTPSPINGSCTPTCPTLS-HELLOUDP-CONNECT 之一。

省略某些属性时,它们将接收默认值

  • admin_state_up 默认为 true

  • expected_codes 从成功的健康检查中预期的 HTTP 状态码。默认为 200

  • http_method 默认为 GET

  • http_version 默认为 1.0

  • max_retries_down 默认为 3

  • url_path 默认为 /

要创建健康监视器,父负载均衡器必须具有 ACTIVE 预配状态。

成功

代码

原因

201 - 已创建

请求已完成,并创建了新资源。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

由于凭据无效,访问被拒绝。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

409 - Conflict

此资源有一个正在进行的操作,与此请求冲突。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

503 - 服务不可用

服务现在无法处理请求。

请求

名称

入参

类型

描述

admin_state_up (可选)

body

布尔值

资源的管理员状态,即启用(true)或禁用(false)。默认为 true

delay

body

整数

向成员发送探测的间隔时间,以秒为单位。

domain_name (可选)

body

字符串

域名,将被注入到发往后端服务器的 HTTP Host Header 中,用于 HTTP 健康检查。

版本 2.10 中新增

expected_codes (可选)

body

字符串

成员响应中用于声明其健康的预期 HTTP 状态码列表。指定以下值之一

  • 单个值,例如 200

  • 列表,例如 200, 202

  • 范围,例如 200-204

默认为 200。

http_method (可选)

body

字符串

健康监视器用于请求的 HTTP 方法。可以是 CONNECTDELETEGETHEADOPTIONSPATCHPOSTPUTTRACE 之一。默认为 GET

http_version (可选)

body

float

HTTP 版本。可以是 1.01.1。默认为 1.0

版本 2.10 中新增

name (可选)

body

字符串

资源的易于阅读的名称。

max_retries

body

整数

在将成员的 operating status 更改为 ONLINE 之前的成功检查次数。有效值范围为 110

max_retries_down (可选)

body

整数

在将成员的 operating status 更改为 ERROR 之前的允许检查失败次数。有效值范围为 110。默认为 3

pool_id

body

uuid

池的 ID。

project_id (可选)

body

字符串

拥有此资源的项目的 ID。(已弃用)

tags (可选)

body

数组

分配给资源的简单字符串列表。

版本 2.5 新增

timeout

body

整数

监视器在超时前等待连接的最大时间(以秒为单位)。此值必须小于 delay 值。

type

body

字符串

健康监视器的类型。可以是 HTTPHTTPSPINGSCTPTCPTLS-HELLOUDP-CONNECT 之一。

url_path (可选)

body

字符串

监视器用于测试后端成员健康状况的请求的 HTTP URL 路径。必须是以斜杠(/)开头的字符串。默认 URL 路径为 /

请求示例

{
    "healthmonitor": {
        "name": "super-pool-health-monitor",
        "admin_state_up": true,
        "pool_id": "4029d267-3983-4224-a3d0-afb3fe16a2cd",
        "delay": "10",
        "expected_codes": "200",
        "max_retries": "1",
        "http_method": "GET",
        "timeout": "5",
        "url_path": "/",
        "type": "HTTP",
        "max_retries_down": 3,
        "tags": ["test_tag"],
        "http_version": 1.1,
        "domain_name": "testlab.com"
    }
}

Curl 示例

curl -X POST -H "Content-Type: application/json" -H "X-Auth-Token: <token>" -d '{"healthmonitor":{"name":"super-pool-health-monitor","admin_state_up":true,"pool_id":"4029d267-3983-4224-a3d0-afb3fe16a2cd","delay":"10","expected_codes":"200","max_retries":"1","http_method":"GET","timeout":"5","url_path":"/","type":"HTTP","max_retries_down":3,"tags":["test_tag"],"http_version":1.1,"domain_name":"testlab.com"}}' http://198.51.100.10:9876/v2/lbaas/healthmonitors

响应参数

名称

入参

类型

描述

admin_state_up

body

布尔值

资源的管理员状态,即启用(true)或禁用(false)。

created_at

body

字符串

资源创建的 UTC 日期和时间戳。

delay

body

整数

向成员发送探测的间隔时间,以秒为单位。

domain_name

body

字符串

域名,将被注入到发往后端服务器的 HTTP Host Header 中,用于 HTTP 健康检查。

版本 2.10 中新增

expected_codes

body

字符串

成员响应中用于声明其健康的预期 HTTP 状态码列表。指定以下值之一

  • 单个值,例如 200

  • 列表,例如 200, 202

  • 范围,例如 200-204

http_method

body

字符串

健康监视器用于请求的 HTTP 方法。可以是 CONNECTDELETEGETHEADOPTIONSPATCHPOSTPUTTRACE 之一。

http_version

body

float

HTTP 版本。可以是 1.01.1。默认为 1.0

版本 2.10 中新增

id

body

uuid

关联的健康监控 ID。

max_retries

body

整数

在将成员的 operating status 更改为 ONLINE 之前的成功检查次数。有效值范围为 110

max_retries_down

body

整数

在将成员的 operating status 更改为 ERROR 之前的允许检查失败次数。有效值范围为 110

name

body

字符串

资源的易于阅读的名称。

operating_status

body

字符串

资源的运行状态。请参阅 运行状态码

pool_id

body

uuid

池的 ID。

project_id

body

字符串

拥有此资源的项目的 ID。

provisioning_status

body

字符串

资源的配置状态。请参阅 配置状态码

tags

body

数组

分配给资源的简单字符串列表。

版本 2.5 新增

timeout

body

整数

监视器在超时前等待连接的最大时间(以秒为单位)。此值必须小于 delay 值。

type

body

字符串

健康监视器的类型。可以是 HTTPHTTPSPINGSCTPTCPTLS-HELLOUDP-CONNECT 之一。

updated_at

body

字符串

上次更新资源的 UTC 日期和时间戳。

url_path

body

字符串

监视器用于测试后端成员健康状况的请求的 HTTP URL 路径。必须是以斜杠(/)开头的字符串。

响应示例

{
    "healthmonitor": {
        "project_id": "e3cd678b11784734bc366148aa37580e",
        "name": "super-pool-health-monitor",
        "admin_state_up": true,
        "pools": [
            {
                "id": "4029d267-3983-4224-a3d0-afb3fe16a2cd"
            }
        ],
        "created_at": "2017-05-11T23:53:47",
        "provisioning_status": "ACTIVE",
        "updated_at": "2017-05-11T23:53:47",
        "delay": 10,
        "expected_codes": "200",
        "max_retries": 1,
        "http_method": "GET",
        "timeout": 5,
        "max_retries_down": 3,
        "url_path": "/",
        "type": "HTTP",
        "id": "8ed3c5ac-6efa-420c-bedb-99ba14e58db5",
        "operating_status": "ONLINE",
        "tags": ["test_tag"],
        "http_version": 1.1,
        "domain_name": "testlab.com"
    }
}
GET
/v2/lbaas/healthmonitors/{healthmonitor_id}

显示健康监视器详细信息

显示健康监视器的详细信息。

如果您不是管理员用户,并且父负载均衡器不属于您的项目,则服务将返回 HTTP Forbidden (403) 响应代码。

此操作不需要请求正文。

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

401 - 未授权

由于凭据无效,访问被拒绝。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

请求

名称

入参

类型

描述

fields (可选)

查询

字符串

您希望服务器返回的字段。如果未指定 fields 查询参数,则 octavia API 将返回策略设置允许的所有属性。通过使用 fields 参数,API 将仅返回请求的属性集。 fields 参数可以指定多次。例如,如果在请求 URL 中指定 fields=id&fields=name,则仅返回 idname 属性。

healthmonitor_id

路径

uuid

要查询的健康监视器的 ID。

Curl 示例

curl -X GET -H "X-Auth-Token: <token>" http://198.51.100.10:9876/v2/lbaas/healthmonitors/8ed3c5ac-6efa-420c-bedb-99ba14e58db5

响应参数

名称

入参

类型

描述

admin_state_up

body

布尔值

资源的管理员状态,即启用(true)或禁用(false)。

created_at

body

字符串

资源创建的 UTC 日期和时间戳。

delay

body

整数

向成员发送探测的间隔时间,以秒为单位。

domain_name

body

字符串

域名,将被注入到发往后端服务器的 HTTP Host Header 中,用于 HTTP 健康检查。

版本 2.10 中新增

expected_codes

body

字符串

成员响应中用于声明其健康的预期 HTTP 状态码列表。指定以下值之一

  • 单个值,例如 200

  • 列表,例如 200, 202

  • 范围,例如 200-204

http_method

body

字符串

健康监视器用于请求的 HTTP 方法。可以是 CONNECTDELETEGETHEADOPTIONSPATCHPOSTPUTTRACE 之一。

http_version

body

float

HTTP 版本。可以是 1.01.1。默认为 1.0

版本 2.10 中新增

id

body

uuid

关联的健康监控 ID。

max_retries

body

整数

在将成员的 operating status 更改为 ONLINE 之前的成功检查次数。有效值范围为 110

max_retries_down

body

整数

在将成员的 operating status 更改为 ERROR 之前的允许检查失败次数。有效值范围为 110

name

body

字符串

资源的易于阅读的名称。

operating_status

body

字符串

资源的运行状态。请参阅 运行状态码

pool_id

body

uuid

池的 ID。

project_id

body

字符串

拥有此资源的项目的 ID。

provisioning_status

body

字符串

资源的配置状态。请参阅 配置状态码

tags

body

数组

分配给资源的简单字符串列表。

版本 2.5 新增

timeout

body

整数

监视器在超时前等待连接的最大时间(以秒为单位)。此值必须小于 delay 值。

type

body

字符串

健康监视器的类型。可以是 HTTPHTTPSPINGSCTPTCPTLS-HELLOUDP-CONNECT 之一。

updated_at

body

字符串

上次更新资源的 UTC 日期和时间戳。

url_path

body

字符串

监视器用于测试后端成员健康状况的请求的 HTTP URL 路径。必须是以斜杠(/)开头的字符串。

响应示例

{
    "healthmonitor": {
        "project_id": "e3cd678b11784734bc366148aa37580e",
        "name": "super-pool-health-monitor",
        "admin_state_up": true,
        "pools": [
            {
                "id": "4029d267-3983-4224-a3d0-afb3fe16a2cd"
            }
        ],
        "created_at": "2017-05-11T23:53:47",
        "provisioning_status": "ACTIVE",
        "updated_at": "2017-05-11T23:53:47",
        "delay": 10,
        "expected_codes": "200",
        "max_retries": 1,
        "http_method": "GET",
        "timeout": 5,
        "max_retries_down": 3,
        "url_path": "/",
        "type": "HTTP",
        "id": "8ed3c5ac-6efa-420c-bedb-99ba14e58db5",
        "operating_status": "ONLINE",
        "tags": ["test_tag"],
        "http_version": 1.0,
        "domain_name": null
    }
}
PUT
/v2/lbaas/healthmonitors/{healthmonitor_id}

更新健康监视器

更新现有健康监视器。

如果请求有效,服务将返回 Accepted (202) 响应代码。要确认更新,请检查健康监视器的预配状态是否为 ACTIVE。如果状态为 PENDING_UPDATE,请使用 GET 操作轮询健康监视器对象以了解更改。

此操作将返回更新后的健康监视器对象,其预配状态为 ACTIVEPENDING_UPDATEERROR

成功

代码

原因

202 - Accepted

请求已接受,但处理可能需要一些时间。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

由于凭据无效,访问被拒绝。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

409 - Conflict

此资源有一个正在进行的操作,与此请求冲突。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

请求

名称

入参

类型

描述

admin_state_up (可选)

body

布尔值

资源的管理员状态,即启用(true)或禁用(false)。默认为 true

delay (可选)

body

整数

向成员发送探测的间隔时间,以秒为单位。

domain_name (可选)

body

字符串

域名,将被注入到发往后端服务器的 HTTP Host Header 中,用于 HTTP 健康检查。

版本 2.10 中新增

expected_codes (可选)

body

字符串

成员响应中用于声明其健康的预期 HTTP 状态码列表。指定以下值之一

  • 单个值,例如 200

  • 列表,例如 200, 202

  • 范围,例如 200-204

默认为 200。

healthmonitor_id

路径

uuid

要查询的健康监视器的 ID。

http_method (可选)

body

字符串

健康监视器用于请求的 HTTP 方法。可以是 CONNECTDELETEGETHEADOPTIONSPATCHPOSTPUTTRACE 之一。默认为 GET

http_version (可选)

body

float

HTTP 版本。可以是 1.01.1。默认为 1.0

版本 2.10 中新增

max_retries (可选)

body

整数

在将成员的 operating status 更改为 ONLINE 之前的成功检查次数。有效值范围为 110

max_retries_down (可选)

body

整数

在将成员的 operating status 更改为 ERROR 之前的允许检查失败次数。有效值范围为 110。默认为 3

name (可选)

body

字符串

资源的易于阅读的名称。

tags (可选)

body

数组

分配给资源的简单字符串列表。

版本 2.5 新增

timeout (可选)

body

整数

监视器在超时前等待连接的最大时间(以秒为单位)。此值必须小于 delay 值。

url_path (可选)

body

字符串

监视器用于测试后端成员健康状况的请求的 HTTP URL 路径。必须是以斜杠(/)开头的字符串。默认 URL 路径为 /

请求示例

{
    "healthmonitor": {
        "name": "super-pool-health-monitor-updated",
        "admin_state_up": true,
        "delay": 5,
        "expected_codes": "200",
        "http_method": "HEAD",
        "timeout": 2,
        "url_path": "/index.html",
        "max_retries": 2,
        "max_retries_down": 2,
        "tags": ["updated_tag"],
        "http_version": 1.1
    }
}

Curl 示例

curl -X PUT -H "Content-Type: application/json" -H "X-Auth-Token: <token>" -d '{"healthmonitor":{"name":"super-pool-health-monitor-updated","admin_state_up":true,"delay":5,"expected_codes":"200","http_method":"HEAD","timeout":2,"url_path":"/index.html","max_retries":2,"max_retries_down":2,"tags":["updated_tag"],"http_version":1.1}}' http://198.51.100.10:9876/v2/lbaas/healthmonitors/8ed3c5ac-6efa-420c-bedb-99ba14e58db5

响应参数

名称

入参

类型

描述

admin_state_up

body

布尔值

资源的管理员状态,即启用(true)或禁用(false)。

created_at

body

字符串

资源创建的 UTC 日期和时间戳。

delay

body

整数

向成员发送探测的间隔时间,以秒为单位。

domain_name

body

字符串

域名,将被注入到发往后端服务器的 HTTP Host Header 中,用于 HTTP 健康检查。

版本 2.10 中新增

expected_codes

body

字符串

成员响应中用于声明其健康的预期 HTTP 状态码列表。指定以下值之一

  • 单个值,例如 200

  • 列表,例如 200, 202

  • 范围,例如 200-204

http_method

body

字符串

健康监视器用于请求的 HTTP 方法。可以是 CONNECTDELETEGETHEADOPTIONSPATCHPOSTPUTTRACE 之一。

http_version

body

float

HTTP 版本。可以是 1.01.1。默认为 1.0

版本 2.10 中新增

id

body

uuid

关联的健康监控 ID。

max_retries

body

整数

在将成员的 operating status 更改为 ONLINE 之前的成功检查次数。有效值范围为 110

max_retries_down

body

整数

在将成员的 operating status 更改为 ERROR 之前的允许检查失败次数。有效值范围为 110

name

body

字符串

资源的易于阅读的名称。

operating_status

body

字符串

资源的运行状态。请参阅 运行状态码

pool_id

body

uuid

池的 ID。

project_id

body

字符串

拥有此资源的项目的 ID。

provisioning_status

body

字符串

资源的配置状态。请参阅 配置状态码

tags

body

数组

分配给资源的简单字符串列表。

版本 2.5 新增

timeout

body

整数

监视器在超时前等待连接的最大时间(以秒为单位)。此值必须小于 delay 值。

type

body

字符串

健康监视器的类型。可以是 HTTPHTTPSPINGSCTPTCPTLS-HELLOUDP-CONNECT 之一。

updated_at

body

字符串

上次更新资源的 UTC 日期和时间戳。

url_path

body

字符串

监视器用于测试后端成员健康状况的请求的 HTTP URL 路径。必须是以斜杠(/)开头的字符串。

响应示例

{
    "healthmonitor": {
        "project_id": "e3cd678b11784734bc366148aa37580e",
        "name": "super-pool-health-monitor-updated",
        "admin_state_up": true,
        "pools": [
            {
                "id": "4029d267-3983-4224-a3d0-afb3fe16a2cd"
            }
        ],
        "created_at": "2017-05-11T23:53:47",
        "provisioning_status": "PENDING_UPDATE",
        "updated_at": "2017-05-11T23:53:47",
        "delay": 5,
        "expected_codes": "200",
        "max_retries": 2,
        "http_method": "HEAD",
        "timeout": 2,
        "max_retries_down": 2,
        "url_path": "/index.html",
        "type": "HTTP",
        "id": "8ed3c5ac-6efa-420c-bedb-99ba14e58db5",
        "operating_status": "ONLINE",
        "tags": ["updated_tag"],
        "http_version": 1.1,
        "domain_name": null
    }
}
DELETE
/v2/lbaas/healthmonitors/{healthmonitor_id}

移除健康监视器

从项目中移除健康监视器及其关联配置。

API 将立即清除任何和所有配置数据,具体取决于配置设置。您无法恢复它。

成功

代码

原因

204 - No Content

请求已满足,但服务未返回任何内容。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

由于凭据无效,访问被拒绝。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

409 - Conflict

此资源有一个正在进行的操作,与此请求冲突。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

请求

名称

入参

类型

描述

healthmonitor_id

路径

uuid

要查询的健康监视器的 ID。

Curl 示例

curl -X DELETE -H "X-Auth-Token: <token>" http://198.51.100.10:9876/v2/lbaas/healthmonitors/8ed3c5ac-6efa-420c-bedb-99ba14e58db5

响应

成功的 DELETE 请求没有响应正文内容。

L7 策略

GET
/v2/lbaas/l7policies

列出 L7 策略

列出项目所有 L7 策略。

使用 fields 查询参数来控制响应体中返回的字段。此外,您还可以使用查询字符串参数过滤结果。有关信息,请参阅 过滤和列选择

管理员用户可以指定一个与自己的不同的项目 ID 来列出其他项目的 L7 策略。

列表可能为空。

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

由于凭据无效,访问被拒绝。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

请求

名称

入参

类型

描述

fields (可选)

查询

字符串

您希望服务器返回的字段。如果未指定 fields 查询参数,则 octavia API 将返回策略设置允许的所有属性。通过使用 fields 参数,API 将仅返回请求的属性集。 fields 参数可以指定多次。例如,如果在请求 URL 中指定 fields=id&fields=name,则仅返回 idname 属性。

project_id (可选)

查询

字符串

要查询的项目 ID。

Curl 示例

curl -X GET -H "X-Auth-Token: <token>" http://198.51.100.10:9876/v2/lbaas/l7policies?project_id=e3cd678b11784734bc366148aa37580e

响应参数

名称

入参

类型

描述

动作

body

字符串

L7 策略操作。可以是 REDIRECT_PREFIXREDIRECT_TO_POOLREDIRECT_TO_URLREJECT 之一。

admin_state_up

body

布尔值

资源的管理员状态,即启用(true)或禁用(false)。

created_at

body

字符串

资源创建的 UTC 日期和时间戳。

description

body

字符串

资源的易于阅读的描述。

id

body

uuid

L7 策略的 ID。

listener_id

body

uuid

监听器的 ID。

name

body

字符串

资源的易于阅读的名称。

operating_status

body

字符串

资源的运行状态。请参阅 运行状态码

position

body

整数

此策略在监听器上的位置。位置从 1 开始。

project_id

body

字符串

拥有此资源的项目的 ID。

provisioning_status

body

字符串

资源的配置状态。请参阅 配置状态码

redirect_http_code

body

整数

匹配此策略的请求将使用指定的 HTTP 响应码重定向到指定的 URL 或前缀 URL。当 actionREDIRECT_TO_URLREDIRECT_PREFIX 时有效。有效选项为:301、302、303、307 或 308。默认为 302。

版本 2.9 新增

redirect_pool_id

body

uuid

匹配此策略的请求将重定向到此 ID 的池。仅当 actionREDIRECT_TO_POOL 时有效。池有一些限制,请参见 协议组合(监听器/池)

redirect_prefix

body

字符串

匹配此策略的请求将重定向到此前缀 URL。仅当 actionREDIRECT_PREFIX 时有效。

redirect_url

body

字符串

匹配此策略的请求将重定向到此 URL。仅当 actionREDIRECT_TO_URL 时有效。

rules

body

数组

关联的 L7 规则 ID 列表。

tags

body

数组

分配给资源的简单字符串列表。

版本 2.5 新增

updated_at

body

字符串

上次更新资源的 UTC 日期和时间戳。

响应示例

{
    "l7policies": [
        {
            "listener_id": "023f2e34-7806-443b-bfae-16c324569a3d",
            "description": "Redirect requests to example.com",
            "admin_state_up": true,
            "rules": [
                {
                    "id": "efd6a3f8-73bf-47f0-8ae6-503ebda57372"
                }
            ],
            "created_at": "2017-06-24T23:25:14",
            "provisioning_status": "ACTIVE",
            "updated_at": "2017-06-24T23:30:05",
            "redirect_http_code": 302,
            "redirect_pool_id": null,
            "redirect_prefix": null,
            "redirect_url": "http://www.example.com",
            "action": "REDIRECT_TO_URL",
            "position": 1,
            "project_id": "e3cd678b11784734bc366148aa37580e",
            "id": "8a1412f0-4c32-4257-8b07-af4770b604fd",
            "operating_status": "ONLINE",
            "name": "redirect-example.com",
            "tags": ["test_tag"]
        }
    ]
}
POST
/v2/lbaas/l7policies

创建 L7 策略

创建 L7 策略。

此操作通过使用您在请求对象中定义的配置来预配新的 L7 策略。API 验证请求并开始预配过程后,API 将返回一个包含唯一 ID 和 L7 策略预配状态的响应对象。

在响应中,L7 策略的 provisioning statusACTIVEPENDING_CREATEERROR

如果状态为 PENDING_CREATE,请发出 GET 请求 /v2/lbaas/l7policies/{l7policy_id} 来查看预配操作的进度。当 L7 策略状态更改为 ACTIVE 时,表示 L7 策略已成功预配并可进行进一步配置。

如果 API 由于数据不足或数据无效而无法满足请求,则服务将返回 HTTP Bad Request (400) 响应代码,并在响应体中提供失败信息。验证错误要求您纠正错误并重新提交请求。

与给定策略关联的所有规则都会逻辑上 AND 起来。请求必须匹配策略的所有规则才能匹配该策略。

如果您需要表达规则之间的逻辑 OR 操作,可以通过创建具有相同操作的多个策略来实现。

如果新策略的创建位置与现有策略的位置匹配,则新策略将被插入到给定位置。

REDIRECT_TO_URL 操作的 L7 策略将返回默认的 HTTP Found (302) 响应码和 redirect_url。此外,请指定 redirect_http_code 来配置所需的 HTTP 响应码,例如 301、302、303、307 和 308。

REJECT 操作的 L7 策略将向请求者返回 Forbidden (403) 响应码。

注意

目前 SCTPTCPUDP 类型的池不能用于 L7 策略。

成功

代码

原因

201 - 已创建

请求已完成,并创建了新资源。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

由于凭据无效,访问被拒绝。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

409 - Conflict

此资源有一个正在进行的操作,与此请求冲突。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

503 - 服务不可用

服务现在无法处理请求。

请求

名称

入参

类型

描述

动作

body

字符串

L7 策略操作。可以是 REDIRECT_PREFIXREDIRECT_TO_POOLREDIRECT_TO_URLREJECT 之一。

admin_state_up (可选)

body

布尔值

资源的管理员状态,即启用(true)或禁用(false)。默认为 true

description (可选)

body

字符串

资源的易于阅读的描述。

listener_id

body

uuid

监听器的 ID。

name (可选)

body

字符串

资源的易于阅读的名称。

position (可选)

body

整数

此策略在监听器上的位置。位置从 1 开始。

project_id (可选)

body

字符串

拥有此资源的项目的 ID。

redirect_http_code (可选)

body

整数

匹配此策略的请求将使用指定的 HTTP 响应码重定向到指定的 URL 或前缀 URL。当 actionREDIRECT_TO_URLREDIRECT_PREFIX 时有效。有效选项为:301、302、303、307 或 308。默认为 302。

版本 2.9 新增

redirect_pool_id (可选)

body

uuid

匹配此策略的请求将重定向到此 ID 的池。仅当 actionREDIRECT_TO_POOL 时有效。池有一些限制,请参见 协议组合(监听器/池)

redirect_prefix (可选)

body

字符串

匹配此策略的请求将重定向到此前缀 URL。仅当 actionREDIRECT_PREFIX 时有效。

redirect_url (可选)

body

字符串

匹配此策略的请求将重定向到此 URL。仅当 actionREDIRECT_TO_URL 时有效。

tags (可选)

body

数组

分配给资源的简单字符串列表。

版本 2.5 新增

请求示例

{
    "l7policy": {
        "description": "Redirect requests to example.com",
        "admin_state_up": true,
        "listener_id": "023f2e34-7806-443b-bfae-16c324569a3d",
        "redirect_url": "http://www.example.com",
        "redirect_http_code": 301,
        "name": "redirect-example.com",
        "action": "REDIRECT_TO_URL",
        "position": 1,
        "tags": ["test_tag"]
    }
}

Curl 示例

curl -X POST -H "Content-Type: application/json" -H "X-Auth-Token: <token>" -d '{"l7policy":{"description":"Redirect requests to example.com","admin_state_up":true,"listener_id":"023f2e34-7806-443b-bfae-16c324569a3d","redirect_http_code":301,"redirect_url":"http://www.example.com","name":"redirect-example.com","action":"REDIRECT_TO_URL","position":1,"tags":["test_tag"]}}' http://198.51.100.10:9876/v2/lbaas/l7policies

响应参数

名称

入参

类型

描述

动作

body

字符串

L7 策略操作。可以是 REDIRECT_PREFIXREDIRECT_TO_POOLREDIRECT_TO_URLREJECT 之一。

admin_state_up

body

布尔值

资源的管理员状态,即启用(true)或禁用(false)。

created_at

body

字符串

资源创建的 UTC 日期和时间戳。

description

body

字符串

资源的易于阅读的描述。

id

body

uuid

L7 策略的 ID。

listener_id

body

uuid

监听器的 ID。

name

body

字符串

资源的易于阅读的名称。

operating_status

body

字符串

资源的运行状态。请参阅 运行状态码

position

body

整数

此策略在监听器上的位置。位置从 1 开始。

project_id

body

字符串

拥有此资源的项目的 ID。

provisioning_status

body

字符串

资源的配置状态。请参阅 配置状态码

redirect_http_code

body

整数

匹配此策略的请求将使用指定的 HTTP 响应码重定向到指定的 URL 或前缀 URL。当 actionREDIRECT_TO_URLREDIRECT_PREFIX 时有效。有效选项为:301、302、303、307 或 308。默认为 302。

版本 2.9 新增

redirect_pool_id

body

uuid

匹配此策略的请求将重定向到此 ID 的池。仅当 actionREDIRECT_TO_POOL 时有效。池有一些限制,请参见 协议组合(监听器/池)

redirect_prefix

body

字符串

匹配此策略的请求将重定向到此前缀 URL。仅当 actionREDIRECT_PREFIX 时有效。

redirect_url

body

字符串

匹配此策略的请求将重定向到此 URL。仅当 actionREDIRECT_TO_URL 时有效。

rules

body

数组

关联的 L7 规则 ID 列表。

tags

body

数组

分配给资源的简单字符串列表。

版本 2.5 新增

updated_at

body

字符串

上次更新资源的 UTC 日期和时间戳。

响应示例

{
    "l7policy": [
        {
            "listener_id": "023f2e34-7806-443b-bfae-16c324569a3d",
            "description": "Redirect requests to example.com",
            "admin_state_up": true,
            "rules": [
                {
                    "id": "efd6a3f8-73bf-47f0-8ae6-503ebda57372"
                }
            ],
            "created_at": "2017-06-24T23:25:14",
            "provisioning_status": "PENDING_CREATE",
            "updated_at": "2017-06-24T23:30:05",
            "redirect_http_code": 301,
            "redirect_pool_id": null,
            "redirect_prefix": null,
            "redirect_url": "http://www.example.com",
            "action": "REDIRECT_TO_URL",
            "position": 1,
            "project_id": "e3cd678b11784734bc366148aa37580e",
            "id": "8a1412f0-4c32-4257-8b07-af4770b604fd",
            "operating_status": "OFFLINE",
            "name": "redirect-example.com",
            "tags": ["test_tag"]
        }
    ]
}
GET
/v2/lbaas/l7policies/{l7policy_id}

显示 L7 策略详细信息

显示 L7 策略的详细信息。

如果您不是管理员用户,并且 L7 策略对象不属于您的项目,则服务将返回 HTTP Forbidden (403) 响应代码。

此操作不需要请求正文。

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

401 - 未授权

由于凭据无效,访问被拒绝。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

请求

名称

入参

类型

描述

fields (可选)

查询

字符串

您希望服务器返回的字段。如果未指定 fields 查询参数,则 octavia API 将返回策略设置允许的所有属性。通过使用 fields 参数,API 将仅返回请求的属性集。 fields 参数可以指定多次。例如,如果在请求 URL 中指定 fields=id&fields=name,则仅返回 idname 属性。

l7policy_id

路径

uuid

要查询的 L7 策略的 ID。

Curl 示例

curl -X GET -H "X-Auth-Token: <token>" http://198.51.100.10:9876/v2/lbaas/l7policies/8a1412f0-4c32-4257-8b07-af4770b604fd

响应参数

名称

入参

类型

描述

动作

body

字符串

L7 策略操作。可以是 REDIRECT_PREFIXREDIRECT_TO_POOLREDIRECT_TO_URLREJECT 之一。

admin_state_up

body

布尔值

资源的管理员状态,即启用(true)或禁用(false)。

created_at

body

字符串

资源创建的 UTC 日期和时间戳。

description

body

字符串

资源的易于阅读的描述。

id

body

uuid

L7 策略的 ID。

listener_id

body

uuid

监听器的 ID。

name

body

字符串

资源的易于阅读的名称。

operating_status

body

字符串

资源的运行状态。请参阅 运行状态码

position

body

整数

此策略在监听器上的位置。位置从 1 开始。

project_id

body

字符串

拥有此资源的项目的 ID。

provisioning_status

body

字符串

资源的配置状态。请参阅 配置状态码

redirect_http_code

body

整数

匹配此策略的请求将使用指定的 HTTP 响应码重定向到指定的 URL 或前缀 URL。当 actionREDIRECT_TO_URLREDIRECT_PREFIX 时有效。有效选项为:301、302、303、307 或 308。默认为 302。

版本 2.9 新增

redirect_pool_id

body

uuid

匹配此策略的请求将重定向到此 ID 的池。仅当 actionREDIRECT_TO_POOL 时有效。池有一些限制,请参见 协议组合(监听器/池)

redirect_prefix

body

字符串

匹配此策略的请求将重定向到此前缀 URL。仅当 actionREDIRECT_PREFIX 时有效。

redirect_url

body

字符串

匹配此策略的请求将重定向到此 URL。仅当 actionREDIRECT_TO_URL 时有效。

rules

body

数组

关联的 L7 规则 ID 列表。

tags

body

数组

分配给资源的简单字符串列表。

版本 2.5 新增

updated_at

body

字符串

上次更新资源的 UTC 日期和时间戳。

响应示例

{
    "l7policy":
        {
            "listener_id": "023f2e34-7806-443b-bfae-16c324569a3d",
            "description": "Redirect requests to example.com",
            "admin_state_up": true,
            "rules": [
                {
                    "id": "efd6a3f8-73bf-47f0-8ae6-503ebda57372"
                }
            ],
            "created_at": "2017-06-24T23:25:14",
            "provisioning_status": "ACTIVE",
            "updated_at": "2017-06-24T23:30:05",
            "redirect_http_code": 302,
            "redirect_pool_id": null,
            "redirect_prefix": null,
            "redirect_url": "http://www.example.com",
            "action": "REDIRECT_TO_URL",
            "position": 1,
            "project_id": "e3cd678b11784734bc366148aa37580e",
            "id": "8a1412f0-4c32-4257-8b07-af4770b604fd",
            "operating_status": "ONLINE",
            "name": "redirect-example.com",
            "tags": ["test_tag"]
        }
}
PUT
/v2/lbaas/l7policies/{l7policy_id}

更新 L7 策略

更新 L7 策略。

如果请求有效,服务将返回 Accepted (202) 响应代码。要确认更新,请检查 L7 策略的预配状态是否为 ACTIVE。如果状态为 PENDING_UPDATE,请使用 GET 操作轮询 L7 策略对象以了解更改。

此操作将返回更新后的 L7 策略对象,其预配状态为 ACTIVEPENDING_UPDATEERROR

如果策略更新后的位置与现有策略的位置匹配,则更新后的策略将被插入到给定位置。

成功

代码

原因

202 - Accepted

请求已接受,但处理可能需要一些时间。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

由于凭据无效,访问被拒绝。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

409 - Conflict

此资源有一个正在进行的操作,与此请求冲突。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

请求

名称

入参

类型

描述

action(可选)

body

字符串

L7 策略操作。可以是 REDIRECT_PREFIXREDIRECT_TO_POOLREDIRECT_TO_URLREJECT 之一。

admin_state_up (可选)

body

布尔值

资源的管理员状态,即启用(true)或禁用(false)。默认为 true

description (可选)

body

字符串

资源的易于阅读的描述。

l7policy_id

路径

uuid

要查询的 L7 策略的 ID。

name (可选)

body

字符串

资源的易于阅读的名称。

position (可选)

body

整数

此策略在监听器上的位置。位置从 1 开始。

redirect_http_code (可选)

body

整数

匹配此策略的请求将使用指定的 HTTP 响应码重定向到指定的 URL 或前缀 URL。当 actionREDIRECT_TO_URLREDIRECT_PREFIX 时有效。有效选项为:301、302、303、307 或 308。默认为 302。

版本 2.9 新增

redirect_pool_id (可选)

body

uuid

匹配此策略的请求将重定向到此 ID 的池。仅当 actionREDIRECT_TO_POOL 时有效。池有一些限制,请参见 协议组合(监听器/池)

redirect_prefix (可选)

body

字符串

匹配此策略的请求将重定向到此前缀 URL。仅当 actionREDIRECT_PREFIX 时有效。

redirect_url (可选)

body

字符串

匹配此策略的请求将重定向到此 URL。仅当 actionREDIRECT_TO_URL 时有效。

tags (可选)

body

数组

分配给资源的简单字符串列表。

版本 2.5 新增

请求示例

{
    "l7policy": {
        "description": "Redirect requests to images.example.com",
        "admin_state_up": true,
        "redirect_http_code": 301,
        "redirect_url": "http://images.example.com",
        "name": "redirect-images.example.com",
        "action": "REDIRECT_TO_URL",
        "position": 1,
        "tags": ["updated_tag"]
    }
}

Curl 示例

curl -X PUT -H "Content-Type: application/json" -H "X-Auth-Token: <token>" -d '{"l7policy":{"description":"Redirect requests to images.example.com","admin_state_up":true,"redirect_http_code":301,"redirect_url":"http://images.example.com","name":"redirect-images.example.com","action":"REDIRECT_TO_URL","position":1,"tags":["updated_tag"]}}' http://198.51.100.10:9876/v2/lbaas/l7policies/8a1412f0-4c32-4257-8b07-af4770b604fd

响应参数

名称

入参

类型

描述

动作

body

字符串

L7 策略操作。可以是 REDIRECT_PREFIXREDIRECT_TO_POOLREDIRECT_TO_URLREJECT 之一。

admin_state_up

body

布尔值

资源的管理员状态,即启用(true)或禁用(false)。

created_at

body

字符串

资源创建的 UTC 日期和时间戳。

description

body

字符串

资源的易于阅读的描述。

id

body

uuid

L7 策略的 ID。

listener_id

body

uuid

监听器的 ID。

name

body

字符串

资源的易于阅读的名称。

operating_status

body

字符串

资源的运行状态。请参阅 运行状态码

position

body

整数

此策略在监听器上的位置。位置从 1 开始。

project_id

body

字符串

拥有此资源的项目的 ID。

provisioning_status

body

字符串

资源的配置状态。请参阅 配置状态码

redirect_http_code

body

整数

匹配此策略的请求将使用指定的 HTTP 响应码重定向到指定的 URL 或前缀 URL。当 actionREDIRECT_TO_URLREDIRECT_PREFIX 时有效。有效选项为:301、302、303、307 或 308。默认为 302。

版本 2.9 新增

redirect_pool_id

body

uuid

匹配此策略的请求将重定向到此 ID 的池。仅当 actionREDIRECT_TO_POOL 时有效。池有一些限制,请参见 协议组合(监听器/池)

redirect_prefix

body

字符串

匹配此策略的请求将重定向到此前缀 URL。仅当 actionREDIRECT_PREFIX 时有效。

redirect_url

body

字符串

匹配此策略的请求将重定向到此 URL。仅当 actionREDIRECT_TO_URL 时有效。

rules

body

数组

关联的 L7 规则 ID 列表。

tags

body

数组

分配给资源的简单字符串列表。

版本 2.5 新增

updated_at

body

字符串

上次更新资源的 UTC 日期和时间戳。

响应示例

{
    "l7policy":
        {
            "listener_id": "023f2e34-7806-443b-bfae-16c324569a3d",
            "description": "Redirect requests to example.com",
            "admin_state_up": true,
            "rules": [
                {
                    "id": "efd6a3f8-73bf-47f0-8ae6-503ebda57372"
                }
            ],
            "created_at": "2017-06-24T23:25:14",
            "provisioning_status": "PENDING_UPDATE",
            "updated_at": "2017-06-24T23:30:05",
            "redirect_http_code": 301,
            "redirect_pool_id": null,
            "redirect_prefix": null,
            "redirect_url": "http://www.example.com",
            "action": "REDIRECT_TO_URL",
            "position": 1,
            "project_id": "e3cd678b11784734bc366148aa37580e",
            "id": "8a1412f0-4c32-4257-8b07-af4770b604fd",
            "operating_status": "ONLINE",
            "name": "redirect-example.com",
            "tags": ["updated_tag"]
        }
}
DELETE
/v2/lbaas/l7policies/{l7policy_id}

移除 L7 策略

从项目中移除 L7 策略及其关联配置。

API 将立即清除任何和所有配置数据,具体取决于配置设置。您无法恢复它。

成功

代码

原因

204 - No Content

请求已满足,但服务未返回任何内容。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

由于凭据无效,访问被拒绝。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

409 - Conflict

此资源有一个正在进行的操作,与此请求冲突。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

请求

名称

入参

类型

描述

l7policy_id

路径

uuid

要查询的 L7 策略的 ID。

Curl 示例

curl -X DELETE -H "X-Auth-Token: <token>" http://198.51.100.10:9876/v2/lbaas/l7policies/8a1412f0-4c32-4257-8b07-af4770b604fd

响应

成功的 DELETE 请求没有响应正文内容。

L7 规则

GET
/v2/lbaas/l7policies/{l7policy_id}/rules

列出 L7 规则

列出项目所有 L7 规则。

使用 fields 查询参数来控制响应体中返回的字段。此外,您还可以使用查询字符串参数过滤结果。有关信息,请参阅 过滤和列选择

管理员用户可以指定一个与自己的不同的项目 ID 来列出其他项目的 L7 策略。

列表可能为空。

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

由于凭据无效,访问被拒绝。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

请求

名称

入参

类型

描述

fields (可选)

查询

字符串

您希望服务器返回的字段。如果未指定 fields 查询参数,则 octavia API 将返回策略设置允许的所有属性。通过使用 fields 参数,API 将仅返回请求的属性集。 fields 参数可以指定多次。例如,如果在请求 URL 中指定 fields=id&fields=name,则仅返回 idname 属性。

l7policy_id

路径

uuid

要查询的 L7 策略的 ID。

project_id (可选)

查询

字符串

要查询的项目 ID。

Curl 示例

curl -X GET -H "X-Auth-Token: <token>" http://198.51.100.10:9876/v2/lbaas/l7policies/8a1412f0-4c32-4257-8b07-af4770b604fd/rules

响应参数

名称

入参

类型

描述

admin_state_up

body

布尔值

资源的管理员状态,即启用(true)或禁用(false)。

compare_type

body

字符串

L7 规则的比较类型。可以是 CONTAINSENDS_WITHEQUAL_TOREGEXSTARTS_WITH 之一。

created_at

body

字符串

资源创建的 UTC 日期和时间戳。

id

body

uuid

L7 规则的 ID。

invert

body

布尔值

如果为 true,则规则的逻辑将被反转。例如,当 invert true 时,“等于”将变成“不等于”。

key

body

字符串

用于比较的键。例如,要评估的 cookie 名称。

operating_status

body

字符串

资源的运行状态。请参阅 运行状态码

project_id

body

字符串

拥有此资源的项目的 ID。

provisioning_status

body

字符串

资源的配置状态。请参阅 配置状态码

tags

body

数组

分配给资源的简单字符串列表。

版本 2.5 新增

type

body

字符串

L7 规则类型。可以是 COOKIEFILE_TYPEHEADERHOST_NAMEPATHSSL_CONN_HAS_CERTSSL_VERIFY_RESULTSSL_DN_FIELD 之一。

updated_at

body

字符串

上次更新资源的 UTC 日期和时间戳。

value

body

字符串

用于比较的值。例如,要比较的文件类型。

响应示例

{
    "rules": [
        {
            "created_at": "2017-06-27T15:52:27",
            "compare_type": "REGEX",
            "provisioning_status": "ACTIVE",
            "invert": false,
            "admin_state_up": true,
            "updated_at": "2017-06-27T15:52:28",
            "value": "/images*",
            "key": null,
            "project_id": "e3cd678b11784734bc366148aa37580e",
            "type": "PATH",
            "id": "16621dbb-a736-4888-a57a-3ecd53df784c",
            "operating_status": "ONLINE",
            "tags": ["test_tag"]
        }
    ]
}
POST
/v2/lbaas/l7policies/{l7policy_id}/rules

创建 L7 规则

创建 L7 规则。

此操作通过使用您在请求对象中定义的配置来预配新的 L7 规则。API 验证请求并开始预配过程后,API 将返回一个包含唯一 ID 和 L7 规则预配状态的响应对象。

在响应中,L7 规则的 provisioning statusACTIVEPENDING_CREATEERROR

如果状态为 PENDING_CREATE,请发出 GET 请求 /v2/lbaas/l7policies/{l7policy_id}/rules/{l7rule_id} 来查看预配操作的进度。当 L7 规则状态更改为 ACTIVE 时,表示 L7 规则已成功预配并可进行进一步配置。

如果 API 由于数据不足或数据无效而无法满足请求,则服务将返回 HTTP Bad Request (400) 响应代码,并在响应体中提供失败信息。验证错误要求您纠正错误并重新提交请求。

与给定策略关联的所有规则都会逻辑上 AND 起来。请求必须匹配策略的所有规则才能匹配该策略。

如果您需要表达规则之间的逻辑 OR 操作,可以通过创建具有相同操作的多个策略来实现。

成功

代码

原因

201 - 已创建

请求已完成,并创建了新资源。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

由于凭据无效,访问被拒绝。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

409 - Conflict

此资源有一个正在进行的操作,与此请求冲突。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

503 - 服务不可用

服务现在无法处理请求。

请求

名称

入参

类型

描述

admin_state_up (可选)

body

布尔值

资源的管理员状态,即启用(true)或禁用(false)。默认为 true

compare_type

body

字符串

L7 规则的比较类型。可以是 CONTAINSENDS_WITHEQUAL_TOREGEXSTARTS_WITH 之一。

invert (可选)

body

布尔值

如果为 true,则规则的逻辑将被反转。例如,当 invert 为 true 时,“等于”将变成“不等于”。默认为 false

key (可选)

body

字符串

用于比较的键。例如,要评估的 cookie 名称。

l7policy_id

路径

uuid

要查询的 L7 策略的 ID。

project_id (可选)

body

字符串

拥有此资源的项目的 ID。

tags (可选)

body

数组

分配给资源的简单字符串列表。

版本 2.5 新增

type

body

字符串

L7 规则类型。可以是 COOKIEFILE_TYPEHEADERHOST_NAMEPATHSSL_CONN_HAS_CERTSSL_VERIFY_RESULTSSL_DN_FIELD 之一。

value

body

字符串

用于比较的值。例如,要比较的文件类型。

请求示例

{
    "rule": {
        "compare_type": "REGEX",
        "invert": false,
        "type": "PATH",
        "value": "/images*",
        "admin_state_up": true,
        "tags": ["test_tag"]
    }
}

Curl 示例

curl -X POST -H "Content-Type: application/json" -H "X-Auth-Token: <token>" -d '{"rule":{"compare_type":"REGEX","invert":false,"type":"PATH","value":"/images*","admin_state_up":true,"tags":["test_tag"]}}' http://198.51.100.10:9876/v2/lbaas/l7policies/8a1412f0-4c32-4257-8b07-af4770b604fd/rules

响应参数

名称

入参

类型

描述

admin_state_up

body

布尔值

资源的管理员状态,即启用(true)或禁用(false)。

compare_type

body

字符串

L7 规则的比较类型。可以是 CONTAINSENDS_WITHEQUAL_TOREGEXSTARTS_WITH 之一。

created_at

body

字符串

资源创建的 UTC 日期和时间戳。

id

body

uuid

L7 规则的 ID。

invert

body

布尔值

如果为 true,则规则的逻辑将被反转。例如,当 invert true 时,“等于”将变成“不等于”。

key

body

字符串

用于比较的键。例如,要评估的 cookie 名称。

operating_status

body

字符串

资源的运行状态。请参阅 运行状态码

project_id

body

字符串

拥有此资源的项目的 ID。

provisioning_status

body

字符串

资源的配置状态。请参阅 配置状态码

tags

body

数组

分配给资源的简单字符串列表。

版本 2.5 新增

type

body

字符串

L7 规则类型。可以是 COOKIEFILE_TYPEHEADERHOST_NAMEPATHSSL_CONN_HAS_CERTSSL_VERIFY_RESULTSSL_DN_FIELD 之一。

updated_at

body

字符串

上次更新资源的 UTC 日期和时间戳。

value

body

字符串

用于比较的值。例如,要比较的文件类型。

响应示例

{
    "rule":
        {
            "created_at": "2017-06-27T15:52:27",
            "compare_type": "REGEX",
            "provisioning_status": "PENDING_CREATE",
            "invert": false,
            "admin_state_up": true,
            "updated_at": "2017-06-27T15:52:28",
            "value": "/images*",
            "key": null,
            "project_id": "e3cd678b11784734bc366148aa37580e",
            "type": "PATH",
            "id": "16621dbb-a736-4888-a57a-3ecd53df784c",
            "operating_status": "OFFLINE",
            "tags": ["test_tag"]
        }
}
GET
/v2/lbaas/l7policies/{l7policy_id}/rules/{l7rule_id}

显示 L7 规则详细信息

显示 L7 规则的详细信息。

如果您不是管理员用户,并且 L7 规则对象不属于您的项目,则服务将返回 HTTP Forbidden (403) 响应代码。

此操作不需要请求正文。

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

401 - 未授权

由于凭据无效,访问被拒绝。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

请求

名称

入参

类型

描述

fields (可选)

查询

字符串

您希望服务器返回的字段。如果未指定 fields 查询参数,则 octavia API 将返回策略设置允许的所有属性。通过使用 fields 参数,API 将仅返回请求的属性集。 fields 参数可以指定多次。例如,如果在请求 URL 中指定 fields=id&fields=name,则仅返回 idname 属性。

l7policy_id

路径

uuid

要查询的 L7 策略的 ID。

l7rule_id

路径

uuid

要查询的 L7 规则的 ID。

Curl 示例

curl -X GET -H "X-Auth-Token: <token>" http://198.51.100.10:9876/v2/lbaas/l7policies/8a1412f0-4c32-4257-8b07-af4770b604fd/rules/16621dbb-a736-4888-a57a-3ecd53df784c

响应参数

名称

入参

类型

描述

admin_state_up

body

布尔值

资源的管理员状态,即启用(true)或禁用(false)。

compare_type

body

字符串

L7 规则的比较类型。可以是 CONTAINSENDS_WITHEQUAL_TOREGEXSTARTS_WITH 之一。

created_at

body

字符串

资源创建的 UTC 日期和时间戳。

id

body

uuid

L7 规则的 ID。

invert

body

布尔值

如果为 true,则规则的逻辑将被反转。例如,当 invert true 时,“等于”将变成“不等于”。

key

body

字符串

用于比较的键。例如,要评估的 cookie 名称。

operating_status

body

字符串

资源的运行状态。请参阅 运行状态码

project_id

body

字符串

拥有此资源的项目的 ID。

provisioning_status

body

字符串

资源的配置状态。请参阅 配置状态码

tags

body

数组

分配给资源的简单字符串列表。

版本 2.5 新增

type

body

字符串

L7 规则类型。可以是 COOKIEFILE_TYPEHEADERHOST_NAMEPATHSSL_CONN_HAS_CERTSSL_VERIFY_RESULTSSL_DN_FIELD 之一。

updated_at

body

字符串

上次更新资源的 UTC 日期和时间戳。

value

body

字符串

用于比较的值。例如,要比较的文件类型。

响应示例

{
    "rule":
        {
            "created_at": "2017-06-27T15:52:27",
            "compare_type": "REGEX",
            "provisioning_status": "ACTIVE",
            "invert": false,
            "admin_state_up": true,
            "updated_at": "2017-06-27T15:52:28",
            "value": "/images*",
            "key": null,
            "project_id": "e3cd678b11784734bc366148aa37580e",
            "type": "PATH",
            "id": "16621dbb-a736-4888-a57a-3ecd53df784c",
            "operating_status": "ONLINE",
            "tags": ["test_tag"]
        }
}
PUT
/v2/lbaas/l7policies/{l7policy_id}/rules/{l7rule_id}

更新 L7 规则

更新 L7 规则。

如果请求有效,服务将返回 Accepted (202) 响应代码。要确认更新,请检查 L7 规则的预配状态是否为 ACTIVE。如果状态为 PENDING_UPDATE,请使用 GET 操作轮询 L7 规则对象以了解更改。

此操作将返回更新后的 L7 规则对象,其预配状态为 ACTIVEPENDING_UPDATEERROR

成功

代码

原因

202 - Accepted

请求已接受,但处理可能需要一些时间。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

由于凭据无效,访问被拒绝。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

409 - Conflict

此资源有一个正在进行的操作,与此请求冲突。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

请求

名称

入参

类型

描述

admin_state_up (可选)

body

布尔值

资源的管理员状态,即启用(true)或禁用(false)。默认为 true

compare_type (可选)

body

字符串

L7 规则的比较类型。可以是 CONTAINSENDS_WITHEQUAL_TOREGEXSTARTS_WITH 之一。

invert (可选)

body

布尔值

如果为 true,则规则的逻辑将被反转。例如,当 invert 为 true 时,“等于”将变成“不等于”。默认为 false

key (可选)

body

字符串

用于比较的键。例如,要评估的 cookie 名称。

l7policy_id

路径

uuid

要查询的 L7 策略的 ID。

l7rule_id

路径

uuid

要查询的 L7 规则的 ID。

tags (可选)

body

数组

分配给资源的简单字符串列表。

版本 2.5 新增

type (可选)

body

字符串

L7 规则类型。可以是 COOKIEFILE_TYPEHEADERHOST_NAMEPATHSSL_CONN_HAS_CERTSSL_VERIFY_RESULTSSL_DN_FIELD 之一。

value (可选)

body

字符串

用于比较的值。例如,要比较的文件类型。

请求示例

{
    "rule": {
        "compare_type": "REGEX",
        "invert": true,
        "type": "PATH",
        "value": "/images/special*",
        "admin_state_up": true,
        "tags": ["updated_tag"]
    }
}

Curl 示例

curl -X PUT -H "Content-Type: application/json" -H "X-Auth-Token: <token>" -d '{"rule":{"compare_type":"REGEX","invert":true,"type":"PATH","value":"/images/special*","admin_state_up":true,"tags":["updated_tag"]}}' http://198.51.100.10:9876/v2/lbaas/l7policies/8a1412f0-4c32-4257-8b07-af4770b604fd/rules/16621dbb-a736-4888-a57a-3ecd53df784c

响应参数

名称

入参

类型

描述

admin_state_up

body

布尔值

资源的管理员状态,即启用(true)或禁用(false)。

compare_type

body

字符串

L7 规则的比较类型。可以是 CONTAINSENDS_WITHEQUAL_TOREGEXSTARTS_WITH 之一。

created_at

body

字符串

资源创建的 UTC 日期和时间戳。

id

body

uuid

L7 规则的 ID。

invert

body

布尔值

如果为 true,则规则的逻辑将被反转。例如,当 invert true 时,“等于”将变成“不等于”。

key

body

字符串

用于比较的键。例如,要评估的 cookie 名称。

operating_status

body

字符串

资源的运行状态。请参阅 运行状态码

project_id

body

字符串

拥有此资源的项目的 ID。

provisioning_status

body

字符串

资源的配置状态。请参阅 配置状态码

tags

body

数组

分配给资源的简单字符串列表。

版本 2.5 新增

type

body

字符串

L7 规则类型。可以是 COOKIEFILE_TYPEHEADERHOST_NAMEPATHSSL_CONN_HAS_CERTSSL_VERIFY_RESULTSSL_DN_FIELD 之一。

updated_at

body

字符串

上次更新资源的 UTC 日期和时间戳。

value

body

字符串

用于比较的值。例如,要比较的文件类型。

响应示例

{
    "rule":
        {
            "created_at": "2017-06-27T15:52:27",
            "compare_type": "REGEX",
            "provisioning_status": "PENDING_UPDATE",
            "invert": true,
            "admin_state_up": true,
            "updated_at": "2017-06-27T15:58:28",
            "value": "/images/special*",
            "key": null,
            "project_id": "e3cd678b11784734bc366148aa37580e",
            "type": "PATH",
            "id": "16621dbb-a736-4888-a57a-3ecd53df784c",
            "operating_status": "ONLINE",
            "tags": ["updated_tag"]
        }
}
DELETE
/v2/lbaas/l7policies/{l7policy_id}/rules/{l7rule_id}

移除 L7 规则

从项目中移除 L7 规则及其关联配置。

API 将立即清除任何和所有配置数据,具体取决于配置设置。您无法恢复它。

成功

代码

原因

204 - No Content

请求已满足,但服务未返回任何内容。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

由于凭据无效,访问被拒绝。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

409 - Conflict

此资源有一个正在进行的操作,与此请求冲突。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

请求

名称

入参

类型

描述

l7policy_id

路径

uuid

要查询的 L7 策略的 ID。

l7rule_id

路径

uuid

要查询的 L7 规则的 ID。

Curl 示例

curl -X DELETE -H "X-Auth-Token: <token>" http://198.51.100.10:9876/v2/lbaas/l7policies/8a1412f0-4c32-4257-8b07-af4770b604fd/rules/16621dbb-a736-4888-a57a-3ecd53df784c

响应

成功的 DELETE 请求没有响应正文内容。

配额

GET
/v2/lbaas/quotas

列出配额

列出项目所有配额。

使用 fields 查询参数来控制响应体中返回的字段。此外,您还可以使用查询字符串参数过滤结果。有关信息,请参阅 过滤和列选择

管理员用户可以指定一个与自己的不同的项目 ID 来列出其他项目的配额。

如果配额显示为 null,则表示配额正在使用部署的默认配额设置。

配额 -1 表示配额不受限制。

列表可能为空。

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

由于凭据无效,访问被拒绝。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

请求

名称

入参

类型

描述

fields (可选)

查询

字符串

您希望服务器返回的字段。如果未指定 fields 查询参数,则 octavia API 将返回策略设置允许的所有属性。通过使用 fields 参数,API 将仅返回请求的属性集。 fields 参数可以指定多次。例如,如果在请求 URL 中指定 fields=id&fields=name,则仅返回 idname 属性。

project_id (可选)

查询

字符串

要查询的项目 ID。

Curl 示例

curl -X GET -H "X-Auth-Token: <token>" http://198.51.100.10:9876/v2/lbaas/quotas?project_id=e3cd678b11784734bc366148aa37580e

响应参数

名称

入参

类型

描述

healthmonitor

body

整数

配置的健康监视器配额限制。设置为 null 表示使用部署默认配额。设置为 -1 表示无限制。

l7policy

body

整数

配置的 l7 策略配额限制。设置为 null 表示使用部署默认配额。设置为 -1 表示无限制。

l7rule

body

整数

配置的 l7 规则配额限制。设置为 null 表示使用部署默认配额。设置为 -1 表示无限制。

listener

body

整数

配置的监听器配额限制。设置为 null 表示使用部署默认配额。设置为 -1 表示无限制。

loadbalancer

body

整数

配置的负载均衡器配额限制。设置为 null 表示使用部署默认配额。设置为 -1 表示无限制。

member(成员)

body

整数

配置的成员配额限制。设置为 null 表示使用部署默认配额。设置为 -1 表示无限制。

pool

body

整数

配置的池配额限制。设置为 null 表示使用部署默认配额。设置为 -1 表示无限制。

project_id

body

字符串

拥有此资源的项目的 ID。

响应示例

{
    "quotas": [
        {
            "loadbalancer": 5,
            "member": 50,
            "healthmonitor": -1,
            "listener": null,
            "project_id": "e3cd678b11784734bc366148aa37580e",
            "pool": null,
            "l7policy": 3,
            "l7rule": null
        }
    ]
}
GET
/v2/lbaas/quotas/defaults

显示配额默认值

显示部署配置的配额默认值。

配额 -1 表示配额不受限制。

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

由于凭据无效,访问被拒绝。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

请求

显示配额默认值 API 没有请求参数。

Curl 示例

curl -X GET -H "X-Auth-Token: <token>" http://198.51.100.10:9876/v2/lbaas/quotas/defaults

响应参数

名称

入参

类型

描述

healthmonitor

body

整数

配置的健康监视器配额限制。设置为 null 表示使用部署默认配额。设置为 -1 表示无限制。

l7policy

body

整数

配置的 l7 策略配额限制。设置为 null 表示使用部署默认配额。设置为 -1 表示无限制。

l7rule

body

整数

配置的 l7 规则配额限制。设置为 null 表示使用部署默认配额。设置为 -1 表示无限制。

listener

body

整数

配置的监听器配额限制。设置为 null 表示使用部署默认配额。设置为 -1 表示无限制。

loadbalancer

body

整数

配置的负载均衡器配额限制。设置为 null 表示使用部署默认配额。设置为 -1 表示无限制。

member(成员)

body

整数

配置的成员配额限制。设置为 null 表示使用部署默认配额。设置为 -1 表示无限制。

pool

body

整数

配置的池配额限制。设置为 null 表示使用部署默认配额。设置为 -1 表示无限制。

响应示例

{
    "quota": {
        "loadbalancer": 50,
        "listener": -1,
        "member": -1,
        "pool": -1,
        "healthmonitor": -1,
        "l7policy": -1,
        "l7rule": -1
    }
}
GET
/v2/lbaas/quotas/{project_id}

显示项目配额

显示项目的配额。

使用 fields 查询参数来控制响应体中返回的字段。此外,您还可以使用查询字符串参数过滤结果。有关信息,请参阅 过滤和列选择

管理员用户可以指定一个与自己的不同的项目 ID 来显示其他项目的配额。

配额 -1 表示配额不受限制。

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

由于凭据无效,访问被拒绝。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

请求

名称

入参

类型

描述

fields (可选)

查询

字符串

您希望服务器返回的字段。如果未指定 fields 查询参数,则 octavia API 将返回策略设置允许的所有属性。通过使用 fields 参数,API 将仅返回请求的属性集。 fields 参数可以指定多次。例如,如果在请求 URL 中指定 fields=id&fields=name,则仅返回 idname 属性。

project_id

路径

字符串

要查询的项目 ID。

Curl 示例

curl -X GET -H "X-Auth-Token: <token>" http://198.51.100.10:9876/v2/lbaas/quotas/e3cd678b11784734bc366148aa37580e

响应参数

名称

入参

类型

描述

healthmonitor

body

整数

配置的健康监视器配额限制。设置为 null 表示使用部署默认配额。设置为 -1 表示无限制。

l7policy

body

整数

配置的 l7 策略配额限制。设置为 null 表示使用部署默认配额。设置为 -1 表示无限制。

l7rule

body

整数

配置的 l7 规则配额限制。设置为 null 表示使用部署默认配额。设置为 -1 表示无限制。

listener

body

整数

配置的监听器配额限制。设置为 null 表示使用部署默认配额。设置为 -1 表示无限制。

loadbalancer

body

整数

配置的负载均衡器配额限制。设置为 null 表示使用部署默认配额。设置为 -1 表示无限制。

member(成员)

body

整数

配置的成员配额限制。设置为 null 表示使用部署默认配额。设置为 -1 表示无限制。

pool

body

整数

配置的池配额限制。设置为 null 表示使用部署默认配额。设置为 -1 表示无限制。

响应示例

{
    "quota": {
        "loadbalancer": 5,
        "listener": -1,
        "member": 50,
        "pool": -1,
        "healthmonitor": -1,
        "l7policy": 20,
        "l7rule": -1
    }
}
PUT
/v2/lbaas/quotas/{project_id}

更新配额

更新项目的配额。

如果请求有效,服务将返回 Accepted (202) 响应代码。

此操作将返回更新后的配额对象。

如果配额指定为 null,则配额将使用部署的默认配额设置。

指定配额 -1 表示配额不受限制。

指定配额 0 表示项目无法创建该资源。

成功

代码

原因

202 - Accepted

请求已接受,但处理可能需要一些时间。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

由于凭据无效,访问被拒绝。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

409 - Conflict

此资源有一个正在进行的操作,与此请求冲突。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

请求

名称

入参

类型

描述

healthmonitor (可选)

body

整数

配置的健康监视器配额限制。设置为 null 表示使用部署默认配额。设置为 -1 表示无限制。

l7policy (可选)

body

整数

配置的 l7 策略配额限制。设置为 null 表示使用部署默认配额。设置为 -1 表示无限制。

l7rule (可选)

body

整数

配置的 l7 规则配额限制。设置为 null 表示使用部署默认配额。设置为 -1 表示无限制。

listener

body

整数

配置的监听器配额限制。设置为 null 表示使用部署默认配额。设置为 -1 表示无限制。

loadbalancer

body

整数

配置的负载均衡器配额限制。设置为 null 表示使用部署默认配额。设置为 -1 表示无限制。

member(成员)

body

整数

配置的成员配额限制。设置为 null 表示使用部署默认配额。设置为 -1 表示无限制。

pool

body

整数

配置的池配额限制。设置为 null 表示使用部署默认配额。设置为 -1 表示无限制。

project_id

路径

字符串

要查询的项目 ID。

请求示例

{
    "quota": {
        "loadbalancer": 10,
        "listener": -1,
        "member": 50,
        "pool": -1,
        "healthmonitor": -1,
        "l7policy": 15,
        "l7rule": 25
    }
}

Curl 示例

curl -X PUT -H "Content-Type: application/json" -H "X-Auth-Token: <token>" -d '{"quota":{"loadbalancer":10,"listener":-1,"member":50,"pool":-1,"healthmonitor":-1,"l7policy":15,"l7rule":25}}' http://198.51.100.10:9876/v2/lbaas/quotas/e3cd678b11784734bc366148aa37580e

响应参数

名称

入参

类型

描述

healthmonitor

body

整数

配置的健康监视器配额限制。设置为 null 表示使用部署默认配额。设置为 -1 表示无限制。

l7policy

body

整数

配置的 l7 策略配额限制。设置为 null 表示使用部署默认配额。设置为 -1 表示无限制。

l7rule

body

整数

配置的 l7 规则配额限制。设置为 null 表示使用部署默认配额。设置为 -1 表示无限制。

listener

body

整数

配置的监听器配额限制。设置为 null 表示使用部署默认配额。设置为 -1 表示无限制。

loadbalancer

body

整数

配置的负载均衡器配额限制。设置为 null 表示使用部署默认配额。设置为 -1 表示无限制。

member(成员)

body

整数

配置的成员配额限制。设置为 null 表示使用部署默认配额。设置为 -1 表示无限制。

pool

body

整数

配置的池配额限制。设置为 null 表示使用部署默认配额。设置为 -1 表示无限制。

响应示例

{
    "quota": {
        "loadbalancer": 10,
        "listener": -1,
        "member": 50,
        "pool": -1,
        "healthmonitor": -1,
        "l7policy": 15,
        "l7rule": 25
    }
}
DELETE
/v2/lbaas/quotas/{project_id}

重置配额

将项目配额重置为使用部署的默认配额。

成功

代码

原因

204 - No Content

请求已满足,但服务未返回任何内容。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

由于凭据无效,访问被拒绝。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

409 - Conflict

此资源有一个正在进行的操作,与此请求冲突。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

请求

名称

入参

类型

描述

project_id

路径

字符串

要查询的项目 ID。

Curl 示例

curl -X DELETE -H "X-Auth-Token: <token>" http://198.51.100.10:9876/v2/lbaas/quotas/e3cd678b11784734bc366148aa37580e

响应

成功的 DELETE 请求没有响应正文内容。

提供商

GET
/v2/lbaas/providers

列出提供商

列出所有启用的提供商驱动程序。

使用 fields 查询参数来控制响应体中返回的字段。

列表可能为空。

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

由于凭据无效,访问被拒绝。

403 - 禁止

策略不允许当前用户执行此操作。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

请求

名称

入参

类型

描述

fields (可选)

查询

字符串

您希望服务器返回的字段。如果未指定 fields 查询参数,则 octavia API 将返回策略设置允许的所有属性。通过使用 fields 参数,API 将仅返回请求的属性集。 fields 参数可以指定多次。例如,如果在请求 URL 中指定 fields=id&fields=name,则仅返回 idname 属性。

Curl 示例

curl -X GET -H "X-Auth-Token: <token>" http://198.51.100.10:9876/v2/lbaas/providers

响应参数

名称

入参

类型

描述

name

body

字符串

提供商名称。

description

body

字符串

提供商描述。

响应示例

{
    "providers": [
        {
            "name": "amphora",
            "description": "The Octavia Amphora driver."
        },
        {
            "name": "octavia",
            "description": "Deprecated alias of the Octavia Amphora driver."
        }
    ]
}
GET
/v2/lbaas/providers/{provider}/flavor_capabilities

显示提供商的flavor功能

显示提供商驱动程序的 flavor 功能。这些是可在 Octavia flavor 中配置的提供商驱动程序的功能。此 API 返回一个字典列表,其中包含提供商每个 flavor 功能的名称和描述。

列表可能为空,提供商驱动程序可能未实现此功能。

版本 2.6 新增

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

由于凭据无效,访问被拒绝。

403 - 禁止

策略不允许当前用户执行此操作。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

请求

名称

入参

类型

描述

fields (可选)

查询

字符串

您希望服务器返回的字段。如果未指定 fields 查询参数,则 octavia API 将返回策略设置允许的所有属性。通过使用 fields 参数,API 将仅返回请求的属性集。 fields 参数可以指定多次。例如,如果在请求 URL 中指定 fields=id&fields=name,则仅返回 idname 属性。

provider

路径

字符串

要查询的提供商。

Curl 示例

curl -X GET -H "X-Auth-Token: <token>" http://198.51.100.10:9876/v2/lbaas/providers/amphora/flavor_capabilities

响应参数

名称

入参

类型

描述

flavor_capabilities

body

对象

提供商的 flavor 功能字典对象。

name

body

字符串

提供商 flavor 功能的名称。

description

body

字符串

提供商 flavor 功能的描述。

响应示例

{
  "flavor_capabilities": [
    {
      "name": "loadbalancer_topology",
      "description": "The load balancer topology. One of: SINGLE - One amphora per load balancer. ACTIVE_STANDBY - Two amphora per load balancer."
    }
  ]
}
GET
/v2/lbaas/providers/{provider}/availability_zone_capabilities

显示提供商的可用区功能

显示提供商驱动程序的可用区功能。这些是可在 Octavia 可用区中配置的提供商驱动程序的功能。此 API 返回一个字典列表,其中包含提供商每个可用区功能的功能名称和描述。

列表可能为空,提供商驱动程序可能未实现此功能。

版本 2.14 新增

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

由于凭据无效,访问被拒绝。

403 - 禁止

策略不允许当前用户执行此操作。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

请求

名称

入参

类型

描述

fields (可选)

查询

字符串

您希望服务器返回的字段。如果未指定 fields 查询参数,则 octavia API 将返回策略设置允许的所有属性。通过使用 fields 参数,API 将仅返回请求的属性集。 fields 参数可以指定多次。例如,如果在请求 URL 中指定 fields=id&fields=name,则仅返回 idname 属性。

provider

路径

字符串

要查询的提供商。

Curl 示例

curl -X GET -H "X-Auth-Token: <token>" http://198.51.100.10:9876/v2/lbaas/providers/amphora/availability_zone_capabilities

响应参数

名称

入参

类型

描述

availability_zone_capabilities

body

对象

提供商可用区功能字典对象。

name

body

字符串

提供商可用区功能的名称。

description

body

字符串

提供商可用区功能的描述。

响应示例

{
  "availability_zone_capabilities": [
    {
      "name": "compute_zone",
      "description": "The compute availability zone."
    },
    {
      "name": "volume_zone",
      "description": "The volume availability zone."
    }
  ]
}

规格

GET
/v2.0/lbaas/flavors

列出风味

列出所有可用的 flavors。

使用 fields 查询参数来控制响应体中返回的字段。此外,您还可以使用查询字符串参数过滤结果。有关信息,请参阅 过滤和列选择

列表可能为空。

版本 2.6 新增

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

由于凭据无效,访问被拒绝。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

请求

名称

入参

类型

描述

fields (可选)

查询

字符串

您希望服务器返回的字段。如果未指定 fields 查询参数,则 octavia API 将返回策略设置允许的所有属性。通过使用 fields 参数,API 将仅返回请求的属性集。 fields 参数可以指定多次。例如,如果在请求 URL 中指定 fields=id&fields=name,则仅返回 idname 属性。

Curl 示例

curl -X GET -H "X-Auth-Token: <token>" http://198.51.100.10:9876/v2.0/lbaas/flavors

响应参数

名称

入参

类型

描述

description

body

字符串

资源的易于阅读的描述。

enabled

body

布尔值

资源是否可供使用。

flavor_profile_id

body

uuid

Flavor profile 的 ID。

flavors

body

数组

一个 flavor 对象列表。

id

body

uuid

flavor 的 ID。

name

body

字符串

资源的易于阅读的名称。

响应示例

{
    "flavors": [
        {
            "id": "8f94060c-8d5b-4472-9cfd-e8a2b909481d",
            "name": "Basic",
            "description": "A basic standalone Octavia load balancer.",
            "enabled": true,
            "flavor_profile_id": "5712097e-0092-45dc-bff0-ab68b61ad51a"
        }
    ]
}
POST
/v2.0/lbaas/flavors

创建 flavor

创建flavor。

如果 API 由于数据不足或数据无效而无法满足请求,则服务将返回 HTTP Bad Request (400) 响应代码,并在响应体中提供失败信息。验证错误要求您纠正错误并重新提交请求。

如果您不是管理员用户,则服务将返回 HTTP Forbidden (403) 响应代码。

版本 2.6 新增

成功

代码

原因

201 - 已创建

请求已完成,并创建了新资源。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

由于凭据无效,访问被拒绝。

403 - 禁止

策略不允许当前用户执行此操作。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

请求

名称

入参

类型

描述

description (可选)

body

字符串

资源的易于阅读的描述。

enabled(可选)

body

布尔值

资源是否可供使用。默认为 True。

flavor

body

对象

一个 flavor 对象。

flavor_profile_id

body

uuid

Flavor profile 的 ID。

name

body

字符串

资源的易于阅读的名称。

请求示例

{
    "flavor": {
        "name": "Basic",
        "description": "A basic standalone Octavia load balancer.",
        "enabled": true,
        "flavor_profile_id": "5712097e-0092-45dc-bff0-ab68b61ad51a"
    }
}

Curl 示例

curl -X POST -H "Content-Type: application/json" -H "X-Auth-Token: <token>" -d '{"flavor":{"name":"Basic","description":"A basic standalone Octavia load balancer.","enabled":true,"flavor_profile_id":"5712097e-0092-45dc-bff0-ab68b61ad51a"}}' http://198.51.100.10:9876/v2.0/lbaas/flavors

响应参数

名称

入参

类型

描述

description

body

字符串

资源的易于阅读的描述。

enabled

body

布尔值

资源是否可供使用。

flavor_profile_id

body

uuid

Flavor profile 的 ID。

flavor

body

对象

一个 flavor 对象。

id

body

uuid

flavor 的 ID。

name

body

字符串

资源的易于阅读的名称。

响应示例

{
    "flavor": {
            "id": "8f94060c-8d5b-4472-9cfd-e8a2b909481d",
            "name": "Basic",
            "description": "A basic standalone Octavia load balancer.",
            "enabled": true,
            "flavor_profile_id": "5712097e-0092-45dc-bff0-ab68b61ad51a"
    }
}
GET
/v2.0/lbaas/flavors/{flavor_id}

显示 flavor 详细信息

显示 flavor 的详细信息。

使用 fields 查询参数来控制响应体中返回的字段。此外,您还可以使用查询字符串参数过滤结果。有关信息,请参阅 过滤和列选择

此操作不需要请求正文。

版本 2.6 新增

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

401 - 未授权

由于凭据无效,访问被拒绝。

404 - Not Found

找不到请求的资源。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

请求

名称

入参

类型

描述

fields (可选)

查询

字符串

您希望服务器返回的字段。如果未指定 fields 查询参数,则 octavia API 将返回策略设置允许的所有属性。通过使用 fields 参数,API 将仅返回请求的属性集。 fields 参数可以指定多次。例如,如果在请求 URL 中指定 fields=id&fields=name,则仅返回 idname 属性。

flavor_id

路径

uuid

要查询的 flavor 的 ID。

Curl 示例

curl -X GET -H "X-Auth-Token: <token>" http://198.51.100.10:9876/v2.0/lbaas/flavors/8f94060c-8d5b-4472-9cfd-e8a2b909481d

响应参数

名称

入参

类型

描述

description

body

字符串

资源的易于阅读的描述。

enabled

body

布尔值

资源是否可供使用。

flavor_profile_id

body

uuid

Flavor profile 的 ID。

flavor

body

对象

一个 flavor 对象。

id

body

uuid

flavor 的 ID。

name

body

字符串

资源的易于阅读的名称。

响应示例

{
    "flavor": {
            "id": "8f94060c-8d5b-4472-9cfd-e8a2b909481d",
            "name": "Basic",
            "description": "A basic standalone Octavia load balancer.",
            "enabled": true,
            "flavor_profile_id": "5712097e-0092-45dc-bff0-ab68b61ad51a"
    }
}
PUT
/v2.0/lbaas/flavors/{flavor_id}

更新 flavor

更新 flavor。

如果您不是管理员用户,则服务将返回 HTTP Forbidden (403) 响应代码。

版本 2.6 新增

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

由于凭据无效,访问被拒绝。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

请求

名称

入参

类型

描述

description (可选)

body

字符串

资源的易于阅读的描述。

enabled(可选)

body

布尔值

资源是否可供使用。默认为 True。

flavor

body

对象

一个 flavor 对象。

flavor_id

路径

uuid

要查询的 flavor 的 ID。

name (可选)

body

字符串

资源的易于阅读的名称。

请求示例

{
    "flavor": {
        "name": "Basic",
        "description": "A basic standalone Octavia load balancer.",
        "enabled": false
    }
}

Curl 示例

curl -X PUT -H "Content-Type: application/json" -H "X-Auth-Token: <token>" -d '{"flavor":{"name":"Basic","description":"A basic standalone Octavia load balancer.","enabled":false}}' http://198.51.100.10:9876/v2.0/lbaas/flavors/8f94060c-8d5b-4472-9cfd-e8a2b909481d

响应参数

名称

入参

类型

描述

description

body

字符串

资源的易于阅读的描述。

enabled

body

布尔值

资源是否可供使用。

flavor_profile_id

body

uuid

Flavor profile 的 ID。

flavor

body

对象

一个 flavor 对象。

id

body

uuid

flavor 的 ID。

name

body

字符串

资源的易于阅读的名称。

响应示例

{
    "flavor": {
            "id": "8f94060c-8d5b-4472-9cfd-e8a2b909481d",
            "name": "Basic",
            "description": "A basic standalone Octavia load balancer.",
            "enabled": false,
            "flavor_profile_id": "5712097e-0092-45dc-bff0-ab68b61ad51a"
    }
}
DELETE
/v2.0/lbaas/flavors/{flavor_id}

移除 flavor

移除 flavor 及其关联配置。

如果任何负载均衡器正在使用此 flavor,则服务将返回 HTTP Conflict (409) 响应代码。

如果您不是管理员用户,则服务将返回 HTTP Forbidden (403) 响应代码。

版本 2.6 新增

成功

代码

原因

204 - No Content

请求已满足,但服务未返回任何内容。

错误

代码

原因

401 - 未授权

由于凭据无效,访问被拒绝。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

409 - Conflict

此资源有一个正在进行的操作,与此请求冲突。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

请求

名称

入参

类型

描述

flavor_id

路径

uuid

要查询的 flavor 的 ID。

Curl 示例

curl -X DELETE -H "X-Auth-Token: <token>" http://198.51.100.10:9876/v2.0/lbaas/flavors/8f94060c-8d5b-4472-9cfd-e8a2b909481d

响应

成功的 DELETE 请求没有响应正文内容。

Flavor 配置文件

GET
/v2.0/lbaas/flavorprofiles

列出 Flavor 配置文件

列出所有可用的 flavor 配置文件。

使用 fields 查询参数来控制响应体中返回的字段。此外,您还可以使用查询字符串参数过滤结果。有关信息,请参阅 过滤和列选择

如果您不是管理员用户,则服务将返回 HTTP Forbidden (403) 响应代码。

列表可能为空。

版本 2.6 新增

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

由于凭据无效,访问被拒绝。

403 - 禁止

策略不允许当前用户执行此操作。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

请求

名称

入参

类型

描述

fields (可选)

查询

字符串

您希望服务器返回的字段。如果未指定 fields 查询参数,则 octavia API 将返回策略设置允许的所有属性。通过使用 fields 参数,API 将仅返回请求的属性集。 fields 参数可以指定多次。例如,如果在请求 URL 中指定 fields=id&fields=name,则仅返回 idname 属性。

Curl 示例

curl -X GET -H "X-Auth-Token: <token>" http://198.51.100.10:9876/v2.0/lbaas/flavorprofiles

响应参数

名称

入参

类型

描述

flavor_data

body

字符串

包含 flavor 元数据的 JSON 字符串。

flavorprofiles

body

数组

一个 flavorprofile 对象列表。

id

body

uuid

Flavor profile 的 ID。

name

body

字符串

资源的易于阅读的名称。

provider_name

body

字符串

提供商名称。

响应示例

{
    "flavorprofiles": [
        {
            "id": "5712097e-0092-45dc-bff0-ab68b61ad51a",
            "name": "amphora-act-stdby",
            "provider_name": "amphora",
            "flavor_data": "{\"loadbalancer_topology\": \"ACTIVE_STANDBY\"}"
        }
    ]
}
POST
/v2.0/lbaas/flavorprofiles

创建 Flavor 配置文件

创建 flavor 配置文件。

如果 API 由于数据不足或数据无效而无法满足请求,则服务将返回 HTTP Bad Request (400) 响应代码,并在响应体中提供失败信息。验证错误要求您纠正错误并重新提交请求。

如果您不是管理员用户,则服务将返回 HTTP Forbidden (403) 响应代码。

版本 2.6 新增

成功

代码

原因

201 - 已创建

请求已完成,并创建了新资源。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

由于凭据无效,访问被拒绝。

403 - 禁止

策略不允许当前用户执行此操作。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

请求

名称

入参

类型

描述

flavor_data

body

字符串

包含 flavor 元数据的 JSON 字符串。

flavorprofile

body

对象

一个 flavorprofile 对象。

name

body

字符串

资源的易于阅读的名称。

provider_name

body

字符串

提供商名称。

请求示例

{
    "flavorprofile":
        {
            "name": "amphora-act-stdby",
            "provider_name": "amphora",
            "flavor_data": "{\"loadbalancer_topology\": \"ACTIVE_STANDBY\"}"
        }
}

Curl 示例

curl -X POST -H "Content-Type: application/json" -H "X-Auth-Token: <token>" -d '{"flavorprofile":{"name":"amphora-act-stdby","provider_name":"amphora","flavor_data":"{\"loadbalancer_topology\": \"ACTIVE_STANDBY\"}"}}' http://198.51.100.10:9876/v2.0/lbaas/flavorprofiles

响应参数

名称

入参

类型

描述

flavor_data

body

字符串

包含 flavor 元数据的 JSON 字符串。

flavorprofile

body

对象

一个 flavorprofile 对象。

id

body

uuid

Flavor profile 的 ID。

name

body

字符串

资源的易于阅读的名称。

provider_name

body

字符串

提供商名称。

响应示例

{
    "flavorprofile":
        {
            "id": "5712097e-0092-45dc-bff0-ab68b61ad51a",
            "name": "amphora-act-stdby",
            "provider_name": "amphora",
            "flavor_data": "{\"loadbalancer_topology\": \"ACTIVE_STANDBY\"}"
        }
}
GET
/v2.0/lbaas/flavorprofiles/{flavorprofile_id}

显示 Flavor 配置文件详细信息

显示 flavor 详细信息的详细信息。

使用 fields 查询参数来控制响应体中返回的字段。此外,您还可以使用查询字符串参数过滤结果。有关信息,请参阅 过滤和列选择

如果您不是管理员用户,则服务将返回 HTTP Forbidden (403) 响应代码。

此操作不需要请求正文。

版本 2.6 新增

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

401 - 未授权

由于凭据无效,访问被拒绝。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

请求

名称

入参

类型

描述

fields (可选)

查询

字符串

您希望服务器返回的字段。如果未指定 fields 查询参数,则 octavia API 将返回策略设置允许的所有属性。通过使用 fields 参数,API 将仅返回请求的属性集。 fields 参数可以指定多次。例如,如果在请求 URL 中指定 fields=id&fields=name,则仅返回 idname 属性。

flavorprofile_id

路径

uuid

要查询的 flavor 配置文件 ID。

Curl 示例

curl -X GET -H "X-Auth-Token: <token>" http://198.51.100.10:9876/v2.0/lbaas/flavorprofiles/5712097e-0092-45dc-bff0-ab68b61ad51a

响应参数

名称

入参

类型

描述

flavor_data

body

字符串

包含 flavor 元数据的 JSON 字符串。

flavorprofile

body

对象

一个 flavorprofile 对象。

id

body

uuid

Flavor profile 的 ID。

name

body

字符串

资源的易于阅读的名称。

provider_name

body

字符串

提供商名称。

响应示例

{
    "flavorprofile":
        {
            "id": "5712097e-0092-45dc-bff0-ab68b61ad51a",
            "name": "amphora-act-stdby",
            "provider_name": "amphora",
            "flavor_data": "{\"loadbalancer_topology\": \"ACTIVE_STANDBY\"}"
        }
}
PUT
/v2.0/lbaas/flavorprofiles/{flavorprofile_id}

更新 Flavor 配置文件

更新 flavor 配置文件。

如果您不是管理员用户,则服务将返回 HTTP Forbidden (403) 响应代码。

版本 2.6 新增

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

由于凭据无效,访问被拒绝。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

请求

名称

入参

类型

描述

flavor_data (可选)

body

字符串

包含 flavor 元数据的 JSON 字符串。

flavorprofile

body

对象

一个 flavorprofile 对象。

flavorprofile_id

路径

uuid

要查询的 flavor 配置文件 ID。

name (可选)

body

字符串

资源的易于阅读的名称。

provider_name (可选)

body

字符串

提供商名称。

请求示例

{
    "flavorprofile":
        {
            "name": "amphora-standalone",
            "provider_name": "amphora",
            "flavor_data": "{\"loadbalancer_topology\": \"SINGLE\"}"
        }
}

Curl 示例

curl -X PUT -H "Content-Type: application/json" -H "X-Auth-Token: <token>" -d '{"flavorprofile":{"name":"amphora-standalone","provider_name":"amphora","flavor_data":"{\"loadbalancer_topology\": \"SINGLE\"}"}}' http://198.51.100.10:9876/v2.0/lbaas/flavorprofiles/5712097e-0092-45dc-bff0-ab68b61ad51a

响应参数

名称

入参

类型

描述

flavor_data

body

字符串

包含 flavor 元数据的 JSON 字符串。

flavorprofile

body

对象

一个 flavorprofile 对象。

id

body

uuid

Flavor profile 的 ID。

name

body

字符串

资源的易于阅读的名称。

provider_name

body

字符串

提供商名称。

响应示例

{
    "flavorprofile":
        {
            "id": "5712097e-0092-45dc-bff0-ab68b61ad51a",
            "name": "amphora-standalone",
            "provider_name": "amphora",
            "flavor_data": "{\"loadbalancer_topology\": \"SINGLE\"}"
        }
}
DELETE
/v2.0/lbaas/flavorprofiles/{flavorprofile_id}

移除 Flavor 配置文件

移除 flavor 配置文件及其关联配置。

如果任何 flavor 正在使用此 flavor 配置文件,则服务将返回 HTTP Conflict (409) 响应代码。

如果您不是管理员用户,则服务将返回 HTTP Forbidden (403) 响应代码。

版本 2.6 新增

成功

代码

原因

204 - No Content

请求已满足,但服务未返回任何内容。

错误

代码

原因

401 - 未授权

由于凭据无效,访问被拒绝。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

409 - Conflict

此资源有一个正在进行的操作,与此请求冲突。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

请求

名称

入参

类型

描述

flavorprofile_id

路径

uuid

要查询的 flavor 配置文件 ID。

Curl 示例

curl -X DELETE -H "X-Auth-Token: <token>" http://198.51.100.10:9876/v2.0/lbaas/flavorprofiles/5712097e-0092-45dc-bff0-ab68b61ad51a

响应

成功的 DELETE 请求没有响应正文内容。

可用区

GET
/v2.0/lbaas/availabilityzones

列出可用区

列出所有可用的可用区。

使用 fields 查询参数来控制响应体中返回的字段。此外,您还可以使用查询字符串参数过滤结果。有关信息,请参阅 过滤和列选择

列表可能为空。

版本 2.14 新增

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

由于凭据无效,访问被拒绝。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

请求

名称

入参

类型

描述

fields (可选)

查询

字符串

您希望服务器返回的字段。如果未指定 fields 查询参数,则 octavia API 将返回策略设置允许的所有属性。通过使用 fields 参数,API 将仅返回请求的属性集。 fields 参数可以指定多次。例如,如果在请求 URL 中指定 fields=id&fields=name,则仅返回 idname 属性。

Curl 示例

curl -X GET -H "X-Auth-Token: <token>" http://198.51.100.10:9876/v2.0/lbaas/availabilityzones

响应参数

名称

入参

类型

描述

description

body

字符串

资源的易于阅读的描述。

enabled

body

布尔值

资源是否可供使用。

availability_zone_profile_id

body

uuid

可用区配置的 ID。

availability_zones

body

数组

一个 availability zone 对象列表。

name

body

字符串

资源的易于阅读的名称。

响应示例

{
    "availability_zones": [
        {
            "name": "my_az",
            "description": "My availability zone.",
            "enabled": true,
            "availability_zone_profile_id": "5712097e-0092-45dc-bff0-ab68b61ad51a"
        }
    ]
}
POST
/v2.0/lbaas/availabilityzones

创建可用区

创建可用区。

如果 API 由于数据不足或数据无效而无法满足请求,则服务将返回 HTTP Bad Request (400) 响应代码,并在响应体中提供失败信息。验证错误要求您纠正错误并重新提交请求。

如果您不是管理员用户,则服务将返回 HTTP Forbidden (403) 响应代码。

版本 2.14 新增

成功

代码

原因

201 - 已创建

请求已完成,并创建了新资源。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

由于凭据无效,访问被拒绝。

403 - 禁止

策略不允许当前用户执行此操作。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

请求

名称

入参

类型

描述

description (可选)

body

字符串

资源的易于阅读的描述。

enabled(可选)

body

布尔值

资源是否可供使用。默认为 True。

availability_zone

body

对象

一个可用区对象。

availability_zone_profile_id

body

uuid

可用区配置的 ID。

name

body

字符串

资源的易于阅读的名称。

请求示例

{
    "availability_zone": {
        "name": "my_az",
        "description": "My availability zone.",
        "enabled": true,
        "availability_zone_profile_id": "5712097e-0092-45dc-bff0-ab68b61ad51a"
    }
}

Curl 示例

curl -X POST -H "Content-Type: application/json" -H "X-Auth-Token: <token>" -d '{"availability_zone":{"name":"my_az","description":"My availability zone.","enabled":true,"availability_zone_profile_id":"5712097e-0092-45dc-bff0-ab68b61ad51a"}}' http://198.51.100.10:9876/v2.0/lbaas/availabilityzones

响应参数

名称

入参

类型

描述

description

body

字符串

资源的易于阅读的描述。

enabled

body

布尔值

资源是否可供使用。

availability_zone_profile_id

body

uuid

可用区配置的 ID。

availability_zone

body

对象

一个可用区对象。

name

body

字符串

资源的易于阅读的名称。

响应示例

{
    "availability_zone": {
        "name": "my_az",
        "description": "My availability zone.",
        "enabled": true,
        "availability_zone_profile_id": "5712097e-0092-45dc-bff0-ab68b61ad51a"
    }
}
GET
/v2.0/lbaas/availabilityzones/{availability_zone_name}

显示可用区详细信息

显示可用区的详细信息。

使用 fields 查询参数来控制响应体中返回的字段。此外,您还可以使用查询字符串参数过滤结果。有关信息,请参阅 过滤和列选择

此操作不需要请求正文。

版本 2.14 新增

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

401 - 未授权

由于凭据无效,访问被拒绝。

404 - Not Found

找不到请求的资源。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

请求

名称

入参

类型

描述

fields (可选)

查询

字符串

您希望服务器返回的字段。如果未指定 fields 查询参数,则 octavia API 将返回策略设置允许的所有属性。通过使用 fields 参数,API 将仅返回请求的属性集。 fields 参数可以指定多次。例如,如果在请求 URL 中指定 fields=id&fields=name,则仅返回 idname 属性。

availability_zone_name

路径

字符串

要查询的可用区的名称。

Curl 示例

curl -X GET -H "X-Auth-Token: <token>" http://198.51.100.10:9876/v2.0/lbaas/availabilityzones/my_az

响应参数

名称

入参

类型

描述

description

body

字符串

资源的易于阅读的描述。

enabled

body

布尔值

资源是否可供使用。

availability_zone_profile_id

body

uuid

可用区配置的 ID。

availability_zone

body

对象

一个可用区对象。

name

body

字符串

资源的易于阅读的名称。

响应示例

{
    "availability_zone": {
        "name": "my_az",
        "description": "My availability zone.",
        "enabled": true,
        "availability_zone_profile_id": "5712097e-0092-45dc-bff0-ab68b61ad51a"
    }
}
PUT
/v2.0/lbaas/availabilityzones/{availability_zone_name}

更新可用区

更新可用区。

如果您不是管理员用户,则服务将返回 HTTP Forbidden (403) 响应代码。

版本 2.14 新增

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

由于凭据无效,访问被拒绝。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

请求

名称

入参

类型

描述

description (可选)

body

字符串

资源的易于阅读的描述。

enabled(可选)

body

布尔值

资源是否可供使用。默认为 True。

availability_zone

body

对象

一个可用区对象。

availability_zone_name

路径

字符串

要查询的可用区的名称。

请求示例

{
    "availability_zone": {
        "description": "My availability zone.",
        "enabled": false
    }
}

Curl 示例

curl -X PUT -H "Content-Type: application/json" -H "X-Auth-Token: <token>" -d '{"availability_zone":{"description":"My availability zone.","enabled":false}}' http://198.51.100.10:9876/v2.0/lbaas/availabilityzones/my_az

响应参数

名称

入参

类型

描述

description

body

字符串

资源的易于阅读的描述。

enabled

body

布尔值

资源是否可供使用。

availability_zone_profile_id

body

uuid

可用区配置的 ID。

availability_zone

body

对象

一个可用区对象。

name

body

字符串

资源的易于阅读的名称。

响应示例

{
    "availability_zone": {
        "name": "my_az",
        "description": "My availability zone.",
        "enabled": false,
        "availability_zone_profile_id": "5712097e-0092-45dc-bff0-ab68b61ad51a"
    }
}
DELETE
/v2.0/lbaas/availabilityzones/{availability_zone_name}

移除可用区

移除可用区及其关联配置。

如果任何负载均衡器正在使用此可用区,则服务将返回 HTTP Conflict (409) 响应代码。

如果您不是管理员用户,则服务将返回 HTTP Forbidden (403) 响应代码。

版本 2.14 新增

成功

代码

原因

204 - No Content

请求已满足,但服务未返回任何内容。

错误

代码

原因

401 - 未授权

由于凭据无效,访问被拒绝。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

409 - Conflict

此资源有一个正在进行的操作,与此请求冲突。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

请求

名称

入参

类型

描述

availability_zone_name

路径

字符串

要查询的可用区的名称。

Curl 示例

curl -X DELETE -H "X-Auth-Token: <token>" http://198.51.100.10:9876/v2.0/lbaas/availabilityzones/my_az

响应

成功的 DELETE 请求没有响应正文内容。

可用区配置文件

GET
/v2.0/lbaas/availabilityzoneprofiles

列出可用区配置文件

列出所有可用的可用区配置文件。

使用 fields 查询参数来控制响应体中返回的字段。此外,您还可以使用查询字符串参数过滤结果。有关信息,请参阅 过滤和列选择

如果您不是管理员用户,则服务将返回 HTTP Forbidden (403) 响应代码。

列表可能为空。

版本 2.14 新增

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

由于凭据无效,访问被拒绝。

403 - 禁止

策略不允许当前用户执行此操作。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

请求

名称

入参

类型

描述

fields (可选)

查询

字符串

您希望服务器返回的字段。如果未指定 fields 查询参数,则 octavia API 将返回策略设置允许的所有属性。通过使用 fields 参数,API 将仅返回请求的属性集。 fields 参数可以指定多次。例如,如果在请求 URL 中指定 fields=id&fields=name,则仅返回 idname 属性。

Curl 示例

curl -X GET -H "X-Auth-Token: <token>" http://198.51.100.10:9876/v2.0/lbaas/availabilityzoneprofiles

响应参数

名称

入参

类型

描述

availability_zone_data

body

字符串

包含可用区元数据的 JSON 字符串。

availability_zone_profiles

body

数组

一个 availability zone profile 对象的列表。

id

body

uuid

可用区配置的 ID。

name

body

字符串

资源的易于阅读的名称。

provider_name

body

字符串

提供商名称。

响应示例

{
    "availability_zone_profiles": [
        {
            "id": "5712097e-0092-45dc-bff0-ab68b61ad51a",
            "name": "some_az",
            "provider_name": "amphora",
            "availability_zone_data": "{\"compute_zone\": \"az1\", \"volume_zone\": \"az2\"}"
        }
    ]
}
POST
/v2.0/lbaas/availabilityzoneprofiles

创建可用区配置

创建可用区配置。

如果 API 由于数据不足或数据无效而无法满足请求,则服务将返回 HTTP Bad Request (400) 响应代码,并在响应体中提供失败信息。验证错误要求您纠正错误并重新提交请求。

如果您不是管理员用户,则服务将返回 HTTP Forbidden (403) 响应代码。

版本 2.14 新增

成功

代码

原因

201 - 已创建

请求已完成,并创建了新资源。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

由于凭据无效,访问被拒绝。

403 - 禁止

策略不允许当前用户执行此操作。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

请求

名称

入参

类型

描述

availability_zone_data

body

字符串

包含可用区元数据的 JSON 字符串。

availability_zone_profile

body

对象

一个 availability zone profile 对象。

name

body

字符串

资源的易于阅读的名称。

provider_name

body

字符串

提供商名称。

请求示例

{
    "availability_zone_profile":
        {
            "name": "some_az",
            "provider_name": "amphora",
            "availability_zone_data": "{\"compute_zone\": \"az1\", \"volume_zone\": \"az1\"}"
        }
}

Curl 示例

curl -X POST -H "Content-Type: application/json" -H "X-Auth-Token: <token>" -d '{"availability_zone_profile":{"name":"some_az","provider_name":"amphora","availability_zone_data":"{\"compute_zone\": \"az1\"}"}}' http://198.51.100.10:9876/v2.0/lbaas/availabilityzoneprofiles

响应参数

名称

入参

类型

描述

availability_zone_data

body

字符串

包含可用区元数据的 JSON 字符串。

availability_zone_profile

body

对象

一个 availability zone profile 对象。

id

body

uuid

可用区配置的 ID。

name

body

字符串

资源的易于阅读的名称。

provider_name

body

字符串

提供商名称。

响应示例

{
    "availability_zone_profile":
        {
            "id": "5712097e-0092-45dc-bff0-ab68b61ad51a",
            "name": "some_az",
            "provider_name": "amphora",
            "availability_zone_data": "{\"compute_zone\": \"az1\", \"volume_zone\": \"az1\"}"
        }
}
GET
/v2.0/lbaas/availabilityzoneprofiles/{availability_zone_profile_id}

显示可用区配置详情

显示可用区配置的详细信息。

使用 fields 查询参数来控制响应体中返回的字段。此外,您还可以使用查询字符串参数过滤结果。有关信息,请参阅 过滤和列选择

如果您不是管理员用户,则服务将返回 HTTP Forbidden (403) 响应代码。

此操作不需要请求正文。

版本 2.14 新增

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

401 - 未授权

由于凭据无效,访问被拒绝。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

请求

名称

入参

类型

描述

fields (可选)

查询

字符串

您希望服务器返回的字段。如果未指定 fields 查询参数,则 octavia API 将返回策略设置允许的所有属性。通过使用 fields 参数,API 将仅返回请求的属性集。 fields 参数可以指定多次。例如,如果在请求 URL 中指定 fields=id&fields=name,则仅返回 idname 属性。

availability_zone_profile_id

路径

uuid

要查询的可用区配置的 ID。

Curl 示例

curl -X GET -H "X-Auth-Token: <token>" http://198.51.100.10:9876/v2.0/lbaas/availabilityzoneprofiles/5712097e-0092-45dc-bff0-ab68b61ad51a

响应参数

名称

入参

类型

描述

availability_zone_data

body

字符串

包含可用区元数据的 JSON 字符串。

availability_zone_profile

body

对象

一个 availability zone profile 对象。

id

body

uuid

可用区配置的 ID。

name

body

字符串

资源的易于阅读的名称。

provider_name

body

字符串

提供商名称。

响应示例

{
    "availability_zone_profile":
        {
            "id": "5712097e-0092-45dc-bff0-ab68b61ad51a",
            "name": "some_az",
            "provider_name": "amphora",
            "availability_zone_data": "{\"compute_zone\": \"az1\", \"volume_zone\": \"az1\"}"
        }
}
PUT
/v2.0/lbaas/availabilityzoneprofiles/{availability_zone_profile_id}

更新可用区配置

更新可用区配置。

如果您不是管理员用户,则服务将返回 HTTP Forbidden (403) 响应代码。

版本 2.14 新增

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

由于凭据无效,访问被拒绝。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

请求

名称

入参

类型

描述

availability_zone_data (可选)

body

字符串

包含可用区元数据的 JSON 字符串。

availability_zone_profile

body

对象

一个 availability zone profile 对象。

availability_zone_profile_id

路径

uuid

要查询的可用区配置的 ID。

name (可选)

body

字符串

资源的易于阅读的名称。

provider_name (可选)

body

字符串

提供商名称。

请求示例

{
    "availability_zone_profile":
        {
            "name": "other_az",
            "provider_name": "amphora",
            "availability_zone_data": "{\"compute_zone\": \"az2\", \"volume_zone\": \"az2\"}"
        }
}

Curl 示例

curl -X PUT -H "Content-Type: application/json" -H "X-Auth-Token: <token>" -d '{"availability_zone_profile":{"name":"other_az","provider_name":"amphora","availability_zone_data":"{\"compute_zone\": \"az2\"}"}}' http://198.51.100.10:9876/v2.0/lbaas/availabilityzoneprofiles/5712097e-0092-45dc-bff0-ab68b61ad51a

响应参数

名称

入参

类型

描述

availability_zone_data

body

字符串

包含可用区元数据的 JSON 字符串。

availability_zone_profile

body

对象

一个 availability zone profile 对象。

id

body

uuid

可用区配置的 ID。

name

body

字符串

资源的易于阅读的名称。

provider_name

body

字符串

提供商名称。

响应示例

{
    "availability_zone_profile":
        {
            "id": "5712097e-0092-45dc-bff0-ab68b61ad51a",
            "name": "other_az",
            "provider_name": "amphora",
            "availability_zone_data": "{\"compute_zone\": \"az2\", \"volume_zone\": \"az2\"}"
        }
}
DELETE
/v2.0/lbaas/availabilityzoneprofiles/{availability_zone_profile_id}

移除可用区配置

移除可用区配置及其关联配置。

如果任何可用区正在使用此可用区配置,服务将返回 HTTP Conflict (409) 响应代码。

如果您不是管理员用户,则服务将返回 HTTP Forbidden (403) 响应代码。

版本 2.14 新增

成功

代码

原因

204 - No Content

请求已满足,但服务未返回任何内容。

错误

代码

原因

401 - 未授权

由于凭据无效,访问被拒绝。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

409 - Conflict

此资源有一个正在进行的操作,与此请求冲突。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

请求

名称

入参

类型

描述

availability_zone_profile_id

路径

uuid

要查询的可用区配置的 ID。

Curl 示例

curl -X DELETE -H "X-Auth-Token: <token>" http://198.51.100.10:9876/v2.0/lbaas/availabilityzoneprofiles/5712097e-0092-45dc-bff0-ab68b61ad51a

响应

成功的 DELETE 请求没有响应正文内容。

Amphorae

GET
/v2/octavia/amphorae

列出 Amphora

列出项目的所有 amphora。

如果您不是管理员用户,服务将返回 HTTP Forbidden (403) 响应代码。

使用 fields 查询参数来控制响应体中返回的字段。此外,您还可以使用查询字符串参数过滤结果。有关信息,请参阅 过滤和列选择

列表可能为空。

注意

字段 cached_zone 仅用于快速过滤和参考,因为它可能已过时。如果需要最新的区域信息,我们建议直接从计算服务检索详细信息。

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

由于凭据无效,访问被拒绝。

403 - 禁止

策略不允许当前用户执行此操作。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

请求

名称

入参

类型

描述

fields (可选)

查询

字符串

您希望服务器返回的字段。如果未指定 fields 查询参数,则 octavia API 将返回策略设置允许的所有属性。通过使用 fields 参数,API 将仅返回请求的属性集。 fields 参数可以指定多次。例如,如果在请求 URL 中指定 fields=id&fields=name,则仅返回 idname 属性。

Curl 示例

curl -X GET -H "X-Auth-Token: <token>" http://198.51.100.10:9876/v2/octavia/amphorae?loadbalancer_id=09eedfc6-2c55-41a8-a75c-2cd4e95212ca

响应参数

名称

入参

类型

描述

id

body

uuid

关联的 amphora ID。

loadbalancer_id

body

uuid

负载均衡器的 ID。

compute_id

body

uuid

计算系统中的 amphora 资源的 ID。

lb_network_ip

body

字符串

amphora 的管理 IP。

vrrp_ip

body

字符串

amphora 上 vrrp 端口的地址。

ha_ip

body

字符串

虚拟 IP (VIP) 的 IP 地址。

vrrp_port_id

body

uuid

网络系统中的 vrrp 端口的 ID。

ha_port_id

body

uuid

虚拟 IP (VIP) 端口的 ID。

cert_expiration

body

字符串

amphora 证书的到期日期。

cert_busy

body

字符串

证书是否正在被替换。

role

body

字符串

amphora 的角色。可以是 STANDALONEMASTERBACKUP 之一。

status

body

字符串

amphora 的状态。可以是:BOOTINGALLOCATEDREADYPENDING_CREATEPENDING_DELETEDELETEDERROR

vrrp_interface

body

字符串

amphora 上 vrrp 端口的绑定接口名称。

vrrp_id

body

字符串

amphora 的 vrrp 组 ID。

vrrp_priority

body

字符串

amphora 在 vrrp 组中的优先级。

cached_zone

body

字符串

在创建时缓存的计算实例的可用区。此信息不保证是最新的。如果计算服务不使用区域,则可能为空字符串。

created_at

body

字符串

资源创建的 UTC 日期和时间戳。

updated_at

body

字符串

上次更新资源的 UTC 日期和时间戳。

image_id

body

uuid

用于 amphora 的 glance 镜像 ID。

新增于版本 2.1

compute_flavor

body

字符串

用于 amphora 的计算 flavor ID。

版本 2.3 新增

响应示例

{
    "amphorae": [
        {
            "id": "6bd55cd3-802e-447e-a518-1e74e23bb106",
            "load_balancer_id": "09eedfc6-2c55-41a8-a75c-2cd4e95212ca",
            "compute_id": "f0f79f90-733d-417a-8d70-cc6be62cd54d",
            "lb_network_ip": "192.168.1.2",
            "vrrp_ip": "192.168.1.5",
            "ha_ip": "192.168.1.10",
            "vrrp_port_id": "ab2a8add-76a9-44bb-89f8-88430193cc83",
            "ha_port_id": "19561fd3-5da5-46cc-bdd3-99bbdf7246e6",
            "cert_expiration": "2019-09-19 00:34:51",
            "cert_busy": 0,
            "role": "MASTER",
            "status": "ALLOCATED",
            "vrrp_interface": "eth1",
            "vrrp_id": 1,
            "vrrp_priority": 100,
            "cached_zone": "zone1",
            "created_at": "2017-05-10T18:14:44",
            "updated_at": "2017-05-10T23:08:12",
            "image_id": "c1c2ad6f-1c1e-4744-8d1a-d0ef36289e74",
            "compute_flavor": "5446a14a-abec-4455-bc0e-a34e5ff001a3"
        },
        {
            "id": "89c186a3-cb16-497b-b099-c4bd40316642",
            "load_balancer_id": "09eedfc6-2c55-41a8-a75c-2cd4e95212ca",
            "compute_id": "24b1cb54-122d-4960-9035-083642f5c2bb",
            "lb_network_ip": "192.168.1.3",
            "vrrp_ip": "192.168.1.6",
            "ha_ip": "192.168.1.10",
            "vrrp_port_id": "cae421f6-dcf0-4866-9438-d0c682645799",
            "ha_port_id": "19561fd3-5da5-46cc-bdd3-99bbdf7246e6",
            "cert_expiration": "2019-09-19 00:34:51",
            "cert_busy": 0,
            "role": "BACKUP",
            "status": "ALLOCATED",
            "vrrp_interface": "eth1",
            "vrrp_id": 1,
            "vrrp_priority": 200,
            "cached_zone": "zone2",
            "created_at": "2017-06-11T19:15:45",
            "updated_at": "2017-06-11T24:09:13",
            "image_id": "1014292d-cbaa-4ad6-b38b-2e138389f87f",
            "compute_flavor": "5446a14a-abec-4455-bc0e-a34e5ff001a3"
        }
    ]
}
GET
/v2/octavia/amphorae/{amphora_id}

显示 Amphora 详情

显示 amphora 的详细信息。

如果您不是管理员用户,服务将返回 HTTP Forbidden (403) 响应代码。

此操作不需要请求正文。

注意

字段 cached_zone 仅用于快速过滤和参考,因为它可能已过时。如果需要最新的区域信息,我们建议直接从计算服务检索详细信息。

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

401 - 未授权

由于凭据无效,访问被拒绝。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

请求

名称

入参

类型

描述

fields (可选)

查询

字符串

您希望服务器返回的字段。如果未指定 fields 查询参数,则 octavia API 将返回策略设置允许的所有属性。通过使用 fields 参数,API 将仅返回请求的属性集。 fields 参数可以指定多次。例如,如果在请求 URL 中指定 fields=id&fields=name,则仅返回 idname 属性。

amphora_id

路径

uuid

要查询的 amphora 的 ID。

Curl 示例

curl -X GET -H "X-Auth-Token: <token>" http://198.51.100.10:9876/v2/octavia/amphorae/6bd55cd3-802e-447e-a518-1e74e23bb106

响应参数

名称

入参

类型

描述

id

body

uuid

关联的 amphora ID。

loadbalancer_id

body

uuid

负载均衡器的 ID。

compute_id

body

uuid

计算系统中的 amphora 资源的 ID。

lb_network_ip

body

字符串

amphora 的管理 IP。

vrrp_ip

body

字符串

amphora 上 vrrp 端口的地址。

ha_ip

body

字符串

虚拟 IP (VIP) 的 IP 地址。

vrrp_port_id

body

uuid

网络系统中的 vrrp 端口的 ID。

ha_port_id

body

uuid

虚拟 IP (VIP) 端口的 ID。

cert_expiration

body

字符串

amphora 证书的到期日期。

cert_busy

body

字符串

证书是否正在被替换。

role

body

字符串

amphora 的角色。可以是 STANDALONEMASTERBACKUP 之一。

status

body

字符串

amphora 的状态。可以是:BOOTINGALLOCATEDREADYPENDING_CREATEPENDING_DELETEDELETEDERROR

vrrp_interface

body

字符串

amphora 上 vrrp 端口的绑定接口名称。

vrrp_id

body

字符串

amphora 的 vrrp 组 ID。

vrrp_priority

body

字符串

amphora 在 vrrp 组中的优先级。

cached_zone

body

字符串

在创建时缓存的计算实例的可用区。此信息不保证是最新的。如果计算服务不使用区域,则可能为空字符串。

created_at

body

字符串

资源创建的 UTC 日期和时间戳。

updated_at

body

字符串

上次更新资源的 UTC 日期和时间戳。

image_id

body

uuid

用于 amphora 的 glance 镜像 ID。

新增于版本 2.1

compute_flavor

body

字符串

用于 amphora 的计算 flavor ID。

版本 2.3 新增

响应示例

{
    "amphora": {
        "id": "6bd55cd3-802e-447e-a518-1e74e23bb106",
        "load_balancer_id": "09eedfc6-2c55-41a8-a75c-2cd4e95212ca",
        "compute_id": "f0f79f90-733d-417a-8d70-cc6be62cd54d",
        "lb_network_ip": "192.168.1.2",
        "vrrp_ip": "192.168.1.5",
        "ha_ip": "192.168.1.10",
        "vrrp_port_id": "ab2a8add-76a9-44bb-89f8-88430193cc83",
        "ha_port_id": "19561fd3-5da5-46cc-bdd3-99bbdf7246e6",
        "cert_expiration": "2019-09-19 00:34:51",
        "cert_busy": 0,
        "role": "MASTER",
        "status": "ALLOCATED",
        "vrrp_interface": "eth1",
        "vrrp_id": 1,
        "vrrp_priority": 100,
        "cached_zone": "zone1",
        "created_at": "2017-05-10T18:14:44",
        "updated_at": "2017-05-10T23:08:12",
        "image_id": "c1c2ad6f-1c1e-4744-8d1a-d0ef36289e74",
        "compute_flavor": "5446a14a-abec-4455-bc0e-a34e5ff001a3"
    }
}
GET
/v2/octavia/amphorae/{amphora_id}/stats

显示 Amphora 统计信息

显示 amphora 的统计信息。

如果您不是管理员用户,服务将返回 HTTP Forbidden (403) 响应代码。

使用 fields 查询参数来控制响应体中返回的字段。

版本 2.3 新增

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

由于凭据无效,访问被拒绝。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

请求

名称

入参

类型

描述

amphora_id

路径

uuid

要查询的 amphora 的 ID。

fields (可选)

查询

字符串

您希望服务器返回的字段。如果未指定 fields 查询参数,则 octavia API 将返回策略设置允许的所有属性。通过使用 fields 参数,API 将仅返回请求的属性集。 fields 参数可以指定多次。例如,如果在请求 URL 中指定 fields=id&fields=name,则仅返回 idname 属性。

Curl 示例

curl -X GET -H "X-Auth-Token: <token>" http://198.51.100.10:9876/v2/octavia/amphorae/63d8349e-c4d7-4156-bc94-29260607b04f/stats

响应参数

名称

入参

类型

描述

active_connections

body

整数

当前活动的连接数。

amphora_stats

body

数组

一个 amphora 统计信息的对象列表,每个监听器一个。

版本 2.3 新增

bytes_in

body

整数

接收到的总字节数。

bytes_out

body

整数

发送的总字节数。

id

body

uuid

关联的 amphora ID。

listener_id

body

uuid

监听器的 ID。

loadbalancer_id

body

uuid

负载均衡器的 ID。

request_errors

body

整数

无法完成的总请求数。

total_connections

body

整数

处理的总连接数。

响应示例

{
    "amphora_stats": [
        {
            "active_connections": 48629,
            "bytes_in": 65671420,
            "bytes_out": 774771186,
            "id": "63d8349e-c4d7-4156-bc94-29260607b04f",
            "listener_id": "bbe44114-cda2-4fe0-b192-d9e24ce661db",
            "loadbalancer_id": "65b5a7c3-1437-4909-84cf-cec9f7e371ea",
            "request_errors": 0,
            "total_connections": 26189172
        },
        {
            "active_connections": 0,
            "bytes_in": 5,
            "bytes_out": 100,
            "id": "63d8349e-c4d7-4156-bc94-29260607b04f",
            "listener_id": "af45a658-4eeb-4ce9-8b7e-16b0e5676f87",
            "loadbalancer_id": "65b5a7c3-1437-4909-84cf-cec9f7e371ea",
            "request_errors": 0,
            "total_connections": 1
        }
    ]
}
PUT
/v2/octavia/amphorae/{amphora_id}/config

配置 Amphora

更新 amphora 代理配置。这将把新配置推送到 amphora 代理,并更新可变的配置选项。

如果您不是管理员用户,服务将返回 HTTP Forbidden (403) 响应代码。

此操作不需要请求正文。

版本 2.7 新增

成功

代码

原因

202 - Accepted

请求已接受,但处理可能需要一些时间。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

由于凭据无效,访问被拒绝。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

请求

名称

入参

类型

描述

amphora_id

路径

uuid

要查询的 amphora 的 ID。

Curl 示例

curl -X PUT -H "X-Auth-Token: <token>" http://198.51.100.10:9876/v2/octavia/amphorae/6bd55cd3-802e-447e-a518-1e74e23bb106/config

响应

成功的 PUT 请求响应没有正文内容。

PUT
/v2/octavia/amphorae/{amphora_id}/failover

Amphora 故障转移

强制 amphora 故障转移。

如果您不是管理员用户,服务将返回 HTTP Forbidden (403) 响应代码。

此操作不需要请求正文。

成功

代码

原因

202 - Accepted

请求已接受,但处理可能需要一些时间。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

由于凭据无效,访问被拒绝。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

请求

名称

入参

类型

描述

amphora_id

路径

uuid

要查询的 amphora 的 ID。

Curl 示例

curl -X PUT -H "X-Auth-Token: <token>" http://198.51.100.10:9876/v2/octavia/amphorae/6bd55cd3-802e-447e-a518-1e74e23bb106/failover

响应

成功的 PUT 请求响应没有正文内容。

DELETE
/v2/octavia/amphorae/{amphora_id}

移除 Amphora

移除 amphora 及其关联配置。

API 将立即清除任何和所有配置数据,具体取决于配置设置。您无法恢复它。

版本 2.20 新增

成功

代码

原因

204 - No Content

请求已满足,但服务未返回任何内容。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

由于凭据无效,访问被拒绝。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

409 - Conflict

此资源有一个正在进行的操作,与此请求冲突。

500 - 内部服务器错误

服务出现问题,导致无法满足请求。

请求

名称

入参

类型

描述

amphora_id

路径

uuid

要查询的 amphora 的 ID。

Curl 示例

curl -X DELETE -H "X-Auth-Token: <token>" http://198.51.100.10:9876/v2/octavia/amphorae/1a032adb-d6ac-4dbb-a04a-c1126bc547c7

响应

成功的 DELETE 请求没有响应正文内容。