创建负载均衡监听器(CreateLoadBalancerListener)
API请求
URLs
POST zstack/v1/load-balancers/{loadBalancerUuid}/listenersHeaders
Authorization: OAuth the-session-uuidBody
{
"params": {
"name": "Test-Listener",
"instancePort": 80,
"loadBalancerPort": 80,
"protocol": "http"
"aclStatus": "disable",
"aclType": "black"
},
"systemTags": [],
"userTags": []
}Note: 上述示例中systemTags、userTags字段可以省略。列出是为了表示body中可以包含这两个字段。
Curl示例
curl -H "Content-Type: application/json;charset=UTF-8"
-H "Authorization: OAuth b86c9016b4f24953a9edefb53ca0678c"
-X POST -d '{"params":{"name":"Test-Listener","instancePort":80,"loadBalancerPort":80,"protocol":"http","aclStatus":"disable","aclType":"black"}}'
http://localhost:8080/zstack/v1/load-balancers/192b3fe960d63e078ced8f59529a25ad/listeners参数列表
| 名字 | 类型 | 位置 | 描述 | 可选值 | 起始版本 |
|---|---|---|---|---|---|
| loadBalancerUuid | String | url | 负载均衡器UUID | 0.6 | |
| name | String | body(包含在params结构中) | 资源名称 | 0.6 | |
| description (可选) | String | body(包含在params结构中) | 资源的详细描述 | 0.6 | |
| instancePort(可选) | Integer | body(包含在params结构中) | 云主机端口 | 0.6 | |
| loadBalancerPort | int | body(包含在params结构中) | 负载均衡器端口 | 0.6 | |
| protocol (可选) | String | body(包含在params结构中) | 协议 |
|
3.0.0 |
| certificateUuid (可选) | String | body(包含在params结构中) | 2.3.2 | ||
| resourceUuid (可选) | String | body(包含在params结构中) | 资源UUID | 0.6 | |
| instancePort (可选) | Integer | body(包含在params结构中) | 0.6 | ||
| healthCheckProtocol (可选) | String | body(包含在params结构中) | 健康检查协议 |
|
3.9.0 |
| healthCheckMethod (可选) | String | body(包含在params结构中) | 健康检查方法 |
|
3.9.0 |
| healthCheckURI (可选) | String | body(包含在params结构中) | 健康检查的URI | 3.9.0 | |
| healthCheckHttpCode (可选) | String | body(包含在params结构中) | 健康检查期望的返回码 | 3.9.0 | |
| aclStatus (可选) | String | body(包含在params结构中) | 访问控制策略状态 |
|
3.9.0 |
| aclUuids (可选) | list | body(包含在params结构中) | 访问控制策略组 | 3.9.0 | |
| aclType (可选) | String | body(包含在params结构中) | 访问控制策略类型 |
|
3.9.0 |
| tagUuids (可选) | list | body(包含在params结构中) | 标签UUID列表 | 0.6 | |
| systemTags (可选) | List | body | 系统标签 | 0.6 | |
| userTags (可选) | List | body | 用户标签 | 0.6 | |
| securityPolicyType (可选) | String | body(包含在params结构中) | TLS安全策略 |
|
5.0.0 |
| httpVersions (可选) | List | body(包含在params结构中) | 负载均衡器前端网络http协议版本 |
|
5.0.0 |
| tcpProxyProtocol (可选) | String | body(包含在params结构中) | tcp proxy_protocol协议 |
|
5.0.0 |
| httpCompressAlgos (可选) | List | body(包含在params结构中) | http压缩算法 |
|
5.0.0 |
Note:
- ZStack Cloud创建负载均衡监听器时支持设置7层健康检查参数,SystemTags增加healthCheckParameter选项。
- 选项格式为:
healthCheckParameter::{parameter},参数形如:healthCheckParameter::method:uri:expect-result - 例如:
healthCheckParameter::GET:/healthstatus.html:http_2xx
- 选项格式为:
- ZStack Cloud创建负载均衡监听器时支持设置监听器访问控制状态,SystemTags增加accessControlStatus选项。
- 选项格式为:
accessControlStatus::{status} - 例如:
accessControlStatus::enable
- 选项格式为:
- ZStack Cloud创建负载均衡监听器时支持指定会话保持模式及开关,SystemTags增加sessionPersistence选项。
- 选项格式为:
sessionPersistence::{%s},其中%s可以为disable/iphash/insert/rewrite - 例如:
sessionPersistence::insert
- 选项格式为:
- ZStack Cloud创建负载均衡监听器时支持设置指定会话保持时间,SystemTags增加sessionIdleTimeout选项。
- 选项格式为:
sessionIdleTimeout::{%s},其中%s可以为30-3600 - 例如:
sessionIdleTimeout::60
- 选项格式为:
- ZStack Cloud创建负载均衡监听器时支持设置会话保持重写名称,SystemTags增加cookieName选项。
- 选项格式为:
validRegexValues::{%s},其中%s可以为"[A-Za-z0-9_-]+", maxLength = 20 - 例如:
cookieName::zstack-cookie
- 选项格式为:
- ZStack Cloud支持设置是否开启HTTP重定向,SystemTags增加httpRedirectHttps选项。
- 选项格式为:
httpRedirectHttps::{%s},其中%s可以为disable/enable - 例如:
httpRedirectHttps::enable
- 选项格式为:
- ZStack Cloud支持重定向目的监听端口,SystemTags增加redirectPort选项。
- 选项格式为:
redirectPort::{%s},其中%s可以为1-65535 - 例如:
redirectPort::80
- 选项格式为:
- ZStack Cloud支持重定向状态码,SystemTags增加statusCode选项。
- 选项格式为:
statusCode::{%s},其中%s可以为301/302/303/307/308 - 例如:
statusCode::302
- 选项格式为:
API返回
返回示例
{
"inventory": {
"uuid": "e82212513e2f3644885d98ce164ee687",
"name": "Test-Listener",
"loadBalancerUuid": "f7b267e9a5683ba5981b79196ca65d47",
"instancePort": 80,
"loadBalancerPort": 80,
"protocol": "http"
}
}#error
| 名字 | 类型 | 描述 | 起始版本 |
|---|---|---|---|
| code | String | 错误码号,错误的全局唯一标识,例如SYS.1000, HOST.1001 | 0.6 |
| description | String | 错误的概要描述 | 0.6 |
| details | String | 错误的详细信息 | 0.6 |
| elaboration | String | 保留字段,默认为null | 0.6 |
| opaque | LinkedHashMap | 保留字段,默认为null | 0.6 |
| cause | ErrorCode | 根错误,引发当前错误的源错误,若无原错误,该字段为null | 0.6 |
#inventory
| 名字 | 类型 | 描述 | 起始版本 |
|---|---|---|---|
| uuid | String | 资源的UUID,唯一标示该资源 | 0.6 |
| name | String | 资源名称 | 0.6 |
| description | String | 资源的详细描述 | 0.6 |
| loadBalancerUuid | String | 负载均衡器UUID | 0.6 |
| instancePort | Integer | 0.6 | |
| loadBalancerPort | Integer | 0.6 | |
| protocol | String | 0.6 | |
| serverGroupUuid | String | 5.0.0 | |
| createDate | Timestamp | 创建时间 | 0.6 |
| lastOpDate | Timestamp | 最后一次修改时间 | 0.6 |
| vmNicRefs | List | 详情参考vmNicRefs | 0.6 |
| aclRefs | List | 详情参考aclRefs | 3.9.0 |
| certificateRefs | List | 详情参考certificateRefs | 0.6 |
| serverGroupRefs | List | 详情参考serverGroupRefs | 5.0.0 |
#vmNicRefs
| 名字 | 类型 | 描述 | 起始版本 |
|---|---|---|---|
| id | Long | 0.6 | |
| listenerUuid | String | 0.6 | |
| vmNicUuid | String | 云主机网卡UUID | 0.6 |
| status | String | 0.6 | |
| createDate | Timestamp | 创建时间 | 0.6 |
| lastOpDate | Timestamp | 最后一次修改时间 | 0.6 |
#aclRefs
| 名字 | 类型 | 描述 | 起始版本 |
|---|---|---|---|
| id | Long | 资源唯一标识 | 3.9.0 |
| listenerUuid | String | 监听器唯一标识 | 3.9.0 |
| aclUuid | String | 访问策略组唯一标识 | 3.9.0 |
| type | String | 访问策略类型 | 3.9.0 |
| createDate | Timestamp | 创建时间 | 3.9.0 |
| lastOpDate | Timestamp | 最后一次修改时间 | 3.9.0 |
#certificateRefs
| 名字 | 类型 | 描述 | 起始版本 |
|---|---|---|---|
| id | Long | 2.3 | |
| listenerUuid | String | 2.3 | |
| certificateUuid | String | 2.3.2 | |
| createDate | Timestamp | 创建时间 | 2.3 |
| lastOpDate | Timestamp | 最后一次修改时间 | 2.3 |
#serverGroupRefs
| 名字 | 类型 | 描述 | 起始版本 |
|---|---|---|---|
| id | long | 5.0.0 | |
| listenerUuid | String | 5.0.0 | |
| serverGroupUuid | String | 5.0.0 | |
| createDate | Timestamp | 创建时间 | 5.0.0 |
| lastOpDate | Timestamp | 最后一次修改时间 | 5.0.0 |
SDK示例
Java
SDK
CreateLoadBalancerListenerAction action = new CreateLoadBalancerListenerAction();
action.loadBalancerUuid = "192b3fe960d63e078ced8f59529a25ad";
action.name = "Test-Listener";
action.instancePort = 80;
action.loadBalancerPort = 80;
action.protocol = "http";
action.aclStatus = "disable";
action.aclType = "black";
action.sessionId = "b86c9016b4f24953a9edefb53ca0678c";
CreateLoadBalancerListenerAction.Result res = action.call();Python
SDK
CreateLoadBalancerListenerAction action = CreateLoadBalancerListenerAction()
action.loadBalancerUuid = "192b3fe960d63e078ced8f59529a25ad"
action.name = "Test-Listener"
action.instancePort = 80
action.loadBalancerPort = 80
action.protocol = "http"
action.aclStatus = "disable"
action.aclType = "black"
action.sessionId = "b86c9016b4f24953a9edefb53ca0678c"
CreateLoadBalancerListenerAction.Result res = action.call()