您可以使用有状态托管式实例组(有状态 MIG)来改善有状态应用的正常运行时间和弹性。
通过创建有状态配置,您可以在机器重启、重新创建、自动修复或更新事件后保留每个 MIG 虚拟机实例的独有状态,包括名称、永久性磁盘和元数据。
本页面介绍配置有状态 MIG 的方法,并提供指向每个任务相关指南的链接:
创建或更新有状态配置后,您可以应用该配置以使其生效,查看配置以及每个虚拟机的有效保留状态,或在您不再需要此配置时将其移除。
如果独立(非代管式)Compute Engine 虚拟机上已有有状态应用,另请参阅将现有工作负载迁移到有状态 MIG 指南。
准备工作
- 参阅何时使用有状态 MIG
- 参阅如何使 MIG 成为有状态 MIG
- 如需了解详情,请参阅有状态 MIG 的工作原理。
-
如果您尚未设置身份验证,请进行设置。身份验证是通过其进行身份验证以访问 Google Cloud 服务和 API 的过程。如需从本地开发环境运行代码或示例,您可以通过选择以下选项之一向 Compute Engine 进行身份验证:
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
- Set a default region and zone.
- 如果您的 MIG 采用有状态配置,则您无法使用自动扩缩功能。
- 如果您要使用自动滚动更新,则必须将替换方法设置为
RECREATE
。 - 对于有状态区域级 MIG,您必须停用主动式重新分布功能(将重新分布类型设置为
NONE
),以防止通过自动跨可用区重新分布删除有状态实例。 如果您使用所有实例配置来替换实例模板属性,则无法在任何每个实例配置中指定这些属性,同时也无法在组的所有实例配置中指定这些属性。
有状态的区域级 MIG 不会自动协调跨可用区故障切换。使用地区级 MIG 时,通过将冗余副本部署到多个区域并依赖应用的数据复制功能,使有状态应用对于区域性故障具有恢复能力。
当永久删除某实例(无论是手动删除还是调整大小)时,MIG 不会保留其有状态元数据。
- 将现有独立虚拟机迁移到有状态 MIG,以利用自动修复和自动更新功能,同时保留其名称。
- 部署架构,其中外部依赖项依赖于特定虚拟机名称,例如,基于预配置名称或使用特殊命名模式保留工作节点注册表的主虚拟机。
- 部署需要特定虚拟机名称的旧版配置(例如,因为这些名称经过硬编码)。
- 应用有状态配置,使其生效。
- 查看有状态配置以及代管实例的有效保留状态。
- 移除有状态配置。
- 在 MIG 中创建具有特定名称的虚拟机。
- 为 MIG 中的所有虚拟机或特定虚拟机配置有状态永久性磁盘。
- 为 MIG 中的虚拟机配置有状态元数据。
- 为 MIG 中的所有虚拟机或特定虚拟机配置有状态 IP 地址。
- 应用、查看或移除您的有状态配置。
- 详细了解 MIG 以及如何使用代管式实例。
REST
如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证。
限制
具有有状态配置的 MIG(有状态 MIG)具有以下限制:
设置和保留实例名称
除非您通过减小实例组大小或执行滚动更新将现有实例替换为新实例来永久删除实例,否则 MIG 始终会保留其虚拟机实例的名称。
如果要在更新期间保留实例名称,请在实例组的更新政策中将更新的替换方法设置为
RECREATE
。您可以通过手动创建实例来指定自定义名称,也可以让 MIG 为其虚拟机自动生成名称。
设置自定义虚拟机名称适用于以下情况:
在所有其他情况下,您可以让 MIG 使用基本实例名称以及随机后缀来自动生成虚拟机名称。
配置和管理有状态永久性磁盘
通过将永久性磁盘配置为有状态,您可以利用虚拟机自动修复和受控更新功能,同时保留磁盘状态。如需了解详情,请参阅有状态 MIG 的用例。
如需了解相关说明,请参阅配置有状态永久性磁盘。
配置有状态元数据
您可以使用实例元数据,通过元数据服务器为您的应用设置属性并与之通信。例如,您可以使用元数据来配置虚拟机的身份、环境变量、集群架构相关信息或此虚拟机负责的数据范围。
通过使用有状态元数据,您可以确保在实例自动修复、更新和重新创建事件后保留实例专用元数据。
如需了解相关说明,请参阅配置有状态元数据。
配置和管理有状态 IP 地址
您可以通过将托管式实例组 (MIG) 声明为有状态来配置这些实例,以便在实例自动修复、更新和重新创建事件时保留 IP 地址。内部和外部 IP 地址都可以保留。您可以将 IP 地址配置为自动分配,也可以将特定 IP 地址分配给 MIG 中的每个虚拟机实例。
如需了解相关说明,请参阅配置有状态 IP 地址。
应用、查看和移除有状态配置
将 MIG 配置为有状态后,您可以执行以下操作:
如需了解相关说明,请参阅应用、查看和移除有状态配置。
反馈
我们希望了解有关有状态 MIG 的用例、挑战和反馈。请发送至 mig-discuss@google.com,与我们的团队分享您的反馈。
后续步骤
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2025-06-24。
-