实例组


实例组是可以作为单个实体进行管理的虚拟机 (VM) 实例的集合。

Compute Engine 提供了两种虚拟机实例组,即托管实例组和非托管实例组:

  • 托管实例组 (MIG) 可让您在多个相同的虚拟机上运行应用。您可以利用自动化 MIG 服务让您的工作负载具有可扩缩性和高可用性,这些服务包括自动扩缩、自动修复、区域(多地区)部署和自动更新。

  • 非托管实例组可让您跨一组自行管理的虚拟机实现负载均衡。

自行试用

如果您是 Google Cloud 新手,请创建一个账号来评估 Compute Engine 在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。

免费试用 Compute Engine

托管实例组 (MIG)

对于以下场景,请使用托管式实例组 (MIG):

  • 无状态服务工作负载,例如网站前端
  • 无状态批处理、高性能或高吞吐量计算工作负载,例如队列中的图片处理
  • 有状态应用,例如数据库、旧版应用以及设有检查点且长时间运行的批量计算

Compute Engine 会根据您在实例模板中指定的配置和可选的有状态配置来维护 MIG 的每个托管式实例

如需了解如何创建 MIG,请参阅创建托托管式实例组

优势

MIG 具有以下优势:

  • 高可用性

    • 自动修复故障虚拟机。如果实例组中的虚拟机停止、崩溃、被抢占(Spot 虚拟机)或者被 MIG 未启动的操作删除,则 MIG 会基于其原始配置(同一虚拟机名称、同一模板)自动重新创建该虚拟机,以便虚拟机可以继续工作。
    • 基于应用的自动修复。您还可以设置基于应用的健康检查,该检查会定期验证应用是否在每个 MIG 实例上按照预期进行响应。如果应用在某个虚拟机上没有响应,MIG 会自动为您重新创建该虚拟机。相较于仅验证虚拟机是否已启动并正在运行,检查应用是否响应可以获得更加精准的结果。
    • 地区(多区域)覆盖。地区级 MIG 可让您将应用负载分布到多个区域。这种复制机制可避免区域性故障。如果发生这种情况,您的应用可以继续通过在同一区域的其他可用地区中运行的实例处理流量。

    • 负载均衡。MIG 可搭配负载均衡服务一起使用,将数据流量分配到该实例组中的所有实例。

  • 可伸缩性。当您的应用需要额外的计算资源时,自动扩缩的 MIG 会自动根据需求增加该实例组中的实例数量。而当需求降低时,自动扩缩的 MIG 也会自动缩减实例数量,从而为您节省成本。

  • 自动更新。MIG 自动更新程序可让您安全地将新版软件部署到 MIG 中的实例,同时还支持滚动更新和 Canary 更新等一系列灵活的发布方案。您可以控制部署的速度和范围,以及服务中断级别。

  • 支持有状态工作负载。您可以使用 MIG 来构建高可用性部署,并自动执行使用有状态数据或配置的应用,例如数据库、DNS 服务器、旧版单体式应用或设有检查点且长时间运行的批量计算。有状态 MIG 会在机器重启、重新创建、自动修复和更新事件后保留每个实例的独有状态(实例名称、挂接的永久性磁盘和元数据)。

  • 一次性创建所有 GPU 虚拟机。如果您的批量作业(例如 AI 或机器学习训练)需要确切数量的 GPU 虚拟机,则在 MIG 中创建调整大小请求可帮助您一次性创建所有虚拟机。您可以指定希望虚拟机运行的时长,从而提高高需求资源(如 GPU)的可获取性。

使用托管式实例组可以为无状态服务工作负载、有状态应用或批量工作负载构建高可用性部署。
MIG 功能和常规工作负载概览

自动修复

托管式实例组会主动让您的实例保持可用,以维持应用的高可用性。MIG 通过重新创建失败的实例来自动修复这些实例。

您可能还需要在应用冻结、崩溃或内存不足时修复实例。基于应用的自动修复通过依赖检测特定于应用的问题(如冻结、崩溃或过载)的健康检查信号来提高应用可用性。如果健康检查确定应用在某个虚拟机上出现故障,则实例组将自动重新创建该实例。

如需了解详情,请参阅关于修复 MIG 中的虚拟机

健康检查

用于监控 MIG 的健康检查与用于负载均衡的健康检查类似,但两者在行为上存在一些差异。负载均衡健康检查有助于将流量从无响应的实例引导至健康状况良好的实例;这些健康检查不会导致 Compute Engine 重新创建实例。另一方面,托管式实例组健康检查会主动发出信号,以删除健康状况变为 UNHEALTHY 的实例并重新创建这些实例。

在大多数情况下,请对负载均衡和自动修复使用不同的健康检查。用于负载均衡的健康检查可能而且应该更加严格,因为这些检查将确定实例是否收到用户流量。由于客户可能会依赖您的服务,因此您需要快速捕获无响应的实例,以便在必要时重定向数据流量。相对来说,用于自动修复的健康检查会使 MIG 主动替换有故障的实例,因此这类健康检查应比负载均衡健康检查更为保守。

如需了解详情,请参阅设置应用健康检查和自动修复

地区级或区域级实例组

您可以创建两种类型的 MIG:

  • 区域级 MIG:此类实例组可以将实例部署到单个区域。
  • 地区级 MIG:此类实例组可以将实例部署到同一地区内的多个区域。

