Saltar al contenido
NimbusNexus

Load balancers

A load balancer fronts a fleet of VMs with a single VIP (virtual IP), distributing traffic across the backends and removing unhealthy ones from rotation automatically. Two flavors: L4 (TCP / UDP / proxy-protocol) and L7 (HTTP / HTTPS with path + header routing).

The four sub-resources

A load balancer is itself a container; the routing logic lives in nested resources:

  • Listener — one per (protocol, port) the LB accepts traffic on. HTTPS:443 is one listener; HTTP:80 is another. A single LB can host many listeners.
  • Pool — a group of backend VMs, defined per listener. Each pool has an algorithm (round-robin, least-connections, source-ip-hash) and a session-persistence policy.
  • Member — one backend in a pool. References a VM + port + weight.
  • Health monitor — the active health check per pool. Failed members are removed from rotation until they recover.

The endpoints below operate on the top-level load balancer. Nested CRUD for listeners/pools/members/health-monitors lives at /v1/load-balancers/{id}/listeners, etc. (not in this minimal sample — covered in the live spec).

SSL termination

For HTTPS listeners you have two choices:

  • TLS terminated at the LB. Upload a cert (or use Let's Encrypt via the cert-manager add-on), and the LB serves TLS to clients while talking plaintext to your VMs. Easier to manage; lets the LB inspect HTTP headers for L7 routing.
  • TLS passthrough. The LB does L4 TCP forwarding only; your VMs handle TLS. Required when the backend needs to see the original client cert.

Health checks

A health monitor probes each member periodically (default every 10s) on a configured path / port. Three results:

  • Healthy — last 2 probes succeeded (default; configurable). Member receives traffic.
  • Unhealthy — last 3 probes failed (configurable). Member removed from rotation; current connections drain.
  • Recovering — was unhealthy, now passing again. After 2 successful probes flips to healthy.

For HTTP health checks, the LB sends a GET to /healthz (configurable) and expects 200. Implement /healthz in your app to return a quick body — and avoid making the check do real work, or the check itself becomes the load.

Pricing

Load balancers bill at a flat rate per hour per region ($0.024/hr for the standard tier in the EN-pricing reference). Listener / pool / member / health-monitor creates are free. Cross-LB traffic between regions counts as standard inter-region egress.

What's next

  • Virtual machines — what becomes pool members.
  • Floating IPs — alternative for single-VM public access without an LB.
  • Security groups — the firewall at the VM interface; LBs respect security groups on members.

Reference

GET/api/v1/health_monitors/

List Health Monitor

Lists health monitors visible in the current scope, filtered by query parameters.

Parameters

NameInRequiredDescription
admin_domainqueryno—
admin_projectqueryno—
projectqueryno—
namequeryno—
delayqueryno—
max_retriesqueryno—
pool_idqueryno—
timeoutqueryno—
typequeryno—
admin_state_upqueryno—
expected_codesqueryno—
http_methodqueryno—
max_retries_downqueryno—
url_pathqueryno—
provisioning_statusqueryno—
operating_statusqueryno—

Responses

  • 200Successful Response
  • 401Unauthorized
  • 403Forbidden
  • 422Validation error
  • 429Too Many Requests
  • 500Internal Server Error

https://api.nimbusnexus.net/api/v1/health_monitors/

POST/api/v1/health_monitors/

Create Health Monitor

Creates a new health monitor for a pool.

Request body

JSON body required.

Responses

  • 201Successful Response
  • 400Bad Request
  • 401Unauthorized
  • 403Forbidden
  • 404Not Found
  • 409Conflict
  • 422Validation error
  • 429Too Many Requests
  • 500Internal Server Error

https://api.nimbusnexus.net/api/v1/health_monitors/

GET/api/v1/health_monitors/{healthmonitor_id}

Get Health Monitor

Retrieves the details of a single health monitor by ID.

Parameters

NameInRequiredDescription
healthmonitor_idpathyes—

Responses

  • 200Successful Response
  • 401Unauthorized
  • 403Forbidden
  • 404Not Found
  • 422Validation error
  • 429Too Many Requests
  • 500Internal Server Error

https://api.nimbusnexus.net/api/v1/health_monitors/{healthmonitor_id}

PATCH/api/v1/health_monitors/{healthmonitor_id}

Update Health Monitor

Updates the mutable attributes of an existing health monitor.

Parameters

NameInRequiredDescription
healthmonitor_idpathyes—

Request body

JSON body required.

Responses

  • 200Successful Response
  • 400Bad Request
  • 401Unauthorized
  • 403Forbidden
  • 404Not Found
  • 409Conflict
  • 422Validation error
  • 429Too Many Requests
  • 500Internal Server Error

https://api.nimbusnexus.net/api/v1/health_monitors/{healthmonitor_id}

DELETE/api/v1/health_monitors/{healthmonitor_id}

Delete Health Monitor

Deletes the specified health monitor.

Parameters

NameInRequiredDescription
healthmonitor_idpathyes—

Responses

  • 204Successful Response
  • 401Unauthorized
  • 403Forbidden
  • 404Not Found
  • 409Conflict
  • 422Validation error
  • 429Too Many Requests
  • 500Internal Server Error

https://api.nimbusnexus.net/api/v1/health_monitors/{healthmonitor_id}

GET/api/v1/listeners/

List Listeners

Lists listeners visible in the current scope, filtered by query parameters.

Parameters

NameInRequiredDescription
admin_domainqueryno—
admin_projectqueryno—
projectqueryno—
namequeryno—
protocolqueryno—
protocol_portqueryno—
loadbalancer_idqueryno—
descriptionqueryno—
tagsquerynoFilter by tags
admin_state_upqueryno—

Responses

  • 200Successful Response
  • 401Unauthorized
  • 403Forbidden
  • 422Validation Error
  • 429Too Many Requests
  • 500Internal Server Error

https://api.nimbusnexus.net/api/v1/listeners/

POST/api/v1/listeners/

Create Listener

Creates a new listener attached to a load balancer.

Request body

JSON body required.

Responses

  • 201Successful Response
  • 400Bad Request
  • 401Unauthorized
  • 403Forbidden
  • 404Not Found
  • 409Conflict
  • 422Validation Error
  • 429Too Many Requests
  • 500Internal Server Error

https://api.nimbusnexus.net/api/v1/listeners/

GET/api/v1/listeners/{listener_id}

Get Listener

Retrieves the details of a single listener by ID.

Parameters

NameInRequiredDescription
listener_idpathyes—

Responses

  • 200Successful Response
  • 401Unauthorized
  • 403Forbidden
  • 404Not Found
  • 422Validation Error
  • 429Too Many Requests
  • 500Internal Server Error

https://api.nimbusnexus.net/api/v1/listeners/{listener_id}

PATCH/api/v1/listeners/{listener_id}

Update Listener

Updates the mutable attributes of an existing listener.

Parameters

NameInRequiredDescription
listener_idpathyes—

Request body

JSON body required.

Responses

  • 200Successful Response
  • 400Bad Request
  • 401Unauthorized
  • 403Forbidden
  • 404Not Found
  • 409Conflict
  • 422Validation Error
  • 429Too Many Requests
  • 500Internal Server Error

https://api.nimbusnexus.net/api/v1/listeners/{listener_id}

DELETE/api/v1/listeners/{listener_id}

Delete Listener

Deletes the specified listener.

Parameters

NameInRequiredDescription
listener_idpathyes—

Responses

  • 204Successful Response
  • 401Unauthorized
  • 403Forbidden
  • 404Not Found
  • 409Conflict
  • 422Validation Error
  • 429Too Many Requests
  • 500Internal Server Error

https://api.nimbusnexus.net/api/v1/listeners/{listener_id}

GET/api/v1/listeners/{listener_id}/stats

Get Listener Stats

Returns traffic statistics for the specified listener.

Parameters

NameInRequiredDescription
listener_idpathyes—

Responses

  • 200Successful Response
  • 401Unauthorized
  • 403Forbidden
  • 404Not Found
  • 422Validation Error
  • 429Too Many Requests
  • 500Internal Server Error

https://api.nimbusnexus.net/api/v1/listeners/{listener_id}/stats

GET/api/v1/loadbalancers/

List Load Balancers

Lists load balancers visible in the current scope, filtered by query parameters.

Parameters

NameInRequiredDescription
admin_domainqueryno—
admin_projectqueryno—
projectqueryno—
namequerynoFilter by load balancer name
vip_network_idquerynoFilter by VIP network ID
vip_subnet_idquerynoFilter by VIP subnet ID
vip_port_idquerynoFilter by VIP port ID
providerquerynoFilter by provider name (e.g., amphora, ovn)
admin_state_upquerynoFilter by administrative state
tagsquerynoFilter by tags (comma-separated list)

Responses

  • 200Successful Response
  • 401Unauthorized
  • 403Forbidden
  • 422Validation Error
  • 429Too Many Requests
  • 500Internal Server Error

https://api.nimbusnexus.net/api/v1/loadbalancers/

POST/api/v1/loadbalancers/

Create Load Balancer

Creates a new load balancer in the requested project.

Request body

JSON body required.

Responses

  • 201Successful Response
  • 400Bad Request
  • 401Unauthorized
  • 403Forbidden
  • 404Not Found
  • 409Conflict
  • 422Validation Error
  • 429Too Many Requests
  • 500Internal Server Error

https://api.nimbusnexus.net/api/v1/loadbalancers/

GET/api/v1/loadbalancers/{loadbalancer_id}

Get Load Balancer

Retrieves the details of a single load balancer by ID.

Parameters

NameInRequiredDescription
loadbalancer_idpathyes—

Responses

  • 200Successful Response
  • 401Unauthorized
  • 403Forbidden
  • 404Not Found
  • 422Validation Error
  • 429Too Many Requests
  • 500Internal Server Error

https://api.nimbusnexus.net/api/v1/loadbalancers/{loadbalancer_id}

PATCH/api/v1/loadbalancers/{loadbalancer_id}

Update Load Balancer

Updates the mutable attributes of an existing load balancer.

Parameters

NameInRequiredDescription
loadbalancer_idpathyes—

Request body

JSON body required.

Responses

  • 200Successful Response
  • 401Unauthorized
  • 403Forbidden
  • 404Not Found
  • 409Conflict
  • 422Validation Error
  • 429Too Many Requests
  • 500Internal Server Error

https://api.nimbusnexus.net/api/v1/loadbalancers/{loadbalancer_id}

DELETE/api/v1/loadbalancers/{loadbalancer_id}

Delete Load Balancer

Deletes a load balancer, optionally cascading to its child resources.

Parameters

NameInRequiredDescription
loadbalancer_idpathyes—
cascadequeryno—

Responses

  • 204Successful Response
  • 401Unauthorized
  • 403Forbidden
  • 404Not Found
  • 422Validation Error
  • 429Too Many Requests
  • 500Internal Server Error

https://api.nimbusnexus.net/api/v1/loadbalancers/{loadbalancer_id}

GET/api/v1/loadbalancers/{loadbalancer_id}/stats

Get Load Balancer Stats

Returns traffic statistics for the specified load balancer.

Parameters

NameInRequiredDescription
loadbalancer_idpathyes—

Responses

  • 200Successful Response
  • 401Unauthorized
  • 403Forbidden
  • 404Not Found
  • 422Validation Error
  • 429Too Many Requests
  • 500Internal Server Error

https://api.nimbusnexus.net/api/v1/loadbalancers/{loadbalancer_id}/stats

GET/api/v1/loadbalancers/{loadbalancer_id}/status

Get Load Balancer Status

Returns the operational and provisioning status tree of the specified load balancer.

Parameters

NameInRequiredDescription
loadbalancer_idpathyes—

Responses

  • 200Successful Response
  • 401Unauthorized
  • 403Forbidden
  • 404Not Found
  • 422Validation Error
  • 429Too Many Requests
  • 500Internal Server Error

https://api.nimbusnexus.net/api/v1/loadbalancers/{loadbalancer_id}/status

GET/api/v1/pools/

List Pools

Lists backend pools visible in the current scope, filtered by query parameters.

Parameters

NameInRequiredDescription
admin_domainqueryno—
admin_projectqueryno—
projectqueryno—
namequeryno—
descriptionqueryno—
protocolqueryno—
loadbalancer_idqueryno—

Responses

  • 200Successful Response
  • 401Unauthorized
  • 403Forbidden
  • 422Validation Error
  • 429Too Many Requests
  • 500Internal Server Error

https://api.nimbusnexus.net/api/v1/pools/

POST/api/v1/pools/

Create Pool

Creates a new backend pool on a load balancer.

Request body

JSON body required.

Responses

  • 201Successful Response
  • 400Bad Request
  • 401Unauthorized
  • 403Forbidden
  • 404Not Found
  • 409Conflict
  • 422Validation Error
  • 429Too Many Requests
  • 500Internal Server Error

https://api.nimbusnexus.net/api/v1/pools/

GET/api/v1/pools/{pool_id}

Get Pool

Retrieves the details of a single backend pool by ID.

Parameters

NameInRequiredDescription
pool_idpathyes—

Responses

  • 200Successful Response
  • 401Unauthorized
  • 403Forbidden
  • 404Not Found
  • 422Validation Error
  • 429Too Many Requests
  • 500Internal Server Error

https://api.nimbusnexus.net/api/v1/pools/{pool_id}

PATCH/api/v1/pools/{pool_id}

Update Pool

Updates the mutable attributes of an existing backend pool.

Parameters

NameInRequiredDescription
pool_idpathyes—

Request body

JSON body required.

Responses

  • 200Successful Response
  • 400Bad Request
  • 401Unauthorized
  • 403Forbidden
  • 404Not Found
  • 409Conflict
  • 422Validation Error
  • 429Too Many Requests
  • 500Internal Server Error

https://api.nimbusnexus.net/api/v1/pools/{pool_id}

DELETE/api/v1/pools/{pool_id}

Delete Pool

Deletes the specified backend pool.

Parameters

NameInRequiredDescription
pool_idpathyes—

Responses

  • 204Successful Response
  • 400Bad Request
  • 401Unauthorized
  • 403Forbidden
  • 404Not Found
  • 409Conflict
  • 422Validation Error
  • 429Too Many Requests
  • 500Internal Server Error

https://api.nimbusnexus.net/api/v1/pools/{pool_id}

GET/api/v1/pools/{pool_id}/members/

List Members

Lists backend members of the specified pool, filtered by query parameters.

Parameters

NameInRequiredDescription
pool_idpathyes—
admin_domainqueryno—
admin_projectqueryno—
addressqueryno—
weightqueryno—
monitor_addressqueryno—
protocol_portqueryno—
monitor_portqueryno—

Responses

  • 200Successful Response
  • 401Unauthorized
  • 403Forbidden
  • 404Not Found
  • 422Validation Error
  • 429Too Many Requests
  • 500Internal Server Error

https://api.nimbusnexus.net/api/v1/pools/{pool_id}/members/

POST/api/v1/pools/{pool_id}/members/

Create Member

Adds a new backend member to the specified pool.

Parameters

NameInRequiredDescription
pool_idpathyes—

Request body

JSON body required.

Responses

  • 201Successful Response
  • 400Bad Request
  • 401Unauthorized
  • 403Forbidden
  • 404Not Found
  • 422Validation Error
  • 429Too Many Requests
  • 500Internal Server Error

https://api.nimbusnexus.net/api/v1/pools/{pool_id}/members/

PUT/api/v1/pools/{pool_id}/members/

Batch Update Members

Replaces or additively updates the full set of members for a pool in one batch.

Parameters

NameInRequiredDescription
pool_idpathyes—

Request body

JSON body required.

Responses

  • 202Successful Response
  • 400Bad Request
  • 401Unauthorized
  • 403Forbidden
  • 404Not Found
  • 409Conflict
  • 422Validation Error
  • 429Too Many Requests
  • 500Internal Server Error

https://api.nimbusnexus.net/api/v1/pools/{pool_id}/members/

GET/api/v1/pools/{pool_id}/members/{member_id}

Get Member

Retrieves a single backend member of a pool by ID.

Parameters

NameInRequiredDescription
pool_idpathyes—
member_idpathyes—

Responses

  • 200Successful Response
  • 401Unauthorized
  • 403Forbidden
  • 404Not Found
  • 422Validation Error
  • 429Too Many Requests
  • 500Internal Server Error

https://api.nimbusnexus.net/api/v1/pools/{pool_id}/members/{member_id}

PATCH/api/v1/pools/{pool_id}/members/{member_id}

Update Member

Updates the mutable attributes of an existing pool member.

Parameters

NameInRequiredDescription
pool_idpathyes—
member_idpathyes—

Request body

JSON body required.

Responses

  • 200Successful Response
  • 400Bad Request
  • 401Unauthorized
  • 403Forbidden
  • 404Not Found
  • 409Conflict
  • 422Validation Error
  • 429Too Many Requests
  • 500Internal Server Error

https://api.nimbusnexus.net/api/v1/pools/{pool_id}/members/{member_id}

DELETE/api/v1/pools/{pool_id}/members/{member_id}

Delete Member

Removes a backend member from the specified pool.

Parameters

NameInRequiredDescription
pool_idpathyes—
member_idpathyes—

Responses

  • 204Successful Response
  • 401Unauthorized
  • 403Forbidden
  • 404Not Found
  • 409Conflict
  • 422Validation Error
  • 429Too Many Requests
  • 500Internal Server Error

https://api.nimbusnexus.net/api/v1/pools/{pool_id}/members/{member_id}

Need to make a real call? Try these endpoints in the live Swagger UI →