OpenStack AZ Awareness

Beginning with release 17.1.1, an Avi Vantage OpenStack deployment is aware of OpenStack availability zones. Deploying redundant resources of a virtual service (e.g., 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.

How It Works

Avi’s OpenStack AZ awareness causes SEs in an SE group to be deployed in multiple OpenStack AZs. Refer to the figure below. Two AZs have been defined, AZ-1 and AZ-2. Starting from time t0, an SE group is shown growing to a total of four SEs. At t1, SE1 is deployed in AZ-1. In growing the group beyond that, Avi Vantage’s goal is to ensure the group has at least one SE in each AZ. Consequently, when SE2 needs to be deployed, Avi attempts to place it in AZ-2. This placement is successful at t2. In subsequent SE deployments, Avi randomly chooses from among all defined AZs. When Avi deploys SE3, it randomly chooses AZ-2. Some time later, SE4 is deployed; AZ-1 is randomly chosen. However, in theory, AZ-2 could have been chosen. Avi Vantage relies on its random algorithm to evenly distribute SEs across AZs over time. In making an AZ choice, it does not consider existing SE occupancy of AZs.

If an AZ fails, Avi will re-deploy the affected SEs into the remaining healthy AZs, always with the goal to ensure at least one SE is running in each.

SE deployments over time into multiple OpenStack AZs

Configure OpenStack AZs via the Avi UI

Navigate to Infrastructure > Service Engine Group for a list of SE groups. Click on the edit icon (pencil) at the right of the appropriate row. When the SE Group editor appears, click the Advanced tab to reveal SE placement options. Accept Any (the default for Service Engine scope) to keep Avi OpenStack AZ awareness off. Otherwise, click Availability Zone and then select one or more AZs from the list that appears in the pulldown menu.

Service Engine editor

Configure OpenStack AZs via the Avi CLI

Specify one or more OpenStack availability zones by assigning values to openstack_availability_zones, a repeating group within the ServiceEngineGroup object. Avi Vantage 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 Avi 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                                                    |
.                                       .                                                         .
.                                       .                                                         .
.                                       .                                                         .
+---------------------------------------+---------------------------------------------------------+