本文档是介绍 Google Cloud 中的灾难恢复 (DR) 的系列文章中的第二篇。本部分讨论了可用作灾难恢复规划基础组件的服务和产品,包括 Google Cloud 产品和跨平台工作的产品。
该系列包含以下部分:
- 灾难恢复规划指南
- 灾难恢复组件(本文)
- 数据的灾难恢复场景
- 应用灾难恢复场景
- 为受限于位置的工作负载设计灾难恢复架构
- 灾难恢复使用场景:受限于位置的数据分析应用
- 针对云基础架构服务中断设计灾难恢复架构
Google Cloud 提供了许多可用作灾难恢复架构组件的产品。本部分将讨论这些产品中最常被用作 Google Cloud DR 组件的灾难恢复相关功能。
在这些服务中,很多都具有高可用性 (HA) 功能。高可用性与灾难恢复并不完全重叠,但高可用性的很多目标也适用于设计灾难恢复方案。例如,利用高可用性功能,您能设计可优化正常运行时间且可缓解小规模故障(例如单个虚拟机故障)影响的架构。要详细了解灾难恢复与高可用性之间的关系,请参阅灾难恢复规划指南。
下面的部分介绍了这些 Google Cloud 灾难恢复组件及其如何帮助您实现灾难恢复目标。
计算和存储
下表汇总了 Google Cloud 计算和存储服务中用作灾难恢复基础组件的功能:
产品 | 功能 |
---|---|
Compute Engine |
|
Cloud Storage |
|
Google Kubernetes Engine (GKE) |
|
如需详细了解这些产品和其他 Google Cloud 产品的功能和设计如何影响您的灾难恢复策略,请参阅针对云基础架构服务中断设计灾难恢复架构:产品参考。
Compute Engine
Compute Engine 提供虚拟机 (VM) 实例,是 Google Cloud 的核心要件。除了配置、启动和监控 Compute Engine 实例之外,您通常还可使用各种相关功能来实施灾难恢复方案。
在灾难恢复方案中,您可以通过设置删除保护标志来防止意外删除虚拟机。在托管数据库等有状态服务时,此功能尤为有用。
如需了解如何满足较低的 RTO 和 RPO 值,请参阅设计弹性系统。
实例模板
您可以使用 Compute Engine 实例模板来保存虚拟机的详细配置信息,然后基于现有实例模板创建实例。您可使用该模板启动所需数量的实例,并完全按照建立灾难恢复目标环境时所需的方式进行配置。实例模板在全球范围内进行复制,因此您可以使用同一配置在 Google Cloud 中的任意位置重新创建实例。
如需了解详情,请参阅以下资源:
如需详细了解如何使用 Compute Engine 映像,请参阅本文档后面的在映像配置与部署速度之间达到平衡部分。
代管式实例组
托管式实例组与 Cloud Load Balancing(本文档稍后会介绍)搭配使用,用于将流量分配到跨可用区复制且配置相同的实例组。托管式实例组可实现自动扩缩和自动修复等功能;其中,托管式实例组可以自动删除和重新创建实例。
预订
无论是否挂接其他 GPU 或本地 SSD,Compute Engine 都支持使用自定义或预定义机器类型在特定可用区中预留虚拟机实例。为了确保灾难恢复的关键任务工作负载的容量,您应该在灾难恢复目标地区中创建预留。如果没有预留,您可能无法获得实现恢复时间目标所需的按需容量。在冷、暖或热灾难恢复场景中非常有用。借助它们,您可以让恢复资源保持可用于故障切换以满足较低 RTO 需求,而无需提前完全配置和部署它们。
永久性磁盘和快照
永久性磁盘是实例可访问的持久性网络存储设备。它们与实例无关,因此即使已删除实例,您仍可分离并移动永久性磁盘以保留数据。
对于可跨地区复制且用于在发生灾难时重新创建永久性磁盘的 Compute Engine 虚拟机,您可以进行增量备份或执行增量快照。此外,您还可以创建永久性磁盘的快照,以防止因用户错误而导致数据丢失。快照是增量快照,即使您的快照磁盘已附加到正在运行的实例,创建快照也只需几分钟时间。
永久性磁盘具有内置冗余,可保护您的数据免受设备故障的影响,并通过数据中心维护事件保证数据的可用性。永久性磁盘可以是区域级磁盘,也可以是地区级磁盘。地区永久性磁盘跨一个地区中的两个区域复制写入。如果发生区域服务中断,备份虚拟机实例可以在辅助区域强制挂接地区永久性磁盘。如需了解详情,请参阅使用地区永久性磁盘的高可用性选项。
透明维护
Google 会定期维护其基础架构,方法是使用最新软件修补系统、执行日常测试和预防性维护,并努力确保 Google 基础架构尽可能快速和高效。
默认情况下,所有 Compute Engine 实例的配置都将确保此类维护事件不会影响您的应用和工作负载。如需了解详情,请参阅透明维护。
发生维护事件时,Compute Engine 会使用实时迁移功能将正在运行的实例自动迁移到同一可用区中的其他主机。通过实时迁移,Google 可执行为确保基础架构受到保护且安全可靠所必需的维护任务,且不中断您的任何虚拟机。
虚拟磁盘导入工具
借助虚拟磁盘导入工具,您可以导入 VMDK、VHD 和 RAW 等文件格式来创建新的 Compute Engine 虚拟机。使用此工具,您可以创建与本地虚拟机配置相同的 Compute Engine 虚拟机。当您无法通过映像上已安装的软件的源二进制文件配置 Compute Engine 映像时,这是一种不错的方法。
自动备份
您可以使用标记自动备份 Compute Engine 实例。例如,您可以使用备份和灾难恢复服务创建备份方案模板,并将模板自动应用于 Compute Engine 实例。
如需了解详情,请参阅自动保护新的 Compute Engine 实例。
Cloud Storage
Cloud Storage 是一种对象存储,非常适合用于存储备份文件。它提供了适用于特定应用场景的不同存储类别,如下图所示。
在灾难恢复场景中,Nearline Storage、Coldline Storage 和 Archive Storage 尤其重要。与 Standard 存储空间相比,这些存储类别均可以降低存储费用。但是,检索这些类别中存储的数据或元数据时会产生额外费用,您还要支付最短存储期限费用。Nearline 专用于每月最多访问一次的备份方案,非常适合让您在保持较低费用的同时能够执行常规灾难恢复压力测试。
Nearline、Coldline 和 Archive 针对非频繁访问进行了优化,并且设计价格模式时也考虑到了这一点。因此,您需要支付最短存储期限费用,还需支付在这些类别中检索早于类别最短存储期限的数据或元数据时产生的额外费用。
为了防止 Cloud Storage 存储桶中的数据被意外或恶意删除,您可以使用软删除功能将已删除和覆盖的对象保留指定的一段时间,并且对象保全功能可防止删除或更新对象。
借助 Storage Transfer Service,您可以将数据从 Amazon S3、Azure Blob Storage 或本地数据源导入 Cloud Storage。在灾难恢复方案中,您可以使用 Storage Transfer Service 执行以下操作:
- 将来自其他存储空间服务的数据备份到 Cloud Storage 存储桶。
- 将数据从双区域或多区域中的存储桶移动到单区域中的存储桶,从而降低存储备份的费用。
Filestore
Filestore 实例是全托管式 NFS 文件服务器,与在 Compute Engine 实例或 GKE 集群上运行的应用搭配使用。
Filestore 基本层级和可用区级层级是可用区级资源,不支持跨可用区复制,而 Filestore Enterprise 层级实例是区域级资源。为了帮助您提高 Filestore 环境的弹性,我们建议您使用 Enterprise 层级实例。
Google Kubernetes Engine
GKE 是一个可直接投入生产用途的托管式环境,用于部署容器化应用。GKE 可让您编排高可用性系统,它包含以下特性:
- 节点自动修复。如果某节点在很长一段时间(约 10 分钟)内连续健康检查结果不佳,则 GKE 会为该节点启动修复流程。
- 活跃性和就绪性探测。您可指定一项活跃性探测,它定期将 pod 正在运行这一情况报告给 GKE。如果 pod 探测失败,则可以对其进行重启。
- 多区域和地区性集群。您可以跨一个地区中的多个区域分发 Kubernetes 资源。
- 多集群 Gateway 可让您跨不同区域中的多个 GKE 集群配置共享负载均衡资源。
- Backup for GKE 可让您在 GKE 集群中备份和恢复工作负载。
网络和数据转移
下表汇总了 Google Cloud 网络和数据转移服务中用作灾难恢复基础组件的功能:
产品 | 功能 |
---|---|
Cloud Load Balancing |
|
Cloud Service Mesh |
|
Cloud DNS |
|
Cloud Interconnect |
|
Cloud Load Balancing
Cloud Load Balancing 通过在应用的多个实例之间分配用户流量,为 Google Cloud 计算产品提供高可用性。您可以为 Cloud Load Balancing 配置健康检查,这些检查可确定实例是否能用于执行工作,从而使流量不路由到出现故障的实例。
Cloud Load Balancing 提供单个任播 IP 地址来处理您的应用。您的应用可以在不同区域(例如欧洲和美国)运行实例,而且最终用户将被定向到最近的一组实例。除了为向互联网公开的服务提供负载均衡之外,您还可以通过专用负载均衡 IP 地址为您的服务配置内部负载均衡。此 IP 地址仅供 Virtual Private Cloud (VPC) 内部的虚拟机实例访问。
如需了解详情,请参阅 Cloud Load Balancing 概览。
Cloud Service Mesh
Cloud Service Mesh 是 Google Cloud 上提供的 Google 管理的服务网格。Cloud Service Mesh 提供深度遥测,可帮助您收集有关应用的详细数据洞见。它支持在一系列计算基础架构上运行的服务。
Cloud Service Mesh 还支持高级流量管理和路由功能,例如熔断和故障注入。借助熔断功能,您可以对特定服务的请求实施限制。达到熔断限制时,请求被阻止访问服务,从而防止服务进一步降级。借助故障注入功能,Cloud Service Mesh 可以引入延迟或中止对服务的部分请求。通过故障注入功能,您可以测试服务是否能够承受请求延迟或请求中止。
如需了解详情,请参阅 Cloud Service Mesh 概览。
Cloud DNS
Cloud DNS 提供了一种在自动恢复过程中管理 DNS 条目的程序化方式。Cloud DNS 使用 Google 的全球Anycast域名服务器网络从遍布全球的冗余位置托管您的 DNS 区域,从而让您的用户享受可用性高且延迟低的服务。
如果您选择在本地管理 DNS 条目,则可以在 Google Cloud 中启用虚拟机,通过 Cloud DNS 转发解析这些地址。
Cloud DNS 支持设置政策来配置其响应 DNS 请求的方式。例如,您可以配置 DNS 路由政策以根据特定条件引导流量,例如启用故障切换到备份配置以提供高可用性,或根据 DNS 请求的地理位置路由 DNS 请求。
Cloud Interconnect
Cloud Interconnect 提供了将其他来源的信息移动到 Google Cloud 的方法。我们稍后将在向/从 Google Cloud 转移数据中讨论此产品。
管理和监控
下表汇总了 Google Cloud 管理和监控服务中用作灾难恢复基础组件的功能:
产品 | 功能 |
---|---|
Cloud 状态信息中心 |
|
Google Cloud Observability |
|
Google Cloud Managed Service for Prometheus |
|
Cloud 状态信息中心
Cloud 状态信息中心显示 Google Cloud 服务的当前可用性。您可在页面上查看状态,还可订阅 RSS Feed;每当出现服务新闻,该 Feed 即会更新。
Cloud Monitoring
Cloud Monitoring 会从 Google Cloud、AWS、托管的正常运行时间探测工具、应用插桩以及各种其他应用组件收集指标、事件和元数据。您可以配置提醒以向第三方工具(如 Slack 或 Pagerduty)发送通知,从而向管理员提供及时动态更新。
借助 Cloud Monitoring,您可以为公开可用的端点和 VPC 中的端点创建拨测。例如,您可以监控网址、Compute Engine 实例、Cloud Run 修订版本和第三方资源,例如 Amazon Elastic Compute Cloud (EC2) 实例。
Google Cloud Managed Service for Prometheus
Google Cloud Managed Service for Prometheus 是一种针对 Prometheus 指标的 Google 管理的多云跨项目解决方案。您可以使用 Prometheus 全局监控工作负载并发出提醒,而无需大规模手动管理和操作 Prometheus。
如需了解详情,请参阅 Google Cloud Managed Service for Prometheus。
跨平台灾难恢复组件
跨多个平台运行工作负载时,一种减小操作开销的方法是选择适合当前所用全部平台的工具。本部分讨论一些与平台无关并因而支持跨平台灾难恢复场景的工具和服务。
基础架构即代码
通过使用代码(而不是图形界面或脚本)定义基础架构,您可以采用声明式模板工具,跨平台自动预配和配置基础架构。例如,您可以使用 Terraform 和 Infrastructure Manager 来使声明式基础架构配置生效。
配置管理工具
对于大型或复杂的灾难恢复基础架构,建议使用 Chef 和 Ansible 等与平台无关的软件管理工具。这些工具可确保无论您的计算工作负载位于何处都能应用可重现的配置。
Orchestrator 工具
容器也可以被视为灾难恢复组件。容器可用于打包服务并在不同平台之间实现一致性。
如果使用容器,则通常会用到 Orchestrator。Kubernetes 不仅可用于通过 GKE 管理 Google Cloud 中的容器,还提供了一种方法来跨多个平台编排基于容器的工作负载。Google Cloud、AWS 和 Microsoft Azure 均提供有 Kubernetes 的托管版本。
要将流量分发到在不同云平台上运行的 Kubernetes 集群,您可以使用支持加权记录并包含健康检查的 DNS 服务。
您还需要确保可以将映像拉取到目标环境。这意味着您需要能够在发生灾难时访问映像注册表。Artifact Registry 也是一项与平台无关的不错选择。
数据转移
数据转移是跨平台灾难恢复方案的一个关键组成部分。请确保使用灾难恢复数据转移方案所需的实际模型来设计、实现和测试跨平台灾难恢复方案。我们将在下一部分讨论数据转移方案。
备份和灾难恢复服务
Backup and DR Service 是针对云工作负载的备份和灾难恢复解决方案。它可以帮助您恢复数据并恢复关键业务操作,并且支持多种 Google Cloud 产品以及第三方数据库和数据存储系统。
如需了解详情,请参阅 Backup and DR Service 概览。
灾难恢复模式
本部分基于前面介绍的组件探讨一些最常见的灾难恢复架构模式。
向/从 Google Cloud 转移数据
灾难恢复方案的一个重要方面是能够以多快的速度向/从 Google Cloud 转移数据。如果您的灾难恢复方案基于将数据信息从本地移动到 Google Cloud 或从其他云提供商移动到 Google Cloud,则速度至关重要。本部分将讨论可确保良好吞吐量的网络和 Google Cloud 服务。
在将 Google Cloud 用作本地或其他云环境中的工作负载的恢复站点时,必须考虑以下重要事项:
- 如何连接到 Google Cloud?
- 您与互连提供商之间具有多少带宽?
- 提供商向 Google Cloud 直接提供的带宽是多少?
- 还有哪些数据将使用此链接进行转移?
如需详细了解如何将数据转移到 Google Cloud,请参阅迁移到 Google Cloud:转移您的大型数据集。
在映像配置与部署速度之间达到平衡
在配置机器映像用于部署新实例时,请考虑配置将对部署速度产生的影响。映像预配置量、映像维护费用和部署速度之间存在一种权衡。例如,如果以最低限度配置机器映像,则使用该映像的实例将需要更多时间才能启动,因为它们需要下载和安装依赖项。另一方面,如果高度配置机器映像,则使用该映像的实例将更快启动,但您必须更加频繁地更新映像。启动完全可操作的实例所花费的时间将与您的 RTO 直接相关。
跨混合环境维护机器映像的一致性
如果要实现混合解决方案(本地到云或云到云),则需要找到一种跨不同生产环境维护虚拟机一致性的方法。
如果需要完整配置的映像,请考虑使用 Packer 之类的工具,它可为多个平台创建相同的机器映像。您可以将相同脚本用于平台专属配置文件。如果使用 Packer,则可对配置文件执行版本控制,从而跟踪在生产中部署的版本。
还有一种方法是,可以使用具有更精细粒度的 Chef、Puppet、Ansible 或 Saltstack 等配置管理工具,从而根据需要创建基础映像、以最低限度配置的映像或完整配置的映像。
您还可以手动转换并导入现有映像(例如 Amazon AMI、Virtualbox 映像和 RAW 磁盘映像)到 Compute Engine。
实现分层存储
分层存储模式通常用于以下场景的备份:最新备份位于速度较快的存储上,您将旧备份缓慢地迁移到费用更低但速度较慢的存储。通过应用此模式,您可以在不同存储类别的存储桶之间迁移备份,通常是从 Standard 存储类别迁移到费用较低的存储类别(例如 Nearline 和 Coldline)。
如需实现此模式,您可以使用对象生命周期管理。 例如,您可以将超过特定时间量的对象的存储类别更改为 Coldline。
后续步骤
- 了解 Google Cloud 地理位置和地区。
阅读此 DR 系列中的其他文章:
如需查看更多参考架构、图表和最佳实践,请浏览云架构中心。
贡献者
作者:
- Grace Mollison | 解决方案负责人
- Marco Ferrari | 云解决方案架构师