为受限于位置的工作负载设计灾难恢复架构

Last reviewed 2024-07-20 UTC

本文档讨论了如何使用 Google Cloud 构建灾难恢复(DR)以满足特定位置的要求。对于某些受管制的行业,工作负载必须遵守这些要求。在这种情况下,以下一个或多个要求适用:

  • 静态数据必须限制在指定的位置。
  • 数据必须在其所在位置处理。
  • 只能从预定义位置访问工作负载。
  • 必须使用客户管理的密钥来加密数据。
  • 如果您使用的是云服务,则每个云服务都必须至少提供两个相互冗余的位置。如需查看位置冗余要求的示例,请参阅云计算合规性标准目录 (C5)

该系列包含以下部分:

术语

在开始为受限于位置的工作负载构建灾难恢复之前,最好先查看 Google Cloud 中使用的位置术语。

Google Cloud 在美洲、欧洲、中东和非洲以及亚太地区提供服务。例如,伦敦 (europe-west2) 是欧洲的一个区域,俄勒冈 (us-west1) 是北美的一个区域。某些 Google Cloud 产品将多个区域组合为特定的多区域位置,该位置的访问方式与使用区域的方式相同。

区域进一步划分为多个可用区,您可以在其中部署某些 Google Cloud 资源,例如虚拟机、Kubernetes 集群或 Cloud SQL 数据库。Google Cloud 上的资源可以是多区域性、区域级或可用区级。默认指定为多区域性的一些资源和产品也可以限制在一个区域中。不同类型的资源说明如下:

  • 多地区资源由 Google Cloud 设计为在地区内和跨地区冗余和分布。多区域资源可以适应单地区故障。
  • 地区资源在地区内的多个区域中以冗余方式部署,并且能够适应地区内区域的故障。
  • 区域资源在单个区域内运行。如果某个区域不可用,则该区域中的所有区域性资源都不可用,直到服务恢复。将某个区域视为单故障网域。您需要构建应用以缓解单个地区不可用的风险。

如需了解详情,请参阅地理位置和地区

为受限于位置的工作负载规划灾难恢复

您在设计应用时所采用的方法取决于您的工作负载类型以及您必须满足的位置要求。此外,还要考虑为什么必须满足这些要求,因为您的决定直接影响您的灾难恢复架构。

首先,阅读 Google Cloud 灾难恢复规划指南。在考虑受限于位置的工作负载时,请专注于本规划部分中介绍的要求。

定义您的位置要求

在开始设计之前,请回答以下问题来定义您的位置要求:

  • 静态数据在哪里?答案说明了您可以使用的服务,以及可用于实现 RTO/RPO 值的高可用性(HA)和灾难恢复方法。使用 Cloud 位置页面确定范围内的产品。
  • 您可以使用加密技术来缓解要求吗?如果您能够通过使用 Cloud External Key Manager 和 Cloud Key Management Service 的加密技术来缓解位置要求,则可以使用多地区和双地区服务,并遵循数据的灾难恢复场景中介绍的标准的 HA/DR 技术。
  • 数据是否可以在其存储外的地方处理?您可以使用 GKE Enterprise 等产品提供混合环境来满足您的要求,或实现特定于产品的控制,例如对一个区域中多个可用区的 Compute Engine 实例进行负载均衡。使用组织政策资源位置限制条件来限制资源的部署位置。

    如果数据可以在其需要存储的地方之外进行处理,则可以按照灾难恢复基础组件应用的灾难恢复场景中的指导设计应用的“处理”部分。

    配置 VPC 安全控制边界,以控制谁可以访问数据并限制哪些资源可以处理数据。

  • 您可以使用多个地区吗?如果可以使用多个地区,您可以使用灾难恢复系列中介绍的许多方法。检查 Google Cloud 产品的多区域及区域限制条件。

  • 您是否需要限制谁可以访问您的应用?Google Cloud 具有多种产品和功能,可帮助您限制谁可以访问您的应用:

    • Identity-Aware Proxy (IAP)验证用户的身份,然后确定是否应允许该用户访问应用。组织政策使用网域限定共享限制条件来定义 IAM 政策中允许的 Cloud Identity 或 Google Workspace ID。
    • 特定于产品的位置控件。有关适当的位置限制,请参考要在架构中使用的每个产品。例如,如果您在使用 Cloud Storage,则需在指定区域中创建存储桶。

