Removing Stale ESXi Transport Nodes with VDS Topology Dependencies in NSX
search cancel

Removing Stale ESXi Transport Nodes with VDS Topology Dependencies in NSX

book

Article ID: 451172

calendar_today

Updated On:

Products

VMware NSX

Issue/Introduction

  • Stale ESXi hosts remain visible in the NSX-T/NSX UI after being deleted from vCenter Server.
  • Monitoring alarms trigger due to these orphaned transport node entries.
  • Attempts to delete the transport node fail due to dependencies, such as stale logical ports or VDS topology associations which can be verified by search the stale node in global search.
  • Error code 26210 ("Same IP already exists") may appear if re-preparing the host.

Environment

VMware NSX

Cause

ESXi hosts were removed from the vCenter inventory or a cluster without being properly decommissioned or "unprepared" from NSX first. This leaves residual metadata, logical port attachments, and transport node records in the NSX Management Plane database. If the host was part of an NVDS-to-VDS migration, it may also have a persistent association with the VDS topology.

Resolution

  1. Clear VDS Topology Association
    • Identify the VDS topology associated with the stale host.
    • Rerun the topology precheck. This often triggers a synchronization that clears orphaned host associations.
  2. Identify Stale Entries via Corfu Tables
    • Run the corfu_tool_runner.py script on the NSX Manager.
    • Inspect the following tables for the stale host's UUID:
      • HostTransportNode
      • TransportNodeState
      • HostModelMsg
  3. Perform Search Resync
    • If the hosts are gone from the database but persist in the UI, resync the search index.
    • Log in to each NSX Manager CLI and run:
      > start search resync all
      > start search resync telemetry
  4. Manual Logical Port Cleanup
    • If dependencies persist, identify stale logical ports associated with the host UUID using: GET /api/v1/logical-ports?transport_node_id=<node-id>
    • Delete the ports manually via API or using a cleanup script (e.g., NSX-3.1.X-stale-lports-cleanup-v1.py).
  5. Force Delete the Transport Node
    • Once dependencies are cleared, execute a force deletion via API: DELETE https://<nsx-mgr-ip>/api/v1/transport-nodes/<node-id>?force=true

Additional Information

Related Information