VMware Cloud Director service で VMware Cloud Director インスタンスを SDDC に関連付けてから、さまざまなタスクが実行できなくなることがあります。
問題
VMware Cloud Director を使用して VMware Proxy Service インスタンスを SDDC に関連付けた後、vCenter Server が切断状態と表示されることがあります。更新または再接続を試みると、SocketTimeoutException
などのネットワーク例外が発生し、処理が失敗します。
仮想マシン コンソールを表示できないか、OVF および OVA ファイルをアップロードまたはダウンロードできません。
ネットワーク プール、外部ネットワーク、Edge Gateway などのネットワーク リソースを追加、編集、または削除することができません。
VMware Cloud Director が NSX への API 呼び出しを行うと、vcd-debug-container.log に、Received Response: 503
のようなエントリが記録されます。
原因
この問題は、VMware Cloud Director インスタンスが vCenter Server、ESXi ホストと通信できないか、NSX 経由で VMware Proxy Service と通信できないために発生します。
これには 2 つの理由が考えられます。
VMware Cloud Director と VMware Proxy Service 間の通信が失敗しています。あるいは、VMware Cloud on AWS SDDC とインスタンスの関連付けで展開したプロキシ仮想マシンと VMware Cloud Director 間の通信が成功しても、プロキシ仮想マシンと vCenter Server または NSX 間の接続が失敗しています。
前提条件
- VMware Cloud Director ユーザー インターフェイスのリソース プールで、SDDC と vCenter Server インスタンスの関連付けで展開した VMware リバース プロキシ クライアント仮想マシンを見つけます。
- リバース プロキシ クライアント仮想マシンの OS に root としてログインします。
ヒント: 仮想マシンの vApp プロパティで、
root-password
の下に
root ユーザーのパスワードがあります。
解決方法
- 仮想マシンがネットワークに接続されていることを確認するには、
transporter-status.sh
コマンドを実行します。
仮想マシンが接続されている場合、このコマンドから
UP
ステータスが返されます。また、
command_channel_1
と
command_channel_2
のステータスが
CONNECTED
と返されます。
- VMware リバース プロキシ クライアント仮想マシンに有効な IPv4 アドレスがあることを確認します。
- vCenter Server のリソース プールで仮想マシンに移動し、仮想マシンに有効な IPv4 アドレスがあるかどうか確認します。
- 仮想マシンに有効な IPv4 アドレスがない場合は、次のいずれかを選択します。
- VMware リバース プロキシ クライアント仮想マシンの最新イメージが保存されている URL に cURL 要求を実行します。
- VMware リバース プロキシ クライアント仮想マシンの OS から、VMware プロキシ サービスへの cURL 要求を実行します。
curl -v <VMware-Proxy-Service-IP-address>
VMware プロキシ サービスの IP アドレスは、VMware リバース プロキシ クライアント仮想マシンの vApp プロパティの
reverse-proxy-host
にあります。
このコマンドは、次のような結果を返します。
Connected to <VMware-Proxy-Service-IP-address> port 80
- VMware リバース プロキシ クライアント仮想マシンから vCenter Server、NSX、および ESXi への ping の送信を許可しないファイアウォール ルールや、その他のネットワークの問題がないことを確認します。
許可されたターゲット リストに CIDR 表記が含まれ、その中のホストの 1 つにアクセスできない場合は、特定のホストに対する ping が成功することを確認します。成功した場合は、ホストの IP アドレスまたは FQDN を別のエントリとしてリストに追加します。
- VMware リバース プロキシ クライアント仮想マシンが有効な API トークンを使用していることを確認します。
現在の API トークンは、VMware リバース プロキシ クライアント仮想マシンの vApp プロパティの
csp-token
にあります。
- 要求の本文に
refresh_token={your-api-token-value}
を使用して、https://console.cloud.vmware.com/csp/gateway/am/api/auth/api-tokens/authorize に対して POST 要求を実行します。
例:
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 トークンが期限切れの場合、要求は Invalid Token
または 400 Bad Request
エラーを返します。「VMware リバース プロキシ クライアント仮想マシンの API トークンを更新する方法」を参照してください。
API トークンが有効な場合、要求は次のようなアクセス トークンを含む応答を返します。
{
"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/ の [Encoded] セクションに貼り付けます。
- ペイロードで、
context_name
に VMware Cloud 組織の組織 ID が含まれ、Perms
セクションに provider:network ロールが含まれていることを確認します。