实例组

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

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 监控指标进行扩缩,或者对于地区 MIG,按照基于队列的工作负载(如 Google Cloud Pub / Sub)进行扩缩。

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

自动更新

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

请参阅更新托管实例组

抢占式实例组

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

容器

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

网络

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

MIG 功能演示

GCP NEXT '18 录制的以下 45 分钟视频演示了使用 Compute Engine 托管实例组设置、运行和更新可扩缩的高可用性部署的方法和最佳做法。

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

非托管实例组

非托管实例组可以包含一些异构实例,您可以向该组任意添加这些实例,以及从该组任意移除这些实例。非托管实例组不提供自动扩缩和自动修复功能,不支持滚动更新,也不允许使用实例模板,并且不适合部署可扩缩的高可用性工作负载。如果您需要将负载平衡应用到异构实例组,或者您需要自己管理实例,请使用非托管实例组。

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

后续步骤

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

发送以下问题的反馈:

此网页
Compute Engine 文档