14.2. Creating load balancers¶
POST /v2/lbaas/loadbalancers
Create a load balancer.
If the status is PENDING_CREATE, issue GET
/v2/lbaas/loadbalancers/{loadbalancer_id} to view the progress of
the provisioning operation. When the load balancer status changes
to ACTIVE, the load balancer is successfully provisioned and
is ready for further configuration.
Administrative users can specify a project ID that is different than their own to create load balancers for other projects.
Source: https://docs.openstack.org/api-ref/load-balancer/v2/index.html#create-a-load-balancer
14.2.1. Request¶
| Name | In | Type | Description |
|---|---|---|---|
admin_state_up (Optional) |
body | boolean | The administrative state of the resource, which is
up (true) or down (false). Default is true. |
description (Optional) |
body | string | A human-readable description for the resource. |
flavor_id (Optional) |
body | uuid | The ID of the flavor. |
listeners (Optional) |
body | array | The associated listener IDs, if any. |
loadbalancer |
body | object | A load balancer object. |
name (Optional) |
body | string | Human-readable name of the resource. |
project_id (Optional) |
body | string | The ID of the project owning this resource. |
provider (Optional) |
body | string | Provider name for the load balancer. Default is octavia. |
tags (Optional) |
body | list | A list of simple strings assigned to the resource. New in version 2.5 |
vip_address (Optional) |
body | string | The IP address of the Virtual IP (VIP). |
vip_network_id (Optional) |
body | uuid | The ID of the network for the Virtual IP (VIP). One of vip_network_id,
vip_port_id, or vip_subnet_id must be specified. |
vip_port_id (Optional) |
body | uuid | The ID of the Virtual IP (VIP) port. One of vip_network_id,
vip_port_id, or vip_subnet_id must be specified. |
vip_qos_policy_id (Optional) |
body | uuid | The ID of the QoS Policy which will apply to the Virtual IP (VIP). |
vip_subnet_id (Optional) |
body | uuid | The ID of the subnet for the Virtual IP (VIP). One of vip_network_id,
vip_port_id, or vip_subnet_id must be specified. |
14.2.1.1. Example¶
Create a load balancer lb2 in a private network, with a pool of two members in the same private network, with an HTTP->HTTP listener on port 80->80. Additionally, assign an existing floating IP address 10.94.129.67 to the load balancer’s private IP address 192.168.10.5 to make it reachable from a public network.
# curl -ks -H 'Content-Type: application/json' -H 'X-Auth-Token: gAAAAA<...>' -d '
{
"loadbalancer": {
"name": "lb2",
"project_id": "05341a23f649427baa2fd4039b7f378f",
"vip_subnet_id": "fd2de462-f93b-43a6-9b5c-254f1e690bf1",
"listeners": [
{
"name": "http_listener",
"protocol": "HTTP",
"protocol_port": 80,
"default_pool": {
"name": "rr_pool",
"protocol": "HTTP",
"default_protocol_port": 80,
"lb_algorithm": "ROUND_ROBIN",
"healthmonitor": {
"type": "HTTP",
"delay": "3",
"max_retries": 2,
"timeout": 1
},
"members": [
{
"address": "192.168.10.245",
"protocol_port": 80
},
{
"address": "192.168.10.168",
"protocol_port": 80
}
]
}
}
]
}
}' https://<node_IP_addr>:9888/v2/lbaas/loadbalancers
14.2.2. Response¶
| Name | In | Type | Description |
|---|---|---|---|
admin_state_up |
body | boolean | The administrative state of the resource, which is
up (true) or down (false). |
created_at |
body | string | The UTC date and timestamp when the resource was created. |
description |
body | string | A human-readable description for the resource. |
flavor_id |
body | uuid | The ID of the flavor. |
id |
body | uuid | The ID of the load balancer. |
listeners |
body | array | The associated listener IDs, if any. |
loadbalancer |
body | object | A load balancer object. |
name |
body | string | Human-readable name of the resource. |
operating_status |
body | string | The operating status of the resource. |
pools |
body | array | The associated pool IDs, if any. |
project_id |
body | string | The ID of the project owning this resource. |
provider |
body | string | Provider name for the load balancer. |
provisioning_status |
body | string | The provisioning status of the resource. |
tags |
body | list | A list of simple strings assigned to the resource. New in version 2.5 |
updated_at |
body | string | The UTC date and timestamp when the resource was last updated. |
vip_address |
body | string | The IP address of the Virtual IP (VIP). |
vip_network_id |
body | uuid | The ID of the network for the Virtual IP (VIP). |
vip_port_id |
body | uuid | The ID of the Virtual IP (VIP) port. |
vip_qos_policy_id |
body | uuid | The ID of the QoS Policy which will apply to the Virtual IP (VIP). |
vip_subnet_id |
body | uuid | The ID of the subnet for the Virtual IP (VIP). |
14.2.2.1. Status codes¶
14.2.2.1.1. Success¶
| Code | Reason |
|---|---|
201 - Created |
Resource was created and is ready to use. |
14.2.2.1.2. Error¶
| Code | Reason |
|---|---|
400 - Bad Request |
Some content in the request was invalid. |
401 - Unauthorized |
User must authenticate before making a request. |
403 - Forbidden |
Policy does not allow current user to do this operation. |
404 - Not Found |
The requested resource could not be found. |
500 - Internal Server Error |
Something went wrong inside the service. This should not happen usually. If it does happen, it means the server has experienced some serious problems. |
503 - Service Unavailable |
Service is not available. This is mostly caused by service configuration errors which prevents the service from successful start up. |
14.2.2.2. Example¶
{
"loadbalancer": {
"provider": "amphora",
"flavor_id": null,
"description": "",
"provisioning_status": "PENDING_CREATE",
"tenant_id": "05341a23f649427baa2fd4039b7f378f",
"created_at": "2020-03-20T12:58:20.584488",
"admin_state_up": true,
"updated_at": null,
"vip_qos_policy_id": null,
"vip_subnet_id": "fd2de462-f93b-43a6-9b5c-254f1e690bf1",
"listeners": [
{
"client_ca_tls_container_ref": null,
"protocol": "HTTP",
"default_tls_container_ref": null,
"updated_at": "2020-03-20T12:58:25.707818",
"default_pool_id": "bd04cc50-0575-45cc-a965-514357a4b62d",
"id": "1dc8539c-7545-4ae8-8081-3140a47b6342",
"insert_headers": {},
"sni_container_refs": [],
"timeout_member_connect": 5000,
"client_crl_container_ref": null,
"project_id": "05341a23f649427baa2fd4039b7f378f",
"operating_status": "OFFLINE",
"description": "",
"provisioning_status": "PENDING_CREATE",
"timeout_member_data": 50000,
"protocol_port": 80,
"tags": [],
"timeout_tcp_inspect": 0,
"name": "http_listener",
"admin_state_up": true,
"client_authentication": "NONE",
"created_at": "2020-03-20T12:58:25.569526",
"timeout_client_data": 50000,
"connection_limit": -1,
"tenant_id": "05341a23f649427baa2fd4039b7f378f",
"l7policies": []
}
],
"tags": [],
"vip_port_id": "fb0e8e3e-2a71-420a-885c-94f6d2c2f2b7",
"vip_network_id": "15f7dc0a-712c-422f-bfd3-31dc351d9026",
"vip_address": "192.168.10.5",
"pools": [
{
"lb_algorithm": "ROUND_ROBIN",
"protocol": "HTTP",
"updated_at": null,
"id": "bd04cc50-0575-45cc-a965-514357a4b62d",
"tags": [],
"project_id": "05341a23f649427baa2fd4039b7f378f",
"operating_status": "OFFLINE",
"tls_container_ref": null,
"description": "",
"provisioning_status": "PENDING_CREATE",
"members": [
{
"compute_server_id": null,
"monitor_port": null,
"project_id": "05341a23f649427baa2fd4039b7f378f",
"name": "",
"weight": 1,
"admin_state_up": true,
"subnet_id": null,
"tenant_id": "05341a23f649427baa2fd4039b7f378f",
"created_at": "2020-03-20T12:58:25.105009",
"provisioning_status": "PENDING_CREATE",
"monitor_address": null,
"updated_at": null,
"tags": [],
"address": "192.168.10.245",
"protocol_port": 80,
"backup": false,
"id": "2e6b7c79-6ed1-4ccb-8525-c65fca686cb2",
"operating_status": "OFFLINE"
},
{
"compute_server_id": null,
"monitor_port": null,
"project_id": "05341a23f649427baa2fd4039b7f378f",
"name": "",
"weight": 1,
"admin_state_up": true,
"subnet_id": null,
"tenant_id": "05341a23f649427baa2fd4039b7f378f",
"created_at": "2020-03-20T12:58:25.176757",
"provisioning_status": "PENDING_CREATE",
"monitor_address": null,
"updated_at": null,
"tags": [],
"address": "192.168.10.168",
"protocol_port": 80,
"backup": false,
"id": "3d648492-f353-4854-a196-7add03229642",
"operating_status": "OFFLINE"
}
],
"ca_tls_container_ref": null,
"name": "rr_pool",
"admin_state_up": true,
"tenant_id": "05341a23f649427baa2fd4039b7f378f",
"created_at": "2020-03-20T12:58:24.528983",
"tls_enabled": false,
"session_persistence": null,
"default_protocol_port": 80,
"listeners": [
{
"id": "1dc8539c-7545-4ae8-8081-3140a47b6342"
}
],
"healthmonitor": null,
"crl_container_ref": null
}
],
"project_id": "05341a23f649427baa2fd4039b7f378f",
"id": "6a4e1daf-2277-43aa-bd03-1eca6dfe9df1",
"operating_status": "OFFLINE",
"name": "lb2"
}
}