在 VMware Cloud Director service 中將 VMware Cloud Director 執行個體與 SDDC 建立關聯之後,您可能無法執行各種工作。
問題
使用 VMware Proxy Service 將 VMware Cloud Director 執行個體與 SDDC 建立關聯之後,vCenter Server 可能顯示為已中斷連線。如果您嘗試重新整理或重新連線,則會導致失敗與網路例外狀況,例如 SocketTimeoutException
。
您無法開啟虛擬機器主控台,也無法上傳和下載 OVF 和 OVA 檔案。
您無法新增、編輯或刪除網路資源,例如網路集區、外部網路或 Edge 閘道。
當 VMware Cloud Director 對 NSX 進行 API 呼叫時,在 vcd-debug-container.log 中,您會看到類似於 Received Response: 503
的項目。
原因
發生此情況的原因是,VMware Cloud Director 執行個體無法透過 VMware Proxy Service 與 vCenter Server、ESXi 主機或 NSX 進行通訊。
發生此情況的可能原因有兩個。
VMware Cloud Director 與 VMware Proxy Service 之間的通訊失敗,或者 VMware Cloud Director 與在建立執行個體關聯至 VMware Cloud on AWS SDDC 期間部署的 Proxy 虛擬機器之間通訊成功,但 Proxy 服務與 vCenter Server 或 NSX 之間的連線失敗。
必要條件
- 在 vCenter Server 使用者介面的資源集區中找到在執行 SDDC 與 VMware Cloud Director 執行個體關聯時部署的 VMware 反向 Proxy 用戶端虛擬機器。
- 以根使用者身分登入反向 Proxy 用戶端虛擬機器的作業系統。
提示: 您可以在虛擬機器 vApp 內容的
root-password
下找到
根使用者的密碼。
解決方案
- 若要驗證虛擬機器是否具有網路連線,請執行
transporter-status.sh
命令。
如果虛擬機器已連線,該命令會傳回
UP
的狀態,且
command_channel_1
和
command_channel_2
的狀態為
CONNECTED
。
- 確認 VMware 反向 Proxy 用戶端虛擬機器具有有效的 IPv4 位址。
- 在 vCenter Server 的資源集區中導覽至虛擬機器,然後檢查該虛擬機器是否具有有效的 IPv4 位址。
- 如果虛擬機器沒有有效的 IPv4 位址,請選取下列其中一項。
- 對儲存 VMware 反向 Proxy 用戶端虛擬機器最新映像的 URL 執行 cURL 要求。
- 從 VMware 反向 Proxy 用戶端虛擬機器的作業系統中,對 VMware Proxy Service 執行 cURL 要求。
curl -v <VMware-Proxy-Service-IP-address>
您可以在 VMware 反向 Proxy 用戶端虛擬機器 vApp 內容的
reverse-proxy-host
下找到 VMware Proxy 服務 IP 位址。
命令傳回的結果與以下內容類似。
Connected to <VMware-Proxy-Service-IP-address> port 80
- 確認沒有防止 VMware 反向 Proxy 用戶端虛擬機器對 vCenter Server、NSX 和 ESXi 執行 Ping 的防火牆規則或任何其他網路問題。
如果允許的目標清單包含 CIDR 標記法,並且您無法連線其中的一個主機,請確認您是否可以對特定主機執行 Ping。如果可以成功執行 Ping,請將主機 IP 位址或 FQDN 作為單獨的項目新增至清單中。
- 確認 VMware 反向 Proxy 用戶端虛擬機器正在使用有效的 API Token。
您可以在 VMware 反向 Proxy 用戶端虛擬機器 vApp 內容的
csp-token
下找到目前的 API Token。
- 對 https://console.cloud.vmware.com/csp/gateway/am/api/auth/api-tokens/authorize 執行 POST 要求,並在要求本文中包含
refresh_token={your-api-token-value}
。
例如:
curl --location --request POST 'https://console.cloud.vmware.com/csp/gateway/am/api/auth/api-tokens/authorize' \
--header 'Accept: application/json' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--header 'Cookie: incap_ses_8217_1285679=sJfafQlQfgUmPGK0X6YIckRAaWIAAAAAZ5DsTuKH0eALPsXXCrk1Lw==; nlbi_1285679=qGFfKYa/khghkd06+iiRRwAAAAA7h7npdR2O1o9/MIk2Plre' \
--data-urlencode 'refresh_token=<your-csp-token>'
如果您的 API Token 已到期,要求將傳回 Invalid Token
或 400 Bad Request
錯誤。請參閱如何更新 VMware 反向 Proxy 用戶端虛擬機器的 API Token。
如果您的 API Token 有效,要求將傳回包含存取 Token 的回應,例如:
{
"id_token": "eyJhbGciOiJS.......srRmGX9eYKOKMA",
"token_type": "bearer",
"expires_in": 1799,
"scope": "ALL_PERMISSIONS openid group_ids group_names",
"access_token": "eyJhbGciOiJSU.........Q6Y9Yohgw",
"refresh_token": "B4STbh2fYFmjI9ABCv..............XeRniDiO4cBJjF82sWWprZfm7OLHn"
}
相關部分為 access_token
,一律以 "ey"
開頭,且為 JSON Web Token (JWT)。
- 複製
access_token
,然後將其貼到 https://jwt.io/ 中的已編碼區段。
- 確認在裝載中,
context_name
包含您的 VMware Cloud 組織的組織識別碼,且 Perms
區段包含 provider:network 角色。