要将分布于不同地理位置的多个 VMware Cloud Director 安装或服务器组及其组织作为单个实体进行管理和监控,可以使用 VMware Cloud Director 多站点功能。

有效实施多站点

将两个 VMware Cloud Director 站点关联后,您可以将这些站点作为单个实体进行管理。您也可以将这些站点的组织彼此关联。请参见在 VMware Cloud Director 中创建站点关联。当组织属于某个关联的成员时,尽管每个成员组织及其资产位于所占用站点的本地,组织用户也可以使用 VMware Cloud Director Tenant Portal 访问任何成员站点上的组织资产。

注:

这些站点必须使用相同的 VMware Cloud Director API 版本或相隔一个主要版本。例如,可以将 VMware Cloud Director 10.1(API 版本 34.0)站点与 VMware Cloud Director 站点版本 10.0、10.1、10.2 或 10.2.2(API 版本分别为 33.0、34.0、35.0 或 35.2)相关联。

将两个站点关联后,可以使用 VMware Cloud Director API 或 VMware Cloud Director Tenant Portal 关联占用这些站点的组织。请参见VMware Cloud Director API 编程指南》VMware Cloud Director 租户指南》中的配置和管理多站点部署主题。

站点或组织可以与对等方形成无限的关联,但每个关联只能包含两个成员。每个站点或组织必须具有自己的私钥。关联成员通过交换公钥建立信任关系,可使用公钥在各个成员间验证签名请求。

VMware Cloud Director 服务器组(一组共享 VMware Cloud Director 数据库的服务器)的范围定义关联中的每个站点。关联中的每个组织占用一个站点。组织管理员可以控制组织用户和组对每个成员站点的资产的访问。

站点对象和站点关联

在安装或升级过程中,会创建一个代表本地 VMware Cloud Director 服务器组的 Site 对象。授权扩展到多个 VMware Cloud Director 服务器组的系统管理员可以将这些服务器组配置为 VMware Cloud Director 站点的关联。

站点名称

使用 UUID 名称属性创建的每个 Site 对象。
GET https://Site-B.example.com/api/site
...
<Site name="b5920690-fe13-4c31-8e23-9e86005e7a7b" ...>
   ...
   <RestEndpoint>https://Site-A.example.com/api/org/Org-A</RestEndpoint>
   <RestEndpointCertificate>-----BEGIN CERTIFICATE-----
      MIIDDTCCAfWgAwIBAgI...Ix0eSE= -----END CERTIFICATE-----
   </RestEndpointCertificate>
   ...
</Site>
虽然不要求站点名称与 API 端点中的主机名一致,但系统管理员可以通过类似如下请求更新站点名称,以便于 VMware Cloud Director API 用户执行管理任务:
PUT https://Site-B.example.com/api/site
content-type: application/vnd.vmware.vcloud.site+xml
...
<Site name="Site-B" ...>
   ...
   <RestEndpoint>https://Site-A.example.com/api/org/Org-A</RestEndpoint>
   <RestEndpointCertificate>-----BEGIN CERTIFICATE-----
      MIIDDTCCAfWgAwIBAgI...Ix0eSE= -----END CERTIFICATE-----
   </RestEndpointCertificate>
   ...
</Site>
请求正文中的 Site 元素必须保留 GET .../site 请求返回时所采用的格式。证书前后的其他字符(特别是回车符、换行符或空格)可能会导致系统返回错误请求异常。

组织关联

完成站点关联后,任何成员站点上的 组织管理员都可以开始关联其组织。
注: 无法将 System 组织与租户组织相关联。任何站点上的 System 组织都只能与另一个站点上的 System 组织相关联。

授权标头和请求扇出

成功登录请求的 Session 响应包括值为可使用的编码密钥的 X-VMWARE-VCLOUD-ACCESS-TOKEN 标头以及 X-VMWARE-VCLOUD-TOKEN-TYPE 标头的值,用于构建包含在后续请求中的 JWT Authorization 标头,以便取代已弃用的 x-vcloud-authorization 标头,该已弃用标头不会针对关联成员对您进行身份验证。有关登录到 VMware Cloud Director API 的详细信息,请参见创建 VMware Cloud Director API 会话

通过在 Accept 标头中指定 multisite=value 对,可以发出扇出到多个关联成员的请求。如果要扇出请求,value 可以是 global 或以冒号分隔的位置 ID 列表。有关获取位置 ID 的信息,请参见授权的位置。将 value 设置为 local 时,请求不会扇出,而是会包含扇出上的多站点元数据。

