对 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
依赖项¶
无