要将分布于不同地理位置的多个 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 站点的关联。
站点名称
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
请求返回时所采用的格式。证书前后的其他字符(特别是回车符、换行符或空格)可能会导致系统返回错误请求异常。
组织关联
授权标头和请求扇出
成功登录请求的 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: application/*;version=30.0;multisite=global
您可以指定以冒号分隔的位置 ID 列表,例如 multisite=ID-a:ID-b:ID-x。除非在 Accept 标头中包括此值,否则该请求将仅返回作为请求目标的组织所拥有的资源。除非您向已进行身份验证的同一组织发出请求,否则还必须包含一个 X-VMWARE-VCLOUD-AUTH-CONTEXT 标头,指定将完成请求的组织的名称。
授权的位置
- Site-A.example.com 和 Site-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.com 和 https://uk.vcloud.example.com)。如果站点有多个单元,则还必须配置一个负载均衡器,用于在其所有单元间分发入站请求,以便对 https://us.vcloud.example.com 的请求可以由 https://cell1.us.vcloud.example.com、https://cell2.us.vcloud.example.com 等处理。
从 VMware Cloud Director 10.3 开始,将重定向所有到达多站点部署的负载均衡端点的客户端请求。当请求到达负载均衡端点时,即使请求到达的站点是正确的站点,系统也会发出重定向并反映在用户可见的 URL 中,以指定请求定向到正确的位置。
例如,部署包含两个站点(https://site1.vcloud.example.com 和 https://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.com 和 cell2.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 和 Tenant Portal 中,状态显示为 Connected
、Partially Connected
和 Unreachable
。
成员状态“检测信号”过程以多站点系统用户身份运行,即 VMware Cloud Director 安装过程中在系统组织中创建的本地 VMware Cloud Director 用户帐户。虽然该帐户是系统组织的成员,但它不具有系统管理员权限。它只有一个权限,即 Multisite: System Operations
,此权限允许它发出 VMware Cloud Director API 请求以检索某个站点关联的远程成员的状态。