This section describes the working of OpenStack AZ awareness of the NSX Advanced Load Balancer.

An NSX Advanced Load Balancer OpenStack deployment is aware of OpenStack availability zones. Deploying redundant resources of a virtual service (For example, Service Engines, pool members) across OpenStack AZs decreases the likelihood of application outages.

Note:

OpenStack AZs do not isolate subnets. On the contrary, subnets span OpenStack AZs; by default, all hosts have accessibility to all subnets. Consequently, use of this feature does not immunize apps from network outages.

Deploying OpenStack AZ

NSX Advanced Load Balancer’s OpenStack AZ awareness causes SEs in an SE group to be deployed in multiple OpenStack AZs.



As per the above flow,

  • Two AZs have been defined, AZ-1 and AZ-2. Starting from time t0, an SE group is shown expanding to a total of four SEs.

  • At t1, SE1 is deployed in AZ-1. In expanding the group beyond that, NSX Advanced Load Balancer’s goal is to ensure the group has at least one SE in each AZ.

  • When SE2 needs to be deployed, NSX Advanced Load Balancer attempts to place it in AZ-2. This placement is successful at t2.

  • In subsequent SE deployments, NSX Advanced Load Balancer randomly chooses from among all defined AZs.

  • When NSX Advanced Load Balancer deploys SE3, it randomly chooses AZ-2. Sometime later, SE4 is deployed; AZ-1 is randomly chosen.

  • However, AZ-2 could have been chosen. NSX Advanced Load Balancer relies on its random algorithm to distribute SEs evenly across AZs over time. In making an AZ choice, it does not consider existing SE occupancy of AZs.

  • If an AZ fails, NSX Advanced Load Balancer will re-deploy the affected SEs into the remaining healthy AZs, always to ensure at least one SE is running in each.

Configure OpenStack AZs through the NSX Advanced Load Balancer UI

Navigate to Infrastructure > Service Engine Group for a list of SE groups. Click the edit icon.

When the SE Group editor appears, click the Advanced tab to reveal SE placement options. Select Any (the default for Service Engine scope) to keep NSX Advanced Load Balancer OpenStack AZ awareness off. Otherwise, select Availability Zone and then select one or more AZs from the drop-down menu.

Configure OpenStack AZs through the NSX Advanced Load Balancer CLI

Specify one or more OpenStack availability zones by assigning values to openstack_availability_zones, a repeating group within the ServiceEngineGroup object. NSX Advanced Load Balancer deploys SE group members into availability zones if and when one or more zones are defined. Specifying no openstack_availability_zones values causes the default (no AZ awareness) to prevail.

The NSX Advanced Load Balancer shell’s configure command reveals the values of parameters within the ServiceEngineGroup object and permits one to change them. Below is an abbreviated example output, with the majority of parameters removed for the sake of clarity.

admin:jenkins-func-placement-controller]: > configure serviceenginegroup Default-Group
Updating an existing object. Currently, the object is:
+---------------------------------------+---------------------------------------------------------+
| Field                                 | Value                                                   |
+---------------------------------------+---------------------------------------------------------+
| uuid                                  | serviceenginegroup-5c82725c-8932-4f8a-88f7-f8063546c293 |
| name                                  | Default-Group                                           |
| max_vs_per_se                         | 4                                                       |
| min_scaleout_per_vs                   | 1                                                       |
| max_scaleout_per_vs                   | 2                                                       |
| max_se                                | 4                                                       |
.                                       .                                                         .
.                                       .                                                         .
.                                       .                                                         .
| openstack_availability_zones[1]       | testAZ                                                  |
| openstack_availability_zones[2]       | nova                                                    |
.                                       .                                                         .
.                                       .                                                         .
.                                       .                                                         .
+---------------------------------------+---------------------------------------------------------+