确定您可以使用的服务

根据您的位置和地区粒度要求确定可以使用哪些服务。设计受位置限制的应用时,需要了解可以将哪些产品限制在哪些地区,以及可以应用哪些控件来强制执行位置限制要求。

确定应用和数据的地区粒度

通过回答以下问题,确定应用和数据的地区粒度:

  • 您可以在设计中使用多地区服务吗?通过使用多区域服务,您可以创建可用性高的弹性架构。
  • 访问您的应用是否有位置限制?以下 Google Cloud 产品有助于强制执行可以从哪里访问您的应用:
  • 您的静态数据是否只限于特定地区?如果您使用代管式服务,请确保可以配置您使用的服务,以便将存储在该服务中的数据限制在特定地区。例如,使用 BigQuery 位置限制来指定数据集的存储位置和备份位置。
  • 您需要将应用限制在哪些地区?某些 Google Cloud 产品没有地区限制。使用 Cloud 位置页面和特定于产品的页面,验证可以在其中使用产品的区域,以及哪些缓解功能(如果有)可以将应用限制在特定区域。

使用 Google Cloud 产品满足位置限制

本部分详细介绍了将 Google Cloud 产品用作受限于位置的工作负载的灾难恢复策略的功能和缓解方法。建议您阅读本部分内容以及灾难恢复基础组件

组织政策

通过组织政策服务,您可以对 Google Cloud 资源进行集中控制。使用组织政策,您可以为整个资源层次结构配置限制。在为受限于位置的工作负载构建架构时,请考虑以下政策限制条件

  • 受网域限制的共享:默认情况下,所有用户身份都可以添加至 IAM 政策。允许/拒绝列表必须指定一个或多个 Cloud Identity 或 Google Workspace 客户身份。如果此限制条件处于活跃状态,则只有允许列表中的身份才可以添加至 IAM 政策。

  • 受限于位置的资源:此限制条件指的是可以创建基于位置的 Google Cloud 资源的一组位置。此限制条件的政策可以指定为允许或拒绝以下任何位置:多地区(如亚洲和欧洲)、地区(如 us-east1europe-west1)或个别地区例如 europe-west1-b。如需查看支持的服务列表,请参阅资源位置支持的服务

加密

如果您的数据位置要求涉及到限制谁可以访问数据,则实现加密方法可能就是适用的策略。通过使用外部密钥管理系统来管理您在 Google Cloud 外部提供的密钥,您或许可以部署多区域架构来满足您的位置要求。如果没有可用的密钥,则无法解密数据。

Google Cloud 有两个产品可让您使用自己管理的密钥:

  • Cloud External Key Manager (Cloud EKM):Cloud EKM 允许您使用加密密钥加密 BigQuery 和 Compute Engine 中的数据,加密密钥存储和管理在部署在 Google 基础架构外部的第三方密钥管理系统中。
  • 客户提供的加密密钥 (CSEK):您可以将 CSEK 与 Cloud StorageCompute Engine 搭配使用。Google 会使用您的密钥来保护 Google 生成的用于加密和解密数据的密钥。

    如果您提供客户提供的加密密钥,则 Cloud 不会将您的密钥永久存储在 Google 服务器上或以其他方式管理您的密钥。相反,您将为每个 Cloud 操作提供密钥,操作完成后,系统将从 Google 服务器中完全清除您的密钥。

管理您自己的密钥基础架构时,您必须仔细考虑延迟和可靠性问题,并确保为外部密钥管理器实现适当的高可用性和恢复过程。您还必须了解 RTO 要求。密钥是写入数据不可或缺的组成部分,因此 RPO 不是关键问题,因为没有密钥就无法安全地写入数据。真正需要关注的是 RTO,因为没有密钥,就无法解密或安全地写入数据。

存储

在为受限于位置的工作负载构建灾难恢复时,必须确保静态数据位于您所需的地区中。您可以配置 Google Cloud 对象和文件存储服务以满足您的要求。

Cloud Storage

您可以创建符合位置限制的 Cloud Storage 存储分区。