例如,在发出请求(例如从组织的关联中检索资源列表的查询)时,可以在 Accept 标头中指定 multisite=global 对。通过指定 multisite=global 对,可以将请求扇出到所有关联成员并返回汇总列表。
Accept: application/*;version=30.0;multisite=global

您可以指定以冒号分隔的位置 ID 列表,例如 multisite=ID-a:ID-b:ID-x。除非在 Accept 标头中包括此值,否则该请求将仅返回作为请求目标的组织所拥有的资源。除非您向已进行身份验证的同一组织发出请求,否则还必须包含一个 X-VMWARE-VCLOUD-AUTH-CONTEXT 标头,指定将完成请求的组织的名称。

如果身份验证请求包含 multisite= value 对,则当该请求在任何关联成员处失败时,响应将包括 Link 元素。失败类别以链接的 rel 值表示。
rel="fanout:failed"
成员状态为 ACTIVE,但成员身份验证由于某些其他原因失败。
rel="fanout:skipped"
由于关联状态为 ASYMMETRICUNREACHABLE,已跳过成员身份验证。
失败或跳过的请求 URL 在 Link 的值 href 中。

授权的位置

对关联成员的站点进行身份验证时, Session 响应会包含一个 AuthorizedLocations 元素,该元素为其他关联成员提供 VMware Cloud Director API 和 VMware Cloud Director 租户门户端点。在此示例中:
  • Site-A.example.comSite-B.example.com 相关联。
  • 用户以系统管理员身份登录到 Site-A。
请求:
POST https://Site-A.example.com/api/sessions
Authorization: Basic ...
Accept: application/*;version=30.0
...
响应:
200 OK
...
X-VMWARE-VCLOUD-ACCESS-TOKEN: eyJhbGciOiJSUzI1NiJ9....Rn4Xw
X-VMWARE-VCLOUD-TOKEN-TYPE: Bearer
Content-Type: application/vnd.vmware.vcloud.session+xml;version=30.0;multisite=global
...
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Session ...
   ...  
   <AuthorizedLocations>
      <Location>
         <LocationId>a93c9db9-7471-3192-8d09-a8f7eeda85f9@9a41...
         </LocationId>
         <SiteName>Site-A</SiteName>
         <OrgName>System</OrgName>
         <RestApiEndpoint>https://site-a.example.com
         </RestApiEndpoint>
         <UIEndpoint>https://site-a.example.com
         </UIEndpoint>
         <AuthContext>System</AuthContext>
      </Location>
      <Location>
         <LocationId>a93c9db9-7471-3192-8d09-a8f7eeda85f9@4f56...
         </LocationId>
         <SiteName>Site-B</SiteName>
         <OrgName>System</OrgName>
         <RestApiEndpoint>https://site-b.example.com
         </RestApiEndpoint>
         <UIEndpoint>https://site-b.example.com
         </UIEndpoint>
         <AuthContext>System</AuthContext>
      </Location>
   </AuthorizedLocations>
</Session>

用户和组身份

站点和组织的关联必须接受使用相同的身份提供程序 (IDP)。必须通过此 IDP 管理关联中所有组织的用户和组身份。

关联可以自由选择最适合它们的 IDP。请参见在 VMware Cloud Director 中管理身份提供程序

VMware Cloud Director 10.4.1 开始,服务帐户可以使用多站点功能将分布于不同地理位置的多个 VMware Cloud Director 安装或服务器组及其组织作为单个实体进行管理和监控。如果服务帐户向不同于对其进行身份验证的组织发出请求,请确认该服务帐户存在于关联的组织中,并且具有相同的名称和软件 ID。请参见在 VMware Cloud Director 中管理服务帐户

组织用户和组的站点访问控制

组织管理员可以配置其 IDP 以生成在所有成员站点上有效或仅在部分成员站点上有效的用户或组访问令牌。虽然所有成员组织中的用户和组身份都必须相同,但是用户和组权限会受到每个成员组织中分配给这些用户和组的角色的限制。向成员组织中的用户或组分配角色,与您创建的任何自定义角色一样。

负载均衡器要求

有效实施多站点部署需要配置一个负载均衡器,该负载均衡器将机构端点(例如,https://vcloud.example.com)接收的请求分发到站点关联的每个成员的端点(例如,https://us.vcloud.example.comhttps://uk.vcloud.example.com)。如果站点有多个单元,则还必须配置一个负载均衡器,用于在其所有单元间分发入站请求,以便对 https://us.vcloud.example.com 的请求可以由 https://cell1.us.vcloud.example.comhttps://cell2.us.vcloud.example.com 等处理。

注: 只能将全局负载均衡器(此示例中为 https://vcloud.example.com)用于 UI 访问。如果您开发自己的脚本或程序以使用 REST API,这些调用必须针对特定的站点。

VMware Cloud Director 10.3 开始,将重定向所有到达多站点部署的负载均衡端点的客户端请求。当请求到达负载均衡端点时,即使请求到达的站点是正确的站点,系统也会发出重定向并反映在用户可见的 URL 中,以指定请求定向到正确的位置。

例如,部署包含两个站点(https://site1.vcloud.example.comhttps://site2.vcloud.example.com),且这两个站点都部署在一个全局负载均衡端点 (https://us.vcloud.example.com) 后。从 VMware Cloud Director 10.3 开始,当位于站点 1 的组织 (https://us.vcloud.example.com/org1) 的请求到达负载均衡端点时,如果请求到达站点 1,则站点会将请求转发到 https://site1.vcloud.example.com/org1 以向自身发送重定向。在 VMware Cloud Director 10.2.x 及更低版本中,当负载均衡器收到位于同一位置的组织的请求时,不会发出重定向,而是通过公用端点的 URL https://us.vcloud.example.com/org1 处理请求。

网络连接要求

如果要使用多站点功能,每个站点的每个单元都必须能够向所有站点的 REST API 端点发出 REST API 请求。如果使用“负载均衡器要求”部分中的示例,则 cell1.us.vcloud.example.comcell2.us.vcloud.example.com 必须能够访问 REST API 端点 uk.example.com。对于 uk.example.com 下的所有单元,反之亦然。这意味着单元还必须能够对自己的 REST API 端点进行 REST API 调用,因此 cell1.us.vcloud.example.com 必须能够对 https://us.vcloud.example.com 进行 REST API 调用。

要实现 REST API 扇出,必须向所有站点的 REST API 端点发出 REST API 请求。例如,如果 UI 或 API 客户端发出多站点请求,要求从所有站点获取组织页面,且 cell1.us.vcloud.example.com 处理该请求。单元 cell1 必须进行 REST API 调用,以使用为相关站点配置的 REST API 端点从每个站点获取组织页面。当所有站点返回其组织页面后,cell1 将整理结果并返回包含所有其他站点数据的单个结果页面。

站点和证书

当某站点与其他站点关联时,如果更新此站点的证书,可能必须告知其他站点此更改。如果不告知其他站点此证书更改,则多站点扇出可能会受到影响。

如果将站点上的证书替换为有效且完好签名的证书,则不需要通知其他站点。由于证书有效且完好签名,其他站点中的单元可以继续安全无中断地连接到该证书。

如果将站点上的证书替换为自签名证书,或者证书存在阻止自动信任的其他问题,则需要通知其他站点。例如,如果证书过期,则必须通知其他站点。在其他每个站点上,必须将证书上载到 Service Provider Admin Portal 中的 受信任的证书。请参见 使用 VMware Cloud Director Service Provider Admin Portal导入受信任的证书。导入证书时,上载证书的站点可以信任获取新证书的站点。
注: 在远程站点上安装这些证书之前,可以先将这些证书导入到其他站点的“受信任的证书”。这可以确保通信不会中断,因为旧证书和新证书都位于“受信任的证书”池中。不需要重新关联站点。

关联成员状态

创建站点或组织的关联后,本地系统会定期检索每个远程关联成员的状态,并在本地站点的 VMware Cloud Director 数据库中更新该状态。成员状态在 SiteAssociationMemberOrgAssociationMemberStatus 元素中可见。 Status 元素可具有以下三个值之一:
ACTIVE
双方已建立关联,并且能够与远程方成功通信。
ASYMMETRIC
本地站点已建立关联,但是远程站点尚未互换。
UNREACHABLE
双方已创建关联,但当前网络无法访问远程站点。

Service Provider Admin PortalTenant Portal 中,状态显示为 ConnectedPartially ConnectedUnreachable

成员状态“检测信号”过程以多站点系统用户身份运行,即 VMware Cloud Director 安装过程中在系统组织中创建的本地 VMware Cloud Director 用户帐户。虽然该帐户是系统组织的成员,但它不具有系统管理员权限。它只有一个权限,即 Multisite: System Operations,此权限允许它发出 VMware Cloud Director API 请求以检索某个站点关联的远程成员的状态。