选择和管理计算

Last reviewed 2023-10-03 UTC

Google Cloud 架构框架中的本文档提供了根据计算要求部署系统的最佳实践。您将了解如何选择计算平台和迁移方法、设计和扩缩工作负载,以及管理运营和虚拟机迁移。

计算无论是指执行自定义业务逻辑还是针对数据集应用复杂的计算算法,它都是许多工作负载的核心。大多数解决方案都会以某种形式使用计算资源,因此您可以根据应用的需求选择合适的计算资源。

Google Cloud 提供了多种在 CPU 上使用时间的选项。具体选项取决于 CPU 类型、性能以及代码的计划运行方式,包括用量结算。

Google Cloud 计算选项包括:

  • 可提供云独有优势(例如实时迁移)的虚拟机。
  • 对可以共享 CPU 的集群机器上的容器进行装箱。
  • 函数和无服务器方法,可让您为单个 HTTP 请求期间执行的工作计量 CPU 使用时间。

选择计算

本部分提供了选择和迁移到计算平台的最佳实践。

选择计算平台

为工作负载选择计算平台时,请考虑工作负载的技术要求、生命周期自动化过程、区域化和安全性。

评估您的应用和整个支持系统的 CPU 使用量性质,包括如何打包、部署、分发和调用代码。虽然某些使用场景可能与多个平台选项兼容,但可移植的工作负载应该能够利用一系列计算选项且性能出色。

下表简要介绍了推荐用于各种应用场景的 Google Cloud 计算服务:

计算平台 使用场景 推荐产品
无服务器
  • 部署您的第一个应用。
  • 专注于数据和处理逻辑以及应用开发,而不是维护基础架构运营。
  • Cloud Run:使用此全代管式无服务器选项将业务逻辑纳入容器。Cloud Run 专为计算密集型(但并非总是如此)的工作负载而设计。以经济实惠的方式从 0(无流量)开始增加,并定义任务和服务的 CPU 和 RAM。只需一个命令即可部署,且 Google 会自动预配适当数量的资源。
  • Cloud Functions:用于将代码拆分为各个灵活的业务逻辑部分,而无需考虑基础架构的负载均衡、更新、身份验证或扩缩。
Kubernetes 构建需要额外服务(例如 Istio)来管理服务网格控制的复杂微服务架构。
  • Google Kubernetes Engine:一种开源容器编排引擎,可用于自动执行容器化应用的部署、扩缩和管理。
虚拟机 在虚拟机上运行通用和专用工作负载。

如需了解详情,请参阅在 Google Cloud 上托管应用

选择计算迁移方法

如果要从其他云或本地迁移现有应用,请使用以下某个 Google Cloud 产品来优化性能、规模、费用和安全。

迁移目标 使用场景 推荐产品
直接原样迁移 只需几分钟即可将 VMware 工作负载迁移或扩展到 Google Cloud。 Google Cloud VMware Engine
直接原样迁移 将基于虚拟机的应用迁移到 Compute Engine。 Migrate to Virtual Machines
升级为容器 将应用进行现代化改造,以改造为 Google Kubernetes Engine 上的内置容器。 Migrate to Containers

如需了解如何迁移工作负载并协调内部团队,请参阅 VM Migration 生命周期使用 Google Cloud 构建大规模迁移项目

设计工作负载

本部分提供了设计工作负载以支持您的系统的最佳实践。

评估无服务器方案是否适用于简单逻辑

简单逻辑是一种计算类型,不需要专业化硬件或 CPU 经过优化的机器等机器类型。在对 Google Kubernetes Engine (GKE)Compute Engine 实现进行投资以抽象化运营开销并针对费用和性能进行优化之前,请先评估无服务器方案是否适用于轻量级逻辑。

将应用分离为无状态应用

尽可能将应用分离为无状态应用,以便充分利用无服务器计算方案。此方法可让您使用代管式计算产品、根据需求扩缩应用,以及针对费用和性能进行优化。如需详细了解如何分离应用以便在设计时确保可扩缩性和高可用性,请参阅在设计时确保可扩缩性和高可用性

在分离架构时使用缓存逻辑

如果您的应用旨在成为有状态应用,请使用缓存逻辑进行分离并确保工作负载可以扩缩。如需了解详情,请参阅数据库最佳实践

使用实时迁移推动升级

为方便 Google 维护升级,请设置实例可用性政策以使用实时迁移。如需了解详情,请参阅设置虚拟机主机维护政策

扩缩工作负载

本部分提供了扩缩工作负载以支持您的系统的最佳实践。

使用启动和关停脚本

对于有状态应用,请尽可能使用启动关停脚本来妥善地启动和停止应用状态。安全启动是指通过软件功能启用计算机,并且操作系统可以执行其安全启动过程和打开连接的任务。

安全启动和关停非常重要,因为有状态应用依赖于靠近计算(通常位于本地磁盘或永久性磁盘上,或者位于 RAM 中)的即时可用的数据。为避免每次启动时都要从头开始运行应用数据,请使用启动脚本重新加载上次保存的数据,并从关停时停止的位置运行流程。如需保存应用内存状态以避免因关停而导致进度丢失,请使用关停脚本。例如,因缩减或 Google 维护事件而计划关停虚拟机时,请使用关停脚本。

使用 MIG 支持虚拟机管理

当您使用 Compute Engine 虚拟机时,托管式实例组 (MIG) 支持自动修复、负载均衡、自动扩缩、自动更新和有状态工作负载等功能。您可以根据可用性目标创建可用区级或区域级 MIG。您可以对无状态服务工作负载或批量工作负载以及需要保留每个虚拟机独有状态的有状态应用使用 MIG。

使用 Pod 自动扩缩器扩缩 GKE 工作负载