除了灾难恢复基础组件文章的 Cloud Storage 部分中介绍的功能之外,当您为受限于位置的工作负载设计灾难恢复架构时,请考虑是否需要跨区域冗余:存储在多区域双区域的对象至少会存储在两个地理位置不同的区域中,无论其存储类别如何。即使在大规模中断期间(如自然灾害),此冗余功能也可确保数据具有最高的可用性。双区域使用一对您选择的区域来实现此冗余。 多区域通过使用指定多区域中的任意数据中心组合来实现此冗余,其中可能包括未明确列为可用区域的数据中心。

存储分区之间的数据同步是异步进行的。如果您需要高度确信已将数据写入其他地区以满足 RTO 和 RPO 值,则一种策略是使用两个单地区存储分区。您可以两次写入对象,也可以写入一个存储桶,然后让 Cloud Storage 将其复制到另一个存储桶。

使用 Cloud Storage 时的单地区缓解策略

如果您的要求限制您使用单个区域,则无法仅使用 Google Cloud 实现跨地理位置的冗余架构。在这种情况下,请考虑使用以下一种或多种方法:

  • 采用多云端或混合策略。通过这种方法,您可以在与 Google Cloud 地区相同的地理区域中选择其他云或本地解决方案。您可以将数据副本存储在本地的 Cloud Storage 存储分区中,也可以将 Cloud Storage 用作备份数据的目标。

    要使用此方法,请执行以下操作:

    • 确保符合距离要求。
    • 如果您选择 AWS 作为您的另一个云服务提供商,请参阅 Cloud Storage 互操作性指南,了解如何使用 Google Cloud 工具配置对 Amazon S3 的访问权限。
    • 对于其他云解决方案和本地解决方案,不妨考虑使用 minIOCeph 等开源解决方案来提供本地对象存储。
    • 考虑将 Cloud Composer 和 gcloud storage 命令行实用程序一起使用,将数据从本地对象存储转移到 Cloud Storage。
    • 使用 Transfer Service for On Premises Data 将本地存储的数据复制到 Cloud Storage。
  • 实现加密技术。如果您的位置要求允许使用加密技术作为解决方法,则可以使用多区域或双区域存储桶。

Filestore

Filestore 提供代管式文件存储,您可以根据您的位置限制要求在区域和可用区中进行部署。

代管式数据库

数据灾难恢复场景介绍了为 Google Cloud 代管式数据库服务实现备份和恢复策略的方法。除了使用这些方法之外,您还必须考虑在架构中使用的每个代管式数据库服务的地区限制,例如:

  • Bigtable 适用于区域内的可用区位置。生产实例至少有两个集群,这些集群必须位于该地区的唯一区域中。Bigtable 实例中集群之间的复制由 Google 自动管理。Bigtable 会在集群之间同步数据,从而在实例包含集群的每个可用区中分别创建一个独立的数据副本。通过复制,传入流量可能会故障切换到同一实例的另一个集群。

  • BigQuery 具有位置限制,它决定数据集的存储位置。数据集位置可以是单区域位置,也可以是多区域位置。为了在区域性灾难期间提供恢复能力,您需要将数据备份到另一个地理位置。对于 BigQuery 多区域,我们建议您避免备份到多区域范围内的区域。如果选择欧盟多区域,则将苏黎世和伦敦排除在多区域配置之外。如需了解如何为 BigQuery 实现灾难恢复解决方案来应对物理区域中断(虽然发生这种情况的可能性很小),请参阅区域中断

    如需了解采用单区域或多区域 BigQuery 配置的影响,请参阅 BigQuery 文档

  • 您可以使用 Firestore 将 Firestore 数据存储在多区域位置或单区域位置中。多地区位置中的数据以多区域和多地区复制配置运行。如果您的位置限制要求允许使用多区域位置,并且您希望最大限度地提高数据库的可用性和耐用性,请选择多区域位置。多区域位置即使发生全区域中断也可维持可用性,且不会丢失数据。地区位置中的数据以多区域复制配置运行。

  • 您可以配置 Cloud SQL 以实现高可用性。进行了 HA 配置的 Cloud SQL 实例也称为地区实例,位于配置地区内的主地区和备用地区。在地区实例中,该配置由主实例和备用实例组成。确保您了解从主实例到备用实例的典型故障切换时间

    如果您的要求允许,您可以使用跨地区副本配置 Cloud SQL。如果发生灾难,则可以升级其他地区中的读取副本。由于读取副本可以提前配置高可用性,因此在提升高可用性后,它们无需进行其他更改。您还可以将读取副本配置为有自己的跨区域副本,这样可以在副本提升后直接防范区域性故障。

  • 您可以将 Spanner 配置为单区域或多区域。对于任何单区域配置,Spanner 维护三个读写副本,每个副本都位于该区域的不同 Google Cloud 可用区。每个读写副本均包含可操作数据库的完整副本,能够处理读/写请求和只读请求。

    Spanner 在不同可用区使用副本,以便在发生单可用区故障时,您的数据库仍然可用。Spanner 多区域部署可提供跨多个区域的一致环境,包括两个读写区域和一个见证者区域,其中包含一个见证者副本。您必须验证所有地区的位置是否满足您的地区限制要求。

