問題

當傳輸節點與 NSX Manager 的連線處於「已啟動」狀態,但控制器處於「關閉」狀態時,會出現此問題。在您執行 get managers 時,NSX 會返回作用中的管理程式節點,而 get controllers 不會返回這個傳輸節點的任何作用中控制器,雖然說這個傳輸節點處於「已連線」狀態且其工作階段狀態也是「已啟動」。

原因

解決方案

  1. 透過 admin cli「get maintenance-mode」,確認傳輸節點未處於 NSX 維護模式。
  2. 呼叫 API GET api/v1/infra/sites/<site-id>/enforcement-points/<enforcementpoint-id>/host-transport-nodes/<host-transport-node-id>/status,其中 <site-id> 和 <enforcementpoint-id> 的預設值為 default。
  3. 或者,呼叫已棄用的 API GET API/v1/transport-nodes/<uuid>/status
  4. 執行 API GET /api/v1/configs/management,來驗證是否已設定 FQDN 內容 (供傳輸節點用來聯繫 NSX Manager/控制器),並檢視 publish_fqdns 的值。
    若已設定 FQDN,請驗證控制器 FQDN 是否可以連線,以及傳輸節點是否使用 FQDN 值來聯繫控制器,其作法是先對控制器 FQDN 執行 ICMP ping 動作,然後執行 Admin CLI get controllers,以驗證是否正確填入了控制器 FQDN 值。
  5. 驗證 controller.xml 檔案是否存在,且其中包含主機 TN 作為其成員:/etc/vmware/nsx/controller-info.xml
  6. 如果主機處於 NSX 維護模式,請執行 Admin CLI set maintenance-mode false 或 API,讓主機退出 NSX 維護模式:POST /api/v1/transport-nodes/<node-id>?action=exit_maintenance_mode
  7. 若已設定 FQDN,且 ICMP ping 適用於控制器 FQDN,請嘗試取消設定再重新設定 FQDN 內容,其作法是執行 API PUT /api/v1/configs/management,並將 publish_fqdns 的值設定為 false,然後再次執行該 API,並將值設定為 true
  8. 執行 CLI 命令 etc/init.d/<service-name> start,以啟動主機上的代理程式服務 (若有任何服務已停止)。
  9. 如果 controller.xml 檔案包含不正確的資料,請重新啟動主機上的 nsx-proxy 服務,以觸發該檔案的重新建立動作。