这两种类型都具有 MIG 的所有优势。区域级 MIG 会将应用负载分布到多个可用区,保护您的工作负载免受可用区级故障的影响,从而提供更高的可用性;此外,区域级 MIG 还可以提供更多容量。默认情况下,您可以在一个区域级 MIG 中最多创建 2,000 个虚拟机,在一个可用区级 MIG 中最多创建 1,000 个虚拟机。如果您需要更多虚拟机,可以提高 MIG 的大小限制,也可以与支持团队联系

负载均衡

Google Cloud 负载均衡可以使用实例组来处理流量。根据您选择的负载均衡器类型,您可以将实例组添加到目标池或后端服务。

如需了解详情,请参阅将实例组添加到负载均衡器

自动扩缩

MIG 支持自动扩缩,该功能可以根据负载的增减情况,动态地向实例组添加虚拟机实例或者从实例组中移除实例。您可以配置自动扩缩政策来指定实例组的扩缩方式。在自动扩缩政策中,您可以设置一个或多个信号,以根据 CPU 利用率、负载均衡容量、Cloud Monitoring 指标、时间表或者使用 Pub/Sub 等基于队列的工作负载(对于可用区 MIG)来扩缩实例组。

如需了解详情,请参阅自动扩缩实例组

自动更新

您可以轻松安全地将新版软件部署到 MIG 中的实例。系统会根据您指定的条件自动发布更新:您可以控制更新发布的速度和范围,以最大限度地减少应用中断情况。您可以选择性地执行部分发布来进行 Canary 测试。

请参阅更新 MIG

支持有状态工作负载

您可以使用有状态托管式实例组(有状态 MIG)在虚拟机上构建可用性高的有状态工作负载部署。有状态工作负载包括采用有状态数据或配置的应用,例如数据库、旧版单体式应用以及设有检查点且长时间运行的批量计算。

您可以通过自动修复受控更新多区域部署来改善此类有状态应用的正常运行时间和弹性,同时保留每个实例的独有状态信息,包括可自定义的实例名称、永久性磁盘和元数据。

如需了解详情,请参阅有状态 MIG

一次创建所有 GPU 虚拟机

您可以在具有 GPU 虚拟机的 MIG 中创建调整大小请求,以便在请求的容量可用时一次性创建请求的虚拟机。在 MIG 中创建调整大小请求时,Compute Engine 会根据所请求虚拟机的数量、请求的运行时长以及所请求资源在 MIG 所在可用区中的可用性来安排虚拟机的创建。然后,在按计划传送资源时,MIG 会一次性创建请求的所有虚拟机。虚拟机会一直运行,直到其运行时长结束或直到您将其删除。

如需了解详情,请参阅关于调整 MIG 中的请求大小

抢占式实例组

对于降低费用比执行速度更重要的工作负载,您可以通过在实例组中使用抢占式虚拟机实例来降低工作负载的费用。抢占式实例的持续时间可长达 24 小时,并且此类实例采用安全抢占方式,让您的应用可有 30 秒的时间来正确退出。系统可能随时删除抢占式实例,但是自动修复功能会在抢占式容量再次变为可用时恢复这些实例。

容器

您可以通过将容器部署到托管式实例组中的实例来简化应用部署。如果您在实例模板中指定容器映像,然后使用该模板创建托管式实例组,系统将使用包含 Docker 的 Container-Optimized OS 创建每个虚拟机,并且容器将在实例组中的每个虚拟机上自动启动。请参阅在虚拟机和 MIG 上部署容器

网络和子网

创建托管式实例组时,您必须引用一个现有实例模板。该实例模板定义成员实例使用的 VPC 网络和子网。如果您省略 VPC 网络,Google Cloud 会尝试使用名为 default 的 VPC 网络以及模板中指定区域中自动创建的子网。

如需了解详情,请参阅网络和子网

如果您希望托管式实例组包含使用 IPv6 寻址的虚拟机实例,则必须在创建实例模板时使用双栈设置。如需了解详情,请参阅创建使用 IPv6 地址的实例模板

MIG 功能演示

以下这个 45 分钟的视频演示拍摄自 Google Cloud NEXT '18 大会,其中包含有关使用 Compute Engine MIG 设置、运行和更新可扩缩的高可用性部署的演示内容和最佳做法。

该视频介绍了如何将容器部署到 MIG、设置自动修复政策、使用地区级实例组防止区域性故障、配置自动扩缩以满足 CPU 目标和基于队列的需求,以及管理 Canary 和滚动更新。

非托管式实例组

非托管实例组可以包含异构实例,这类实例可以在该实例组中任意添加和移除。非托管式实例组不提供自动扩缩和自动修复功能,不支持滚动更新和多区域,也不允许使用实例模板。因此,建议不要使用这类实例组来部署可扩缩的高可用性工作负载。如果您需要对异构实例组应用负载均衡,或者需要自行管理实例,可以使用非托管式实例组。您最多可以向一个实例组添加 2,000 个虚拟机。如果要向实例组添加 2,000 个以上的虚拟机,请与支持团队联系

如果您必须创建非托管式实例组,请参阅非托管式实例组

价格

使用托管式或非托管式实例组不会产生额外费用。系统会根据您的实例组组使用的资源收费。 如需了解 Compute Engine 价格信息,请参阅价格

后续步骤