Compute Engine

Compute Engine 资源是全球性、地区性或区域性的。Compute Engine 资源(例如虚拟机实例或可用区级永久性磁盘)称为“可用区级资源”。静态外部 IP 地址等其他资源则是区域资源。区域资源可由该区域中的任何资源(无论位于哪个地区)使用,而地区资源则只能由同一地区中的其他资源使用。

将资源置于地区中的不同区域,可将这些资源与大多数类型的物理基础架构故障和基础架构软件服务故障隔离开来。此外,将资源布置在不同地区中可以实现更高程度的故障独立性。通过此方法,您可以设计强大的系统,将资源分布在不同的故障网域中。

如需了解详情,请参阅地区和区域

使用本地或其他云作为生产网站

您在使用的 Google Cloud 区域可能不允许您为自己的灾难恢复架构使用双区域或多区域组合。在这种情况下,要满足位置限制,请考虑使用您自己的数据中心或其他云作为生产网站或故障切换网站。

本部分介绍针对混合工作负载进行优化的 Google Cloud 产品。应用的灾难恢复场景中介绍了使用本地和 Google Cloud 的灾难恢复架构。

GKE Enterprise

GKE Enterprise 是 Google Cloud 的开放式混合云和多云应用平台,可帮助您在任何位置安全地运行基于容器的工作负载。GKE Enterprise 在本地环境和云环境之间保持一致性,无论您在何处运行,您都可以拥有一致的操作模型和 Google Kubernetes Engine (GKE) 集群的单一视图。

作为您的灾难恢复策略的一部分,GKE Enterprise 简化了跨不同环境(在 Google Cloud 和本地或其他云之间)的高可用性和故障切换架构的配置和操作。您可以在本地运行生产 GKE Enterprise 集群,如果发生灾难,您可以故障切换以在 Google Cloud 中的 GKE Enterprise 集群上运行相同的工作负载。

Google Cloud 上的 GKE Enterprise 有三种类型的集群:

  • 单区域集群。单区域集群有一个运行在区域中的单控制平面。该控制平面负责管理在同一区域中运行的节点上的工作负载。
  • 多区域集群。多区域集群有一个运行在单区域中的单控制平面副本,并且有在多个区域中运行的节点。
  • 地区级集群。区域级集群在单个区域中的多个可用区复制集群主实例和节点。例如,us-east1 区域中的区域级集群会在以下三个 us-east1 可用区中创建控制平面和节点的副本:us-east1-bus-east1-cus-east1-d

地区级集群对区域中断的恢复能力最强。

Google Cloud VMware Engine

Google Cloud VMware Engine 可让您在云端运行 VMware 工作负载。如果您的本地工作负载基于 VMware,您可以构建灾难恢复解决方案,以使其在与本地运行相同的虚拟化解决方案上运行。您可以选择符合您地区要求的地区。

网络

当灾难恢复方案基于将数据从本地移动到 Google Cloud 或从其他云提供商移动到 Google Cloud 时,您必须制定网络策略。如需了解详情,请参阅“灾难恢复基础组件”文档的向/从 Google Cloud 转移数据部分。

VPC Service Controls

在规划灾难恢复策略时,您必须确保应用于生产环境的安全控制措施也会扩展到故障切换环境。使用 VPC Service Controls,您可以定义从本地网络到 Google Cloud 中的项目的安全边界。

VPC Service Controls 支持使用情境感知访问权限方法来控制云资源。您可以根据用户身份和 IP 地址等属性,在 Google Cloud 中创建粒度访问权限控制政策。这些政策有助于确保在本地和 Google Cloud 环境中实施适当的安全控制措施。

后续步骤