本文档介绍如何创建代管式实例组 (MIG),以便为 MIG 的所有虚拟机保留具有给定设备名称的磁盘上的数据,即使在虚拟机重新创建时(例如自动修复、更新或重新创建 MIG 中的虚拟机时)也是如此。保留磁盘对某些工作负载(例如数据库或旧版应用)非常有用。
除了为实例组中的所有虚拟机保留磁盘之外,您还可以为以下各项配置有状态 MIG:
- 您可以添加和保留特定于实例的磁盘。
- 您可以添加和保留特定于实例的元数据。
- 您可以添加和保留 IP 地址。
如需了解详情,请参阅有状态 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
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
- 如果您的 MIG 采用有状态配置,则您无法使用自动扩缩功能。
- 如果您要使用自动滚动更新,则必须将替换方法设置为
RECREATE
。 - 对于有状态区域级 MIG,您必须停用主动式重新分布功能(将重新分布类型设置为
NONE
),以防止通过自动跨可用区重新分布删除有状态实例。 - 如果您使用所有实例配置来替换实例模板属性,则无法在任何每个实例配置中指定这些属性,同时也无法在组的所有实例配置中指定这些属性。
INSTANCE_GROUP_NAME
:要创建的代管实例组的名称。INSTANCE_TEMPLATE
:创建实例时要使用的实例模板的名称。 对于区域级实例模板,您必须指定模板的完整或部分网址。完整网址的示例是https://www.googleapis.com/compute/v1/projects/example-project/regions/us-central1/instanceTemplates/example-regional-instance-template
,部分网址是projects/example-project/regions/us-central1/instanceTemplates/example-regional-instance-template
。SIZE
:您所需的该实例组初始虚拟机数。DEVICE_NAME
:实例模板中指定的磁盘的设备名称。DELETE_RULE
:用于设置在删除虚拟机后应如何处理有状态磁盘的值。可用的选项包括:never
:(默认值)永不删除磁盘;而是在删除磁盘虚拟机后分离磁盘。on-permanent-instance-deletion
:从实例组永久删除磁盘的虚拟机实例时(例如,手动删除代管实例或减小实例组大小时),删除该磁盘。
无论删除规则的值如何,有状态磁盘在虚拟机自动修复、更新和重新创建操作时始终会保留。
PROJECT
:请求的项目 ID。ZONE
:MIG 所在的可用区(适用于可用区级 MIG)。- 对于区域级 MIG,将
zones/ZONE
替换为regions/REGION
并指定 MIG 所在的区域。
- 对于区域级 MIG,将
NAME
:要创建的 MIG 的名称。TEMPLATE
:创建实例时要使用的实例模板的名称。SIZE
:您所需的该实例组初始实例数。DEVICE_NAME
:实例模板中指定的磁盘的设备名称。DELETE_RULE
:用于设置在删除虚拟机实例后应如何处理有状态磁盘的值。可用的选项包括:never
:(默认值)永不删除磁盘;而是在删除磁盘虚拟机后分离磁盘。on_permanent_instance_deletion
:从实例组永久删除有状态磁盘的虚拟机时(例如,手动删除托管实例或减小实例组大小时),删除该有状态磁盘。
无论删除规则的值如何,有状态磁盘在实例自动修复、更新和重新创建操作时始终会保留。
- 详细了解有状态 MIG 以及何时使用它们。
- 详细了解如何在 MIG 中配置有状态磁盘。
- 了解有状态 MIG 的工作原理。
- 详细了解如何为磁盘、元数据和 IP 地址配置有状态 MIG。
Terraform
如需在本地开发环境中使用本页面上的 Terraform 示例,请安装并初始化 gcloud CLI,然后使用您的用户凭据设置应用默认凭据。
如需了解详情,请参阅 Set up authentication for a local development environment。
REST
如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证。
限制
具有有状态配置的 MIG(有状态 MIG)具有以下限制:
如需查看 MIG 限制的完整列表(因您使用的配置而异),请参阅 MIG 限制。
创建具备有状态磁盘的 MIG
使用 Google Cloud 控制台、gcloud CLI、Terraform, 或 REST。
控制台
gcloud
如需指定创建 MIG 时实例模板中的哪些磁盘应为有状态磁盘,请将
--stateful-disk
标志与gcloud compute instance-groups managed create
命令结合使用:gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \ --template INSTANCE_TEMPLATE \ --size SIZE \ --stateful-disk device-name=DEVICE_NAME[,auto-delete=DELETE_RULE]
替换以下内容:
Terraform
如果您尚未创建您希望为 MIG 中的每个虚拟机指定机器类型、启动磁盘映像、网络和其他虚拟机属性的实例模板,请创建实例模板。
如需指定创建 MIG 时实例模板中的哪些磁盘应为有状态,请添加
stateful_disk
组成块。以下示例会创建一个具有有状态磁盘的可用区级 MIG。如需详细了解示例中使用的资源,请参阅google_compute_instance_group_manager
资源。如需了解如何应用或移除 Terraform 配置,请参阅基本 Terraform 命令。
REST
如需指定创建 MIG 时实例模板中的哪些磁盘应为有状态,请将这些磁盘添加到请求正文中的
statefulPolicy
字段。对于可用区级 MIG,请使用instanceGroupManagers.insert
方法;对于区域级 MIG,请使用regionInstanceGroupManagers.insert
方法。POST https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/instanceGroupManagers { "name": "NAME", "versions": [ { "instanceTemplate": "global/instanceTemplates/TEMPLATE" } ], "targetSize": SIZE, "statefulPolicy": { "preservedState": { "disks": { "DEVICE_NAME": {"autoDelete": "DELETE_RULE" }, "DEVICE_NAME": {"autoDelete": "DELETE_RULE" } } } } }
替换以下内容:
后续步骤
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2024-11-26。
-