对 LBaaS V2 的支持

https://blueprints.launchpad.net/heat/+spec/lbaasv2-suport

目前 heat 不支持 LBaaS V2 资源。为所有 LBaaS V2 资源添加一个名为 OS::LBaaS::* 的新命名空间

问题描述

Liberty 中有新的 LBaaS V2 API,heat 需要支持这些 API。由于 heat 中已存在命名空间 OS::Neutron:* 下的 LBaaS V1 API 支持,我们需要为 V2 API 提供一个新的命名空间。由于 LBaaS 在不久的将来将成为一个独立的实体,我们需要在 heat 中对 LBaaS V2 做同样的事情。

提议的变更

我们需要添加以下 LBaaS V2 heat 资源。1. 负载均衡器 (LoadBalancer)。2. 监听器 (Listener)。3. 池 (Pool)。4. 池成员 (PoolMember)。5. 健康监测器 (HealthMonitor)。

规范。

1. 负载均衡器

LBaaS V2 负载均衡器,它创建一个负载均衡器以及 VIP。

命名空间:OS::LBaaS::LoadBalancer

必需属性:

vip_subnet

负载均衡器的 VIP 的子网 ID 或名称。字符串值。值必须是 neutron.subnet 类型。

可选属性:

name

负载均衡器的名称。字符串值。允许更新。

description

负载均衡器的描述。字符串值。允许更新。

provider

负载均衡器的提供者。字符串值。

vip_address

负载均衡器的 IP 地址。字符串值。值必须是 ip_addr 类型。

admin_state_up

负载均衡器的管理状态。字符串值。允许更新。

属性:

admin_state_up

负载均衡器的管理状态。

provider

负载均衡器的提供者。

vip_address

负载均衡器的 VIP 地址。

vip_subnet_id

负载均衡器的 VIP 子网 ID。

listeners

与负载均衡器关联的监听器列表。

2. 监听器

LBaaS V2 监听器,它为特定端口和协议创建与负载均衡器关联的监听器。

命名空间:OS::LBaaS::Listener

必需属性:

protocol_port

监听器的端口。整数值。必须在 0 到 65535 范围内

protocol

监听器的协议。字符串值。允许的值 - TCP、HTTP、HTTPS、TERMINATED_HTTPS

loadbalancer

监听器关联的负载均衡器的 ID 或名称。字符串值。必须是 lbaas.loadbalancer 类型。

可选属性:

name

监听器的名称。字符串值。允许更新。

description

监听器的描述。字符串值。允许更新。

admin_state_up

监听器的管理状态。字符串值。允许更新。

default_tls_container_ref

用于检索 TLS 信息的默认 TLS 容器引用。如果协议是 TERMINATED_HTTPS,则为强制项。字符串值。允许更新。

sni_container_refs

用于 SNI 的 TLS 容器引用列表。列表值。允许更新。

connection_limit

监听器可以接受的最大连接数。整数值。允许更新。默认值为 -1。

属性:

protocol_port

监听器的协议端口。

protocol

监听器的协议。

loadbalancers

与监听器关联的负载均衡器列表。

admin_state_up

监听器的管理状态。

default_tls_container_ref

用于检索 TLS 信息的默认 TLS 容器引用。

sni_container_refs

用于 SNI 的 TLS 容器引用列表。

3. 池

LBaaS V2 池,它创建一个与监听器关联的池。

命名空间:OS::LBaaS::Pool

必需属性:

lb_algorithm

要使用的负载均衡算法。字符串值。允许的值 - ROUND_ROBIN、LEAST_CONNECTIONS、SOURCE_IP 允许更新。

listener

与池关联的监听器的 ID 或名称。字符串值。必须是 lbaas.listener 类型。

protocol

池的协议。字符串值。允许的值 - TCP、HTTP、HTTPS

可选属性:

name

池的名称。字符串值。允许更新。

admin_state_up

池的管理状态。字符串值。允许更新。

