VMware Cloud Director 实例与 VMware Cloud on AWS SDDC 关联后,您可能无法执行各种任务。

问题

VMware Cloud Director 实例与 VMware Cloud on AWS SDDC 关联后,vCenter Server 实例可能会显示为“已断开连接”。如果您尝试刷新或重新连接,会导致故障并引发网络连接异常,例如 SocketTimeoutException

您无法添加、编辑或删除网络资源,例如网络池、外部网络或 Edge 网关。

vcd-debug-container.log 中,您会看到类似于以下内容的条目:
java.lang.RuntimeException: Cannot execute request - Cannot execute request -
      com.fasterxml.jackson.core.JsonParseException: Unexpected character ('<' (code 60)): expected a valid value (number, String, array, object, 'true', 'false' or 'null') at [Source: (ByteArrayInputStream); line: 1, column: 2] - Json processing error. - Unexpected character ('<' (code 60)): expected a valid value (number, String, array, object, 'true', 'false' or 'null') at [Source: UNKNOWN; line: 1, column: 2] 

VMware Cloud DirectorNSX 进行 API 调用时,返回的结果为 Received Response: 503

原因

该问题之所以会发生,是因为 VMware Cloud Director 实例无法通过代理与 vCenter ServerNSX 进行通信。VMware Cloud Director 与在将实例关联到 VMware Cloud on AWS SDDC 期间部署的代理虚拟机之间可成功进行通信,但代理虚拟机与 vCenter ServerNSX 之间的连接失败。

前提条件

  1. vCenter Server UI 的资源池中找到代理虚拟机。该虚拟机的名称以 cds-proxy 开头。
  2. 联系您的 VMware 代表以获取代理虚拟机的 root 密码。

解决方案

  • 确认为代理虚拟机分配了有效的 IPv4 地址。
    1. vCenter Server UI 的资源池中导航到该代理虚拟机,然后检查该虚拟机是否具有有效的 IPv4 地址。
    2. 如果虚拟机没有有效的 IPv4 地址,请选择以下选项之一。
      • 单击网络选项卡,然后选择具有有效 DHCP 配置文件的网络。
      • 登录到虚拟机的操作系统,然后通过运行以下命令手动为虚拟机分配 IPv4 地址。
        sudo ifconfig ens160 IPv4-address netmask mask
        sudo route add default gw gateway-address ens160
  • 确认在 VMware Cloud on AWS 控制台的 CDS 代理管理组CDS 代理计算虚拟机清单组中以及在 CDS 代理规则 - xxx NAT 规则中存在虚拟机的 IPv4 地址。
    1. 通过 https://vmc.vmware.com 登录到 VMware Cloud on AWS 控制台。
    2. 单击“SDDC”卡,然后单击网络和安全
    3. 清单下方,单击
    4. 单击管理组,然后单击 CDS 代理管理组
    5. 单击查看成员,然后在 IP 地址选项卡中确认代理虚拟机的 IP 地址已存在。
    6. 单击计算组,然后单击 CDS 代理计算虚拟机
    7. IP 地址选项卡中,确认代理虚拟机的 IPv4 地址已存在。
    8. 在“网络”下方,单击“NAT”,确认在 CDS 代理规则 - xxx 规则中存在代理虚拟机的 IPv4 地址。
  • 确认代理虚拟机可以解析 vCenter ServerNSX Manager 的内部 IP 地址。
    1. 如有必要,可对 VMware Cloud on AWS API 运行 GET 请求以检索 vCenter ServerNSX Manager 的 FQDN。
      GET https://vmc.vmware.com/vmc/api/orgs/vmc-organization-ID/sddcs/vmc-SDDC-ID
    2. root 身份登录到代理虚拟机的操作系统,然后运行以下命令。
      nslookup vcenter-server-FQDN.com
      nslookup nsx-manager-FQDN.com
    3. 如果对 vCenter Server 运行查找命令失败,请在 /etc/hosts 文件中添加相应的条目。
      internal_vc_ip vcenter-server-FQDN.com
    4. 如果查找 NSX Manager FQDN 失败,请通过从 Internet 中运行 nslookup 来获取 NSX FQDN,然后在 /etc/hosts 文件中添加相应的条目。
      public_nsx_ip nsx-manager-FQDN.com
  • 确认您可以对 vCenter Server 执行 ping 操作,并且其 IP 地址可以正常解析。
  • 通过运行 cURL 请求,验证是否已正确配置 NSX Manager 防火墙和 NAT 规则。
    curl -v nsx-manager-FQDN.com
    如果正确配置了防火墙和 NAT 规则,则该请求将生成 Error 404 Page Not Found 消息。
  • 确认 NSX Edge 网关上的防火墙规则允许在代理虚拟机与 vCenter ServerESXiVMware Cloud Director 之间建立连接。
    1. 通过 https://vmc.vmware.com 登录到 VMware Cloud on AWS 控制台。
    2. 单击 SDDC 卡视图。
    3. 单击网络和安全,然后单击网关防火墙
    4. 单击管理网关选项卡,确认代理 VC 访问代理 ESX 访问管理网关防火墙规则均配置了正确的代理虚拟机 IP 地址。
    5. 单击计算网关选项卡,然后确认 CDS 代理计算防火墙入站和出站规则均允许在代理虚拟机与 VMware Cloud Director service 之间建立连接。