Octavia Amphora load balancing¶
Available since MOSK 23.1 TechPreview
Octavia Amphora (Amphora v2) load balancing provides a scalable and flexible solution for load balancing in cloud environments. MOSK deploys Amphora load balancer on each node of the OpenStack environment ensuring that load balancing services are easily accessible, highly scalable, and highly reliable.
Compared to the Octavia Tungsten Fabric driver for LBaaS v2 solution, Amphora offers several advanced features including:
Full compatibility with the Octavia API, which provides a standardized interface for load balancing in MOSK OpenStack environments. This makes it easier to manage and integrate with other OpenStack services.
Layer 7 policies and rules, which allow for more granular control over traffic routing and load balancing decisions. This enables users to optimize their application performance and improve the user experience.
Support for the UDP protocol, which is commonly used for real-time communications and other high-performance applications. This enables users to deploy a wider range of applications with the same load balancing infrastructure.
Enabling Octavia Amphora load balancing¶
By default, MOSK uses the Octavia Tungsten Fabric load balancing. Once Octavia Amphora load balancing is enabled, the existing Octavia Tungsten Fabric driver load balancers will continue to function normally. However, you cannot migrate your load balancer workloads from the old LBaaS v2 solution to Amphora.
As long as MOSK provides Octavia Amphora load balancing as a technology preview feature, Mirantis cannot guarantee the stability of this solution and does not provide a migration path from Tungsten Fabric load balancing (HAProxy), which is used by default.
To enable Octavia Amphora load balancing:
openstack-gateway: enabledlabels to the compute nodes in either order.
To make Amphora the default provider, specify it in the
spec: features: octavia: default_provider: amphorav2
Verify that the OpenStack Controller has scheduled new Octavia pods that include health manager, worker, and housekeeping pods.
kubectl get pods -n openstack -l 'application=octavia,component in (worker, health_manager, housekeeping)'
Example of output for an environment with two compute nodes:
NAME READY STATUS RESTARTS AGE octavia-health-manager-default-48znl 1/1 Running 0 4h32m octavia-health-manager-default-jk82v 1/1 Running 0 4h34m octavia-housekeeping-7bdf9cbd6c-24vc4 1/1 Running 0 4h34m octavia-housekeeping-7bdf9cbd6c-h9ccv 1/1 Running 0 4h34m octavia-housekeeping-7bdf9cbd6c-rptvv 1/1 Running 0 4h34m octavia-worker-665f84fc7-8kdqd 1/1 Running 0 4h34m octavia-worker-665f84fc7-j6jn9 1/1 Running 0 4h31m octavia-worker-665f84fc7-kqf9t 1/1 Running 0 4h33m
Creating new load balancers¶
The workflow for creating new load balancers with Amphora is identical to the workflow for creating load balancers with Octavia Tungsten Fabric driver for LBaaS v2. You can do it either through the OpenStack Horizon UI or OpenStack CLI.
If you have not defined
amphorav2 as default provider in the
OpenStackDeployment custom resource, you can specify it explicitly
when creating a load balancer using the
openstack loadbalancer create --provider amphorav2