如果将工作负载配置为仅依赖于一种机器类型或一个可用区,那么在需求高峰期,您可能无法访问可用资源。为了优化计算资源预配并帮助您的工作负载在需求高峰期保持运行,您必须设计灵活的 Compute Engine 基础架构。借助基础架构灵活性,您可以指定多个可用区、机器类型或开始时间,而不是仅指定一个固定配置。Compute Engine 会自动从您的首选选项中进行选择,帮助您最大限度地提高资源可用性、提升性价比,并安全地采用最新硬件。
本文档介绍了基础设施灵活性的各个维度、优势,以及如何为工作负载选择合适的方法。本文还介绍了相关的 Compute Engine 功能、设计注意事项以及采用步骤。本文档适用于设计或管理计算基础设施的解决方案架构师、基础设施运维人员和云工程师。
基础架构灵活性
您可以从以下三个维度设计灵活的基础设施:
位置灵活性(在何处):将 Compute Engine 实例分布在某个区域的多个可用区中,以最大限度地利用可用资源;或者自动选择具有可用容量的单个可用区,以处理对延迟时间敏感的工作负载。
机器类型灵活性(是什么):指定兼容机器类型的排名列表,让工作负载在需要时使用替代方案。
时间灵活性(何时):将对高需求资源(例如加速器)的请求排队,而不是要求立即为不需要立即启动的工作负载预配资源。
灵活的基础设施带来的好处
采用灵活的 Compute Engine 基础架构可带来以下好处:
在需求高峰期自动管理容量。工作负载会自动查找并使用多种机器类型和可用区中的资源。这种方法有助于确保您的伸缩请求成功,即使首选硬件暂时不可用也是如此。
简化容量管理。您可以减少手动搜索可用硬件的运营开销。Compute Engine 会根据您的回退偏好设置自动重定向请求,从而减少运营瓶颈。
在过渡到最新硬件期间,可降低容量风险。您可以配置部署,以优先使用最新一代硬件,并将旧一代硬件保留为后备。此设置可降低采用最新且需求量大的机器的风险,因为如果最新机器不可用,您的部署仍可自动请求旧机器的容量。
优化了基准流量和峰值流量的费用。您可以仅为已知的基准流量预留容量,并使用机器类型回退来处理不可预测的峰值。这种方法可减少闲置备份容量的支出。您还可以使用计算灵活 CUD 来维持机器系列和区域的折扣覆盖率,这样当工作负载切换机器系列或区域时,就不会采用按需价格。
灵活性维度的比较
您可以将位置灵活性与机器类型灵活性或时间灵活性结合使用。不过,在单个部署中,机器类型灵活性和时间灵活性不兼容。您必须选择硬件回退选项,或者排队等待资源可用。
为了帮助您评估这些选项,下表比较了每个灵活性维度的工作方式。如需了解哪种方法适合您的特定使用情形,请参阅工作负载适用性和建议。
| 地点灵活性(地点) | 机器类型灵活性(是什么) | 时间灵活性(何时) | |
|---|---|---|---|
| 如何提高可用性 | 最大限度地提高对区域中多个可用区内可用资源的访问。 | 通过回退到替代的兼容机器类型,减少遇到资源不可用错误的几率。 | 通过将请求放入队列中等待容量可用,来获取高需求资源。 |
| 预配时间表 | 立即 | 立即 | 已加入队列 |
| 配置方法 | 根据所选可用区中的可用性预配计算实例。 | 根据所选机器类型的可用性预配计算实例。 | 当所有请求的容量都可用时,预配计算实例。 |
| 支持的机器类型 | 支持跨可用区的单个或多个机器类型。 | 使用多种机器类型。 | 仅支持一种机器类型。 |
工作负载适用性和建议
采用灵活的基础设施取决于工作负载的架构和性能要求。为了帮助您选择最佳方法,下表总结了部分常见工作负载类型的建议灵活性维度和配置。
| 工作负载类型 | 灵活性建议 |
|---|---|
| 无状态批处理、解耦的高吞吐量计算 (HTC) |
位置和机器类型灵活性:将实例灵活性政策与以下任一选项搭配使用:
借助这些方法,您的工作负载可以跨不同的可用区和机器类型进行扩缩,从而最大限度地提高资源可用性。 |
| AI/机器学习训练、微调和大规模批处理作业 | 时间灵活性:使用采用动态工作负载调度器 (DWS) 的预配模型。这种方法通过将请求放入队列中,而不是要求立即按需预配,从而提高了对高需求资源(例如加速器)的访问效率。 |
| 微服务和 Web 前端 | 位置和机器类型灵活性:使用BALANCED目标分布形状和实例灵活性政策的区域级 MIG。选择 vCPU 和内存数量相匹配的机器类型,以实现可预测的自动扩缩。此外,启用修复时更新,以便任何重新创建的计算实例都使用最新的实例灵活性配置。 |
| 高可用性数据库 | 位置灵活性和机器类型灵活性:
使用目标分布形状为 |
| 严格受延迟时间限制的系统 | 位置灵活性:使用具有 ANY_SINGLE_ZONE 分布形状的区域级 MIG。此形状通过在区域中的所有可用区中搜索足够的容量来提供位置灵活性,同时确保所有实例都放置在同一可用区中以保持低延迟。 |
灵活的配置可能会引入硬件变体,从而影响应用性能。在设计灵活的系统时,请评估在最大限度提高资源可用性和保持一致的性能之间的权衡取舍。如需相关指导,请参阅下文中有关评估和采用灵活的基础设施的部分。
Compute Engine 中的核心灵活性功能
为了实现容量管理自动化,您可以在基础设施的多个层级实现灵活性。Compute Engine 提供的功能可实现位置、机器类型和时间灵活性。您可以单独配置这些功能,也可以将它们组合起来以满足工作负载要求。
位置灵活性功能
位置灵活性功能通过在区域中的多个可用区之间分布计算实例,最大限度地提高资源可用性。为最大限度地发挥此优势,请选择所有可用区都提供首选机器类型的区域。
您可以将位置灵活性应用于以下部署类型:
MIG:区域级 MIG 会在实例创建和维护期间评估实时容量,以便在资源可用的情况下预配计算实例。如果某个可用区在实例修复期间容量不足,则使用
ANY或BALANCED规格的 MIG 可以自动在另一个可用区中重新创建失败的计算实例。为获得最佳效果,请根据工作负载目标配置目标分布形状:ANY:建议使用此模式,以最大限度地提高可用性。使用此形状可最大限度地提高资源可用性。此配置可将计算实例分配到任何具有可用容量的可用区,并优先使用未使用的预留。BALANCED:建议用于高可用性。此形状适用于高可用性工作负载。它会在各可用区之间均匀分布计算实例,以防可用区服务中断,同时仍会优先考虑资源可用的可用区。ANY_SINGLE_ZONE:建议用于低延迟。如果延迟时间有严格的限制,请使用此形状。它会将 MIG 中的所有计算实例分配到具有最多可用资源的单个可用区中。
如需了解详情,请参阅区域级 MIG 简介。
非托管式实例组:这些组本身不支持位置灵活性。您可以改用
regionInstances.bulkInsertAPI 批量创建计算实例,该 API 最多可预配 5,000 个具有ANY_SINGLE_ZONE目标分布形状的独立计算实例。此请求会在单个可用区中创建计算实例,您可以将这些实例添加到非托管式组中。请注意,对于独立计算实例,Compute Engine 仅在计算实例创建请求期间评估容量以选择可用区。如需了解详情,请参阅将非代管式虚拟机组合在一起。
独立计算实例:使用区域级批量实例创建请求(
regionInstances.bulkInsertAPI),并设置目标分布形状(ANY、BALANCED或ANY_SINGLE_ZONE)和最小数量。通过设置最小数量,您的请求可以尽可能多地预配计算实例,而不是在无法立即获得完整容量时完全失败。对于独立计算实例,Compute Engine 仅在实例创建请求期间评估容量以选择可用区。如需了解详情,请参阅虚拟机批量创建简介。
机器类型灵活性功能
借助机器类型灵活性功能,您的部署可以使用按优先级排序的替代机器类型列表。如果您的首选机器类型不可用,Compute Engine 会自动回退到您的次要机器类型。 您可以通过定义实例灵活性政策来配置此功能,该政策包含单个或多个实例选择的排名列表。
您可以将实例灵活性政策应用于以下部署类型:
MIG:将实例灵活性政策附加到 MIG,以便在需求高峰期让该组自动回退到替代硬件。如果您的 MIG 使用 Spot 虚拟机,此政策会自动优先考虑预计正常运行时间更长且被抢占风险更低的备用机器类型。如需了解详情,请参阅 MIG 中的实例灵活性简介。
非托管式实例组:由于这些组本身不支持实例灵活性政策,因此您可以使用
regionInstances.bulkInsertAPI 预配实例,然后将其添加到您的组中。在 API 请求中,添加实例灵活性政策,并指定单个可用区 (locationPolicy.zones.zone) 或使用ANY_SINGLE_ZONE目标分布形状。使用ANY_SINGLE_ZONE形状可自动选择资源最充足的可用区,从而提供位置灵活性这一额外优势。请注意,对于独立实例,Compute Engine 仅在实例创建请求期间应用灵活性政策。如需详细了解如何批量创建计算实例,请参阅通过实例灵活性批量创建虚拟机;如需了解如何将这些实例添加到群组,请参阅将非托管虚拟机分组。
独立计算实例:对于不需要实例组的工作负载(例如独立的批处理作业),您可以使用
regionInstances.bulkInsertAPI 和实例灵活性政策来预配计算实例。请注意,对于独立实例,Compute Engine 仅在实例创建请求期间应用灵活性政策。如需了解详情,请参阅批量创建的虚拟机的实例灵活性简介。
在不同机器类型之间无缝扩展
配置机器类型灵活性时,您的备用机器类型可能具有不同的硬件架构或磁盘规格。如果这些规范与实例选择中的机器类型不兼容,则预配可能会失败。
如需使用规格不兼容的机器类型,您必须在实例灵活性政策中定义属性替换。这些替换项可确保在 Compute Engine 回退到替代机器类型时,自动应用相应硬件所需的正确启动映像、磁盘类型或处理器基准。借助此功能,您的部署可以跨不同机器类型无缝扩展,并有更高的预配成功几率。
如需了解详情,请参阅磁盘和 CPU 平台替换的运作方式。
时间灵活性功能
借助时间灵活性功能,无需立即启动的工作负载可以等待高需求资源(例如加速器),而无需立即进行预配。
如需实现时间灵活性,请根据工作负载要求使用以下采用 DWS 的功能:
如需将容量请求排队,直到资源可用,请使用灵活启动预配模型。
如需为特定的计划日期和时间预留未来的容量,请使用日历模式下的未来预留。
评估和采用灵活的基础设施
在配置位置或机器类型灵活性之前,您必须验证所选位置和机器类型是否彼此兼容,以及是否符合工作负载要求。为帮助您成功设计和实现灵活的基础设施,以下部分提供了关键的评估注意事项和增量采用策略。
评估注意事项
以下是评估灵活基础设施的一些关键注意事项:
位置灵活性:将工作负载分散到多个可用区可能会影响网络延迟时间,并增加跨可用区数据传输费用。
如需了解详情,请参阅以下文档:
- 如需查看可用区中各计算实例之间的流量的延迟时间数据,请参阅查看 Google Cloud 延迟时间信息中心。
- 如需计算与可用区间流量相关的数据传输费用,请参阅 Google Cloud中的虚拟机间数据传输价格
机器类型灵活性:回退到替代机器类型可能会导致应用性能和费用出现变化。跨代机器类型灵活性通常需要您实现磁盘和 CPU 平台替换。您必须验证要使用的机器类型是否满足应用的技术前提条件。
如需了解详情,请参阅以下文档:
采用策略
根据您是要设计新的部署还是迁移现有部署,选择相应的策略,如下所示:
对于新工作负载:如果您要设计新的部署,建议在基础架构设计中采用灵活性。如需确定工作负载类型建议的灵活性维度,请按照工作负载适用性和建议中的指南操作。然后,选择最能支持您的工作负载的部署类型。如需详细了解部署类型及其灵活性设置,请参阅核心灵活性功能部分。
对于现有部署:如果您想将使用单个可用区或机器类型的部署迁移到灵活的基础设施,建议您逐步采用灵活性,以最大限度地降低风险。您可以采用以下增量采用策略:
添加位置灵活性。将可用区级工作负载迁移到具有
BALANCED或ANY分布形状的区域级 MIG。如果您使用的是形状为EVEN的区域级 MIG,请将其更改为BALANCED。对于横向伸缩的 MIG,此更改非常重要。某个可用区中的临时容量限制不会阻止横向扩缩操作。或者,如果您想创建独立计算实例,请使用regionInstances.bulkInsertAPI。添加共享相同架构的替代机器类型。附加一个实例灵活性政策,该政策指定了共享相同 CPU 架构和磁盘支持的机器类型,例如
n2-standard-8和n2d-standard-8。添加不同代系的替代机器类型并对齐 CUD。纳入最新一代机器,例如
n4-standard-8,并根据需要使用磁盘替换。此外,还涵盖了计算灵活 CUD 的回退用量折扣。
为确保新部署和增量迁移都能安全顺利地完成,我们建议采用以下发布工作流程:
验证和基准比较。在非生产环境中,针对所有选定的机器系列、磁盘组合和可用区测试您的应用。
投入生产并扩大规模。在进行全球扩展之前,先逐步将实例灵活性政策或区域级 MIG 分布形状推广到部分生产环境中的实例。
监控和优化。持续监控回退率、效果指标和费用,以优化您的机器类型优先列表。使用 MIG 时,如需跟踪计算实例在机器类型和可用区之间的实时分布情况,请使用 MIG 实例分布监控信息中心。如需了解相关说明,请参阅监控 MIG 中的实例分布。
最佳做法
如需最大限度地提高灵活基础架构的效率和弹性,请采用以下各部分中所述的最佳实践。
位置灵活性最佳实践
使用容量感知型区域放置。使用区域级 MIG 或区域级批量虚拟机创建功能部署工作负载。选择
BALANCED或ANY分布形状,因为这些形状可让 Compute Engine 评估区域内所有可用区的实时容量,以便在资源可用的位置自动放置计算实例。选择在多个可用区中支持相应机器类型的区域:在所选机器类型在所有可用区中均受支持的区域中部署工作负载。此方法可确保位置灵活性功能在临时容量限制期间有尽可能多的备选可用区来路由请求。如需查看区域和可用区的列表,请参阅可用区域和可用区。
检查 Spot 虚拟机部署的可用性。如果您的部署使用 Spot 虚拟机,请查看多种机器类型和位置的 Spot 虚拟机的实时可用性和预期正常运行时间。选择可用容量高且正常运行时间符合工作负载要求的区域或可用区,以降低抢占风险。如需了解详情,请参阅查看 Spot 虚拟机的可用性(预览版)。
机器类型灵活性最佳实践
跨机器系列实现多样化。避免制定仅在单个系列内的 CPU 核心数方面有所不同的政策,例如
n2-standard-4和n2-standard-8。局部容量限制可能会同时影响整个机器系列。为了提高可用性,请跨多个机器代系和架构(例如n4-standard-8和n2-standard-8)。采用新机器类型,并将旧机器类型作为后备。将最新的机器家族与旧版家族一起纳入实例灵活性政策,以最大限度提高可用性。
配置磁盘和 CPU 平台替换。混用不同代机器类型可能会导致磁盘和 CPU 平台存在差异。在灵活性政策中定义磁盘和 CPU 平台替换,以帮助确保您的基础设施在不同代机器之间无缝扩缩。 例如,为 N4 实例配置 Hyperdisk Balanced,为 N2 回退配置 Persistent Disk。
优先使用较小的机器类型。根据工作负载的适用性,使用 vCPU 和内存较低的机器类型。例如,不要只依赖于
n2-standard-64这样的单一机器类型,而是评估您的工作负载是否可以扩展到四个计算实例,每个实例都使用n2-standard-16机器类型。较小的机器类型通常具有更高的资源可用性。选择性能相近的机器类型。指定具有类似 vCPU 和内存大小的替代机器类型。例如,在实例灵活性政策中组合使用
n2d-standard-8、n4-standard-8和n4a-standard-8。这种方法可在提高资源可用性的同时保持一致的应用性能。在 MIG 中启用修复时更新。默认情况下,MIG 会使用发生故障的计算实例的原始机器类型来修复该实例,但如果该硬件暂时不可用,则修复可能会失败。启用“维修时更新”,以便维修自动回退到灵活性政策中的可用机器类型。如需了解详情,请参阅实例灵活性和虚拟机修复。
纳入具有回退功能的 Spot 虚拟机。对于容错工作负载,请将 Spot 虚拟机与位置和机器类型灵活性相结合。如果 Compute Engine 抢占了某个 Spot 虚拟机,这些灵活性功能可让您的部署自动搜索替代机器类型或可用区。与标准配置相比,此策略有助于以更低的成本保持工作负载的资源可用性。
时间灵活性方面的最佳实践
确定合适的工作负载。为开始时间灵活但需要加速器等高需求资源的工作负载实现时间灵活性。此要求包括小型模型预训练、模型微调、高性能计算 (HPC) 模拟和批量推理。
为您的时间轴选择相应的功能。使用灵活启动预配模型,将运行时间不超过 7 天的定义时长作业的请求排入队列。如需获取高需求资源,预留时间最长为 90 天或更长时间,请使用受预留约束的预配模型。
优化灵活启动型虚拟机的等待时间。尝试创建灵活启动虚拟机时,如果工作负载必须在特定可用区中运行,请指定较长的等待时间。等待时间越长,Compute Engine 能够预配您请求的资源的几率就越大。如果您想创建独立的灵活启动虚拟机,并且您的工作负载可以在区域内的任何可用区中启动,请指定零秒的等待时间。如果创建请求因资源不可用而失败,请立即尝试在其他可用区中发出创建请求。
根据工作负载灵活性调整预留和折扣
为了平衡资源可用性和费用,请根据您为工作负载选择的容量策略,选择合适的承诺使用折扣 (CUD):
多种机器类型的使用量稳定:如果您的工作负载支持多种机器类型且使用量稳定,请配置机器类型灵活性并使用计算灵活 CUD。机器类型灵活性可在您的首选硬件容量不足时使用替代硬件,从而提高配置成功率。Compute 灵活 CUD 是一种基于支出的折扣,适用于您符合条件的计算支出,无论 Compute Engine 预配的具体机器系列是什么。
稳定基准,但流量会达到峰值:如果您的工作负载具有可预测的基准,但可能会出现不可预测的峰值,那么请使用预留和基于资源的 CUD 来确保可预测的基准。为了应对流量高峰,请配置机器类型灵活性,并使用计算灵活 CUD 来涵盖替代回退机器。在实例灵活性政策中,按如下方式分配偏好设置:
最高偏好:具有基于资源的 CUD 的预留机器类型
较低偏好:替代机器类型和使用计算灵活 CUD
Compute Engine 会先使用基于资源的承诺,然后使用计算灵活承诺来涵盖剩余的符合条件的使用量。
硬件配置严格固定的工作负载:如果您的工作负载依赖于单一机器类型,请使用预留和基于资源的 CUD。预留可为特定硬件提供高保障的容量,应考虑将其用于业务关键型工作负载。基于资源的 CUD 可为这种稳定的可预测使用量提供折扣。
如需了解详情,请参阅选择预留类型和 Compute Engine 的承诺使用折扣 (CUD)。
预留的设计注意事项
如果您的策略包含预留,请查看以下设计注意事项:
优先使用预留机器类型。如果您使用具有机器类型灵活性的预留,请将预留的机器类型添加到实例灵活性政策的最高偏好设置中。此配置有助于 Compute Engine 优先使用预留容量,而不是按需容量。
评估预留的范围。避免因临时容量限制而创建预留。如果您的工作负载使用位置灵活性功能(例如区域级 MIG),则 Compute Engine 可能会将实例分配到该区域中的其他可用区。在这种情况下,严格的可用区级预留可能会导致资源未使用而处于空闲状态。
限制
设计灵活的基础设施时,存在以下一般限制。如需了解更详细的限制,请参阅相应功能页面上的“限制”部分。
功能不兼容:您无法在单个部署中同时使用机器类型灵活性和时间灵活性。支持时间灵活性的功能仅支持每个请求一种机器类型配置。
初始创建期间的灵活性:对于批量创建的计算实例,容量评估和实例灵活性政策仅在初始计算实例创建请求期间适用。批量创建的计算实例在修复期间或扩缩基础架构时,不会自动重定向到替代可用区或机器类型。
部署到单个可用区:可用区级 MIG 不支持灵活性功能,因此不建议使用。如需采用机器类型灵活性来实现单可用区设计,请创建区域级 MIG 并明确选择一个可用区。
后续步骤
- 了解如何使用 MIG 将虚拟机分布在一个区域内的多个可用区中。
- 了解如何在托管式实例组中配置实例灵活性。
- 了解如何批量创建具有实例灵活性的虚拟机。
- 详细了解 Compute Engine 中的 CUD。