可用区虚拟化

本文档介绍了可用区虚拟化,Google 使用此方法将公共可用区映射到数据中心内的内部物理硬件集群。可用区虚拟化让我们能够无缝扩展可用区、升级硬件以及停用物理基础架构,而不会影响客户。如果您的应用分布在多个项目中,并且您希望了解 Google 如何在整个物理基础架构中分布其可用区,请参阅本主题。

Google Cloud 资源托管在全球多个区域。每个区域由三个或四个可用区组成。可用区是一组逻辑资源,旨在避免发生相关故障。将资源置于某个区域的多个可用区可以降低影响您的应用的物理和软件基础架构故障的风险。将资源布置在不同区域中可以实现更高程度的故障独立性。

如需查看 Google Cloud 地理位置列表,请参阅区域和可用区。如需详细了解如何构建弹性应用,请参阅关于灾难恢复规划的 Google Cloud 解决方案系列

集群

所有 Google Cloud 硬件都会被组织为“集群”。集群代表由建筑物、电源和制冷基础架构支持的一组计算、网络和存储资源。基础架构组件通常支持单个集群,从而确保集群共享的依赖项更少。

asia-east1 包含 3 个可用区和 3 个集群。

图 1asia-east1 区域中有三个可用区。每个可用区都有自己的集群,其中包含各个资源。

但是,具有高度展示的可靠性和下游冗余性的组件可以在集群之间共享。例如,公共事业网格变电站通常是由多个集群共享,因为它非常可靠,每个集群都使用冗余电源系统。Google Cloud 设计的物理基础架构可支持 Google Cloud 服务的服务等级协议 (SLA) 和服务等级目标 (SLO)。

可用区到集群的映射

项目首次使用某个区域时,Google Cloud 会为用于该项目的可用区级资源的区域中的每个可用区选择一个唯一的集群。此选项称为“可用域到集群”映射。按项目选择默认的可用区到集群的映射,以便每位客户都能获得相同的功能和性能。在某个项目中,逻辑可用区与物理集群之间的映射是一致的,但另一个项目可能基于项目的可用区级资源具有完全不同的可用区到集群的映射。一个项目绝不会将两个可用区映射到同一个物理集群。

您可以使用 Virtual Private Cloud (VPC) 网络来保持项目之间的可用区到集群的映射的一致性。Google Cloud 会尝试将相同的可用区到集群的映射分配给共享一个 VPC 网络的所有项目。这种情况可能适用于可预测的原子应用组件故障。

虚拟化可用区

随着区域的扩展,每个可用区受到多个集群支持。我们的目标是将具有共享基础架构(例如建筑物或冷却基础架构)的集群划分到逻辑可用区,以使共享基础架构故障仅影响一个区域内的一个可用区。

asia-east1 可用区 A 和 B 分别扩展为两个集群。

图 2 asia-east1 中的三个可用区有两个已扩展,因此现在有两个集群。

尽量减少用来维护客户工作量的集群数量。在大多数情况下,您的可用区级工作负载包含在一个集群中。但是,如果在映射的主集群中未提供额外的容量或专用硬件,则可用区到集群的映射可能包含其他集群。

asia-east1 可用区 A 和 B 分别扩展为两个集群。

图 3 显示的图表展示了两个项目的可用区到集群的映射:

  • 项目 Fizz 将两个集群映射到 asia-east1-a,因为只有集群 z 支持 GPU 工作负载,只有集群 y 支持 TPU 工作负载。
  • 项目 Fizz 和项目 Buzz 将不同的集群映射到 asia-east1-b

虽然可用区到集群的映射很少发生变化,但随着容量需求和底层硬件产品的演变,确实会进行更改。例如,集群会添加到可用区以提高容量,并在停用后从可用区中移除。在任何维护事件期间,Google 都会尝试尽可能使用实时迁移功能来限制停机时间。

如果集群发生服务中断,系统会在 Google Cloud 状态信息中心报告与该集群关联的逻辑可用区发生服务中断,但是,并非所有客户资源都会受到影响,因为此可用区可能包含多个集群。因此,一些客户可能不会受到单个集群服务中断的影响。我们强烈建议您采用多可用区级架构,以尽可能降低服务中断造成的影响。

共享网络和虚拟化可用区

Virtual Private Cloud (VPC) 网络属于虚拟化网络,可在项目中的资源之间建立连接。多个项目可以共享一个 VPC 网络以实现跨项目连接,并且一个组织可以对等互连一个共享 VPC 网络以实现跨组织连接。我们的可用区虚拟化映射算法会尝试将同一个可用区到集群的映射分配给共享一个 VPC 网络的所有项目。即使这些项目位于不同的 Google Cloud 组织中也是如此。随着网络复杂性随项目和 VPC 数量的增加而增加,维护一致的可用区映射会变得更困难,因此不能保证一致性。

后续步骤