問題

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

原因

解決方案

  1. 透過 Admin CLI get maintenance-mode,確認傳輸節點未處於 NSX 維護模式。
  2. 呼叫下列其中一個 API:
    1. (已棄用) GET API/v1/transport-nodes/<uuid>/status
    2. 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/configs/management,來驗證是否已設定 FQDN 內容 (供傳輸節點用來聯繫 NSX Manager 或控制器),並檢視 publish_fqdns 的值。
    若已設定 FQDN,請驗證控制器 FQDN 是否可以連線,以及傳輸節點是否使用 FQDN 值來聯繫控制器,其作法是先對控制器 FQDN 執行 ICMP ping 動作,然後執行 Admin CLI get controllers,以驗證是否正確填入了控制器 FQDN 值。
  4. 遵循上述的主機代理程式疑難排解步驟,驗證主機代理程式服務是否正在執行。
  5. 驗證 controller.xml 檔案是否存在,且其中包含主機傳輸節點作為其成員:/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 服務,以觸發該檔案的重新建立動作。