实例组

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

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

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

托管实例组 (MIG)

托管实例组 (MIG) 适用于无状态服务工作负载(例如网站前端),也适用于批处理计算工作负载或者高性能或高吞吐量的计算工作负载(例如队列中的映像处理)。

MIG 中的每个虚拟机实例都是根据实例模板创建的。

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

优势

MIG 具有以下优势:

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

自动修复

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

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

运行状况检查

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

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

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

区域组或地区组

您可以创建两种类型的托管实例组:

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

负载平衡

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

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

自动扩缩

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

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

自动更新

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

请参阅更新托管实例组

抢占式实例组

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

容器

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

网络

默认情况下,系统会将实例组中的实例置于 default 网络中,并从区域范围中随机分配 IP 地址。您也可以创建自定义模式 VPC 网络以及使用较小 IP 地址范围的子网,然后在实例模板中指定此子网,从而限制实例组的 IP 地址范围。

MIG 功能演示

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

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

非托管实例组

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

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

后续步骤

此页内容是否有用?请给出您的反馈和评价:

发送以下问题的反馈:

此网页
Compute Engine 文档