You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

查找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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 10:06:02