description

池的描述。字符串值。允许更新。

session_persistence

池的会话持久性详细信息。字符串值。允许更新。

映射属性

cookie_name

Cookie 的名称。字符串值。如果类型为 APP_COOKIE,则为必需项。

type

会话持久性类型。字符串值。允许的值 - SOURCE_IP、HTTP_COOKIE、APP_COOKIE

属性:

admin_state_up

池的管理状态。

lb_algorithm

负载均衡器的负载均衡算法。

listeners

与池关联的监听器 ID 列表。

protocol

池的协议。

4. 池成员

要添加到负载均衡池的后端服务器。

命名空间:OS::LBaaS::PoolMember

必需属性:

pool

此成员所属池的 ID 或名称。字符串值。允许更新。必须是 lbaas.pool 类型。

address

池中池成员的 IP 地址。字符串值。值必须是 ip_addr 类型。

protocol_port

池成员监听请求或连接的端口。整数值。必须在 0 到 65535 范围内

subnet

成员的子网 ID 或名称。字符串值。必须是 neutron.subnet 类型

可选属性:

weight

成员在池中的权重。整数值。必须在 0 到 256 范围内。允许更新。

admin_state_up

池成员的管理状态。字符串值。允许更新。

属性:

admin_state_up

池成员的管理状态。

weight

成员在池中的权重。

address

池中池成员的 IP 地址。

pool_id

此成员所属池的 ID。

protocol_port

池成员监听请求或连接的端口。

subnet_id

成员的子网 ID。

5. 健康监测器

LBaaS V2 健康监测器,为池创建健康监测器。

命名空间:OS::LBaaS::HealthMonitor

必需属性:

delay

成员之间常规连接的最短时间(以毫秒为单位)。整数值。允许更新。

type

预定义的健康监测器类型之一。字符串值。允许的值 - PING、TCP、HTTP、HTTPS

max_retries

在将成员状态更改为 INACTIVE 之前允许的连接失败次数。

更改为 INACTIVE。

整数值。允许更新。必须在 1 到 10 范围内。

timeout

监测器在超时之前等待连接建立的最大毫秒数。

建立之前它会超时。

整数值。允许更新。

pool

要监测的池的 ID 或名称。字符串值。允许更新。必须是 lbaas.pool 类型。

可选属性:

admin_state_up

健康监测器的管理状态。字符串值。允许更新。

http_method

HTTP 类型监测器用于请求的 HTTP 方法。字符串值。允许更新。

expected_codes

预期从成员响应中获取的 HTTP 状态代码列表,以

声明其健康。

字符串值。允许更新。

url_path

监测器用于测试成员健康的 HTTP 请求中使用的 HTTP 路径。

健康。

字符串值。允许更新。

属性:

admin_state_up

此健康监测器的管理状态。

delay

成员之间常规连接的最短时间(以毫秒为单位)。

expected_codes

预期从成员响应中获取的 HTTP 状态代码列表,以声明其健康

http_method

HTTP 类型监测器用于请求的 HTTP 方法。

max_retries

在将成员状态更改为 INACTIVE 之前允许的连接失败次数。

timeout

监测器在超时之前等待连接建立的最大毫秒数。

type

预定义的健康监测器类型之一。

url_path

监测器在 HTTP 请求中使用的 HTTP 路径。

参考资料

https://github.com/openstack/neutron-lbaas https://github.com/openstack/heat https://docs.openstack.org/developer/heat/template_guide/openstack.html https://developer.openstack.org/api-ref-networking-v2-ext.html#lbaas-v2.0

备选方案

实现

负责人

主要负责人

<bkalebe>

里程碑

完成目标里程碑

mitaka-1

工作项

为以下资源添加新的命名空间。OS::LBaaS::LoadBalancer OS::LBaaS::Listener OS::LBaaS::Pool OS::LBaaS::PoolMember OS::LBaaS::HealthMonitor

依赖项