Multiple Azure Load Balancer Support for OpenShift

Overview

By default, Avi Controller creates one Azure Load Balancer (ALB) per SE Group which introduces a limit on the number of virtual service IPs (VIPs) or ports that can be supported on a given Avi Service Engines. Starting with 17.2.13, Avi Vantage supports multiple Application Load Balancer (ALBs) within a single Avi Service Engine group. The Avi Controller also manages creating multiple Azure Load Balancers and distributions of SEs across the Availability Zones.

Benefits

The following are the benefits of using multiple Azure Load Balancer in Azure:

  • The new ALB creating and scaling out is executed seamlessly and without any user intervention. The system automatically creates the ALBs as and when needed.
  • This feature works with the basic ALBs, so no extra cost is involved.
  • As it is limited to the configured SE group only, changes in configuration are not required for the remaining virtual services, HA or scale out parameters for the different SE groups within the same cloud.

Limitations while Using Multiple Azure Load Balancers

  • For scaling out, Avi Vantage needs a higher number of SEs than the standard ALB option.
  • It is difficult to upgrade existing SE groups to this scheme, hence a new cloud needs to be created.

How Multiple Azure Load Balancers in OpenShift Works with Avi Vantage

The following points explain how the Avi Controller scale out to virtual services using multiple ALB feature.

  1. Avi Controller automatically detects all the Availability Sets (AS) where SEs are created.
  2. When a virtual service is created, the Avi Controller finds an ALB with free space. If there is no free space in existing ALB, Avi Controller creates a new ALB and points it to an unused AS. The virtual service gets placed on the SEs in that AS.
  3. The number of virtual services per SE group is proportional to the number of AS used in the OpenShift cluster. The number of virtual services is no longer limited to a single Azure Load Balancer.

workflow

The diagram mentioned above explains the following workflows:

  • The OpenShift nodes are distributed across the following two Availability Sets:
    • Availability Set 1
    • Availability Set 2
  • Avi Controller is hosting virtual services for the applications (app1.analytics.avi.com, and app200.analytics.avi.com). These applications are communicating to the OpenShift nodes in Availability Set 1.
  • When the limit for the ALB rule is reached, the Avi Controller creates a new ALB (using Availability Set 2) within the same SE Group.
  • The new application (app300.analytic.avi.com) will communicate to the new ALB associated with Availability Set 2.

Configuring Avi Vantage for Multiple Azure Load Balancers in OpenShift

Prerequisites

  • Create OpenShift nodes across multiple Azure Availability Sets (AS).

Instructions

The following are the configuration steps to enable multiple Azure Load Balancers in OpenShift.

  1. Create OpenShift nodes across multiple Azure Availability Sets (AS). For more information on creating OpenShift nodes, refer to Nodes in OpenShift Cloud.
  2. Create a no access cloud.
    Login to the Avi user interface (UI), navigate to Infrastructure > Cloud, and select No Orchestator.

    no-access

  3. Set the enable_multi_lb option on the Default-Group of the no access cloud created in the previous step.

    
    admin@10-140-6-176:~$ shell
    Login: admin
    Password:
    [admin:10-140-6-176]: > configure serviceenginegroup enable_multi_lb
    
  4. The following knobs can be changed to restrict the number of rules used on the ALB, and the number of public IPs used.
    Note: These are optional steps. The normal set-up works without changing these values.

    • max_rules_per_lb: The maximum number of rules per Azure LB. The maximum limit for this value is 150.
    • max_public_ips_per_lb: The maximum number of public IPs per Azure LB.

      
       [admin:10-140-6-176]: > configure serviceenginegroup enable_multi_lb
       [admin:10-140-6-176]: serviceenginegroup> max_rules_per_lb 50
       [admin:10-140-6-176]: serviceenginegroup> max_public_ips_per_lb 50
       [admin:10-140-6-176]: serviceenginegroup> save
       
  5. Convert the no access cloud created in the step 2 to an OpenShift cloud. For information on integrating OpenShift with Avi Vantage, refer to Installing Avi Vantage in OpenShift/Kubernetes

    Refer to the following articles for configuring Azure and OpenShift cloud. * For configuring OpenShift cloud, refer to Installing Avi Vantage in OpenShift * For integrating Azure in OpenShift, refer to Azure IPAM for OpenShift