使用 Pod 横向自动扩缩器Pod 纵向自动扩缩器来扩缩工作负载,并使用节点自动预配功能来扩缩底层计算资源。

分发应用流量

如需在全球范围内扩缩您的应用,请使用 Cloud Load Balancing 跨多个区域或可用区分发应用实例。负载均衡器可优化从 Google Cloud 边缘网络到最近可用区的数据包路由,从而提高流量传送效率并将传送费用降至最低。如需对最终用户延迟时间进行优化,请尽可能使用 Cloud CDN 来缓存静态内容。

实现计算创建和管理自动化

通过自动执行计算创建和管理,最大限度地减少生产环境中发生的人为错误。

管理运营

本部分提供管理运营以支持您的系统的最佳实践。

使用 Google 提供的公共映像

使用 Google Cloud 提供的公共映像。Google Cloud 公共映像会定期更新。如需了解详情,请参阅 Compute Engine 上的可用公共映像列表

您还可以使用特定配置和设置创建自己的映像。请尽可能在您可以与组织中已获授权的用户共享的单独项目中自动执行和集中管理映像创建。通过在单独的项目中创建并精选自定义映像,您可以使用自己的配置更新、修补和创建虚拟机。然后,您可以与相关项目共享精选虚拟机映像。

使用快照进行磁盘备份

您可以通过快照创建磁盘备份。快照特别适合用于有状态应用,有状态应用不够灵活,在遭受突然关停时无法保留状态或保存进度。如果您经常使用快照创建新实例,则可以通过该快照创建基础映像来优化备份过程。

使用机器映像来帮助创建虚拟机实例

虽然快照只会捕获机器内部的数据映像,但机器映像除了捕获数据之外,还会捕获机器配置和设置。使用机器映像来存储创建虚拟机实例所需的一个或多个磁盘的所有配置、元数据、权限和数据。

通过快照创建机器时,您必须在新的虚拟机实例上配置实例设置,这需要付出大量努力。使用机器映像可让您将这些已知设置复制到新机器,从而减少开销。如需了解详情,请参阅何时使用机器映像

容量、预留和隔离

本部分介绍管理容量、预留和隔离以支持您的系统的最佳实践。

使用承诺使用折扣减少费用

您可以使用承诺使用折扣,降低始终处于开启状态的工作负载的运营支出 (OPEX) 费用。如需了解详情,请参阅费用优化类别

选择机器类型以支持费用和性能

Google Cloud 提供多种机器类型,可让您根据费用和性能参数选择计算。您可以选择性能不佳的产品以针对费用进行优化,也可以选择费用更高的高性能计算选项。如需了解详情,请参阅费用优化类别

使用单租户节点以满足合规性需求

单租户节点是专门用于仅托管您的项目虚拟机实例的物理 Compute Engine 服务器。单租户节点可帮助您满足物理隔离的合规性要求,包括:

  • 将您的虚拟机与其他项目中的虚拟机进行物理隔离。
  • 将您的虚拟机汇集到同一主机硬件上。
  • 隔离付款处理工作负载。

如需了解详情,请参阅单租户节点

使用预留确保资源可用性

Google Cloud 允许您为工作负载定义预留,以确保这些资源始终可用。创建预留不会产生额外费用,但即使不使用预留资源,您也需要支付费用。如需了解详情,请参阅使用和管理预留

虚拟机迁移

本部分提供了迁移虚拟机以支持您的系统的最佳实践。

评估内置迁移工具

评估内置的迁移工具,以便将工作负载从其他云平台或本地环境迁移。如需了解详情,请参阅迁移到 Google Cloud。Google Cloud 提供了多种工具和服务来帮助您迁移工作负载并优化费用和性能。如需获得基于您当前的 IT 环境的免费迁移费用评估,请参阅 Google Cloud Rapid Assessment & Migration Program

使用导入虚拟磁盘以导入自定义的操作系统

如需导入自定义的受支持操作系统,请参阅导入虚拟磁盘。单租户节点可帮助您满足按核心许可或按处理器许可的硬件自带许可要求。如需了解详情,请参阅自带许可

建议

如需将架构框架中的指导应用到您自己的环境,建议您执行以下操作:

  • 查看 Google Cloud Marketplace 产品,以了解您的应用是否被列入受支持的供应商名单。Google Cloud 支持运行各种开源系统和各种第三方软件

  • 请考虑使用 Migrate to Containers 和 GKE 来提取基于虚拟机的应用并将其打包为 GKE 上运行的容器化应用。

  • 使用 Compute Engine 在 Google Cloud 上运行您的应用。如果您有旧版依赖项在基于虚拟机的应用中运行,请验证它们是否满足供应商要求。

  • 对使用 Google Cloud 内部直通式网络负载均衡器来扩缩分离式架构进行评估。如需了解详情,请参阅内部直通式网络负载均衡器概览

  • 评估用于从传统本地用例(例如 HA-Proxy 用例)切换的选项。如需了解详细信息,请参阅浮动 IP 地址的最佳实践

  • 使用虚拟机管理器为 Compute Engine 上运行 Windows 或 Linux 的大型虚拟机舰队管理操作系统,并应用一致的配置政策。

  • 考虑使用 GKE Autopilot,并让 Google SRE 完全托管您的集群。

  • 使用 Policy ControllerConfig Sync 在 GKE 集群中进行政策和配置管理。

  • 确保机器在特定区域和可用域的可用性和可扩缩性。Google Cloud 可以扩缩以满足您的计算需求。但是,如果您需要某个特定区域或可用区具有大量特定机器类型,请与您的客户支持团队合作以确保可用性。如需了解详情,请参阅 Compute Engine 的预留

后续步骤

了解网络设计原则,包括以下各项:

探索架构框架中的其他类别,例如可靠性、卓越运营以及安全性、隐私权和合规性。