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.

Note

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:

  1. Assign openstack-gateway: enabled labels to the compute nodes in either order.

    Caution

    Assigning the openstack-gateway: enabled labels on compute nodes is crucial for the effective operation of Octavia Amphora load balancing within an OpenStack environment. Double-check the labels assignment to guarantee proper configuration.

  2. To make Amphora the default provider, specify it in the OpenStackDeployment custom resource:

    spec:
    features:
      octavia:
        default_provider: amphorav2
    
  3. 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 provider argument:

openstack loadbalancer create --provider amphorav2