NSX-T 3.2 and NSX ALB (Avi) Deployment Error - "Controller is not reachable. {0}"
Tags: avi, loadbalancing, nsxalb, nsxt
Published: 2021-12-23 18:41:11

---
title: NSX-T 3.2 and NSX ALB (Avi) Deployment Error - "Controller is not reachable. {0}"
published: true
date: 2021-12-23 06:00:00 UTC
tags: Avi,LoadBalancing,NSXALB,NSXT
canonical_url: https://blog.engyak.co/2021/12/nsx-t-32-and-nsx-alb-avi-deployment.html
---

NSX-T 3.2 has been released, and has a ton of spiffy features. The NSX ALB integration is particularly neat, but while repeatedly (repeatably) breaking the integration to learn more about it, I ran into this error:

[![](https://blogger.googleusercontent.com/img/a/AVvXsEjhNw3Jv_p52o8AJ-DJr4Zk8nU4YdNpjLqHA3_3BmHtlgMWKOkoEmZSI5vsiuKDFS8X1LYAOX_XL2AVu2yvQ2XVKbK6z1ia9XtV0AZSxzJ5PvOuQoljrkJxDDwkKqnaOVRKsJ58G02LiKQfU_0HSmcpZ974KlI7CH6R9fa5Z_KlmbMDK4Hj8-CUFHj3=s16000) ](https://blogger.googleusercontent.com/img/a/AVvXsEjhNw3Jv_p52o8AJ-DJr4Zk8nU4YdNpjLqHA3_3BmHtlgMWKOkoEmZSI5vsiuKDFS8X1LYAOX_XL2AVu2yvQ2XVKbK6z1ia9XtV0AZSxzJ5PvOuQoljrkJxDDwkKqnaOVRKsJ58G02LiKQfU_0HSmcpZ974KlI7CH6R9fa5Z_KlmbMDK4Hj8-CUFHj3=s455)

When deploying NSX ALB appliances from the NSX Manager, it's very important to keep the NSX ALB Controller appliances **where NSX Manager can see them**. In addition, the appliances **must exist on the same Layer 2 Segment**. 

  

Detailed requirements for running the two together are here: [https://docs.vmware.com/en/VMware-NSX-T-Data-Center/3.2/installation/GUID-3D1F107D-15C0-423B-8E79-68498B757779.html](https://docs.vmware.com/en/VMware-NSX-T-Data-Center/3.2/installation/GUID-3D1F107D-15C0-423B-8E79-68498B757779.html)  

This post is not about the integration, however.

The following error:

```
NSX Advanced Load Balancer Controller is not reachable {0}
```

Indicates that NSX-T has orphaned appliances. NSX-T has API invocations for cleaning this up, but not GUI integrations. This is similar to other objects, and is because programmatic checking should be used to allow this work to be reliable.

To fix this, we must perform the following steps:

- Get the list of NSX ALB appliances, if there isn't any, exit  
- Iterate through the list of appliances, prompting the user to delete
- After deleting, check to make sure that it was deleted

The first step for any API invocations should be [consulting the documentation](https://developer.vmware.com/apis/1198/nsx-t). The NSX ALB Appliance management section is **3.7.1.4.** After researching the procedure, I found the following endpoints:

- [/policy/api/v1/alb/controller-nodes/deployments ](https://vdc-download.vmware.com/vmwb-repository/dcr-public/ce4128ae-8334-4f91-871b-ecce254cf69e/488f1280-204c-441d-8520-8279ac33d54b/api_includes/method_ListALBControllerNodeVMDeploymentRequests.html)
- [/policy/api/v1/alb/controller-nodes/deployments/<node-id>?action=delete](https://vdc-download.vmware.com/vmwb-repository/dcr-public/ce4128ae-8334-4f91-871b-ecce254cf69e/488f1280-204c-441d-8520-8279ac33d54b/api_includes/method_DeleteAutoDeployedALBControllerNodeVM.html)    

Performing this procedure with programmatic interfaces is a good example of when to use APIs - the task is well defined, the results are easy to test, and work to prevent user mistakes is rewarding.

TL;DR - I wrote the code here, integrating it with the REST client: [https://github.com/ngschmidt/python-restify/blob/main/nsx-t/nsxalb\_deployment\_cleanup.py](https://github.com/ngschmidt/python-restify/blob/main/nsx-t/nsxalb_deployment_cleanup.py)