实例组

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

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

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

代管实例组 (MIG)

托管实例组 (MIG) 适用于以下场景:

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

MIG 中的每个代管实例都是根据实例模板创建的。

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

优势

MIG 具有以下优势:

  • 高可用性
    • 让虚拟机实例持续运行。如果实例组中的某个虚拟机停止运行、发生崩溃,或者被实例组管理命令以外的操作(例如故意缩减规模)删除,则 MIG 会自动根据原始实例的规范(即使用相同虚拟机名称和相同模板)重新创建该虚拟机,让该虚拟机可以继续运行。
    • 基于应用的自动修复。您还可以设置自动修复政策,以便使用基于应用的运行状况检查来定期验证您的应用是否在每个 MIG 实例上如预期响应。如果应用在某个虚拟机上没有响应,则系统会自动重新创建该虚拟机。相较于仅验证虚拟机是否已启动并正在运行,检查应用是否响应可以获得更加精准的结果。
    • 地区(多区域)覆盖。地区级 MIG 可让您将应用负载分布到多个区域。这种复制机制可避免区域性故障。如果发生这种情况,您的应用可以继续通过在同一区域的其他可用地区中运行的实例处理流量。
    • 负载平衡。MIG 可搭配负载平衡服务一起使用,将数据流量分配到该实例组中的所有实例。
  • 可扩缩性。当您的应用需要额外的计算资源时,自动扩缩的 MIG 会自动根据需求增加该实例组中的实例数量。而当需求降低时,自动扩缩的 MIG 也会自动缩减实例数量,从而为您节省成本。
  • 自动更新。MIG 自动更新程序可让您安全地将新版软件部署到 MIG 中的实例,同时还支持滚动更新和 Canary 更新等一系列灵活的发布方案。您可以控制部署的速度和范围,以及服务中断级别。
  • 支持有状态工作负载。您可以使用 MIG 来构建高可用性部署,并自动执行使用有状态数据或配置的应用,例如数据库、DNS 服务器、旧版单体式应用或设有检查点且长时间运行的批量计算。有状态 MIG 会在机器重启、重新创建、自动修复或更新后保留每个实例的独有状态(实例名称、挂接的永久性磁盘和元数据)。
MIG 功能和常规工作负载概览

自动修复

代管实例组通过主动保持实例可用(即处于 RUNNING 状态)来维护应用的高可用性。MIG 会自动重新创建未处于 RUNNING 状态的实例。但是,仅依赖虚拟机状态可能不够。您可能希望在应用冻结、崩溃或内存不足时重新创建实例。

基于应用的自动修复通过依赖检测特定于应用的问题(如冻结、崩溃或过载)的运行状况检查信号来提高应用可用性。如果运行状况检查确定应用在某个虚拟机上出现故障,则实例组将自动重新创建该实例。

运行状况检查

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

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

如需了解详情,请参阅为 MIG 设置运行状况检查和自动修复

地区级或区域级实例组

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

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

这两种类型都具有 MIG 的所有优势。地区级 MIG 会将应用负载分布到多个区域,保护您的工作负载免受区域性故障的影响,从而提供更高的可用性;此外,地区级 MIG 还可以提供更多容量,每个地区级实例组最多可以有 2000 个实例。

负载平衡

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

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

自动扩缩

MIG 支持自动扩缩,该功能可以根据负载的增减情况,动态地向 MIG 添加实例或者从 MIG 中移除实例。您可以启用自动扩缩并配置自动扩缩政策以指定组的扩缩方式。自动扩缩政策包括根据 CPU 利用率、负载平衡容量、Cloud Monitoring 指标或(对于区域级 MIG)Pub/Sub 等基于队列的工作负载扩缩资源。

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

自动更新

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

请参阅更新 MIG

支持有状态工作负载

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

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

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

抢占式实例组

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

容器

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

网络和子网

创建代管实例组时,您必须引用一个现有实例模板。该实例模板定义成员实例使用的 VPC 网络和子网。对于自动模式 VPC 网络,您可以省略子网;这会指示 Google Cloud 在模板所指定的地区中选择自动创建的子网。如果您省略 VPC 网络,Google Cloud 会尝试使用名为 default 的 VPC 网络。

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

MIG 功能演示

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

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

非代管实例组

非托管实例组可以包含异构实例,这类实例可以在该实例组中任意添加和移除。非代管实例组不提供自动扩缩和自动修复功能,不支持滚动更新和多区域,也不允许使用实例模板。因此,建议不要使用这类实例组来部署可扩缩的高可用性工作负载。如果您需要对异构实例组应用负载平衡,或者需要自行管理实例,可以使用非代管实例组。

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

后续步骤