查找Train版本OpenStack Octavia负载均衡组件Python API文档及示例
OpenStack Train版Octavia Python API参考及调用示例
API类定义与规范来源
OpenStack Octavia的Python API绑定封装在Train版本的python-octaviaclient库中,核心操作类为OctaviaAPI,所有接口的入参、返回值规范均对应Octavia v2 REST API定义,可直接通过源码注释和接口定义获取完整说明。
核心接口参数与返回值说明
- 负载均衡实例创建接口
load_balancer_create- 必传入参:
vip_subnet_id(VIP所属子网ID,字符串)、name(负载均衡实例名称,字符串) - 可选入参:
description(实例描述)、vip_address(指定固定VIP地址)、admin_state_up(管理上下线状态,布尔值) - 返回值:负载均衡全量属性字典,核心字段含
id(实例唯一标识)、provisioning_status(资源供应状态)、vip_port_id(VIP绑定的端口ID)
- 必传入参:
- 监听器创建接口
listener_create- 必传入参:
loadbalancer_id(关联的负载均衡实例ID)、protocol(监听协议,支持HTTP/HTTPS/TERMINATED_HTTPS/TCP/UDP)、protocol_port(监听端口,1-65535范围整数) - 可选入参:
connection_limit(最大连接数限制)、default_tls_container_ref(HTTPS证书存储ID) - 返回值:监听器属性字典,核心字段含
id、operating_status(运行状态)
- 必传入参:
- 后端资源池创建接口
pool_create- 必传入参:
listener_id(关联的监听器ID)、lb_algorithm(负载均衡算法,支持ROUND_ROBIN/LEAST_CONNECTIONS/SOURCE_IP)、protocol(后端服务协议,需与监听器协议匹配) - 可选入参:
session_persistence(会话保持配置字典) - 返回值:资源池属性字典
- 必传入参:
- 后端成员添加接口
member_create- 必传入参:
pool_id(关联的资源池ID)、address(后端服务IP地址)、protocol_port(后端服务端口) - 可选入参:
weight(权重值,1-256范围)、backup(是否为备用节点,布尔值) - 返回值:后端成员属性字典
- 必传入参:
完整调用示例
示例基于Train版
python-octaviaclient==2.0.0运行,需提前配置好OpenStack身份认证信息
from octaviaclient.api.v2.octavia import OctaviaAPI from keystoneauth1.identity import v3 from keystoneauth1 import session # 完成Keystone身份认证 auth = v3.Password( auth_url="http://keystone.service:5000/v3", username="your_ops_user", password="your_ops_pass", project_name="your_project", user_domain_name="Default", project_domain_name="Default" ) sess = session.Session(auth=auth) # 初始化OctaviaAPI实例 octavia_api = OctaviaAPI(session=sess, endpoint_type="public") # 1. 创建负载均衡实例 lb_resp = octavia_api.load_balancer_create(json={ "loadbalancer": { "name": "business-lb-01", "vip_subnet_id": "subnet-xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "admin_state_up": True } }) lb_id = lb_resp["loadbalancers"][0]["id"] print(f"已创建负载均衡ID:{lb_id}") # 2. 创建80端口HTTP监听器 listener_resp = octavia_api.listener_create(json={ "listener": { "name": "business-listener-http-80", "loadbalancer_id": lb_id, "protocol": "HTTP", "protocol_port": 80, "admin_state_up": True } }) listener_id = listener_resp["listeners"][0]["id"] print(f"已创建监听器ID:{listener_id}")
注意事项
- 负载均衡、监听器等资源的创建、删除操作为异步执行,返回的初始状态为
PENDING_CREATE/PENDING_DELETE,需轮询对应资源的provisioning_status字段,待状态变为ACTIVE/ERROR后再执行后续关联操作 - 所有接口的入参需按照
{"资源类型": {"属性键": "属性值"}}的嵌套结构封装,不符合格式要求会直接返回参数校验错误 - Train版本Octavia不支持SCTP协议的监听器,如需使用该协议需升级到Ussuri及以上版本
内容的提问来源于stack exchange,提问作者LhasaDad
相关产品推荐
相关产品推荐

