在之前的文章中,我们通过一个简单的案例介绍过如何创建 VM 实例,点此复习。但是在实际使用过程中,单个实例往往是无法满足需求,需要使用实例组。
Compute Engine 提供了两种虚拟机实例组,即托管实例组和非托管实例组:
高可用性。
可扩缩性。当应用所需的计算资源发生变化时,自动扩缩的 MIG 会根据实际需求自动增加或删减该实例组中的实例数量。
自动更新。MIG 自动更新程序可让用户更安全地将新版软件部署到 MIG 中的实例上,同时还支持滚动更新和 Canary 更新等一系列灵活的发布方案。用户还可以控制部署的速度和范围,以及服务中断级别。
支持有状态工作负载。用户可以使用 MIG 来构建高可用性部署,并自动执行使用有状态数据或配置的应用,例如数据库、DNS 服务器、旧版单体式应用或设有检查点且长时间运行的批量计算。有状态 MIG 会在机器重启、重新创建、自动修复和更新事件后保留每个实例的独有状态(实例名称、挂接的永久性磁盘和元数据)。
MIG 会根据您指定的实例模板和可选的有状态配置来创建每个代管式实例。每个代管式实例都是 MIG 中的数据实体,其中包含实际虚拟机实例的当前状态和预期状态。MIG 会主动确保实际虚拟机可用(即处于 RUNNING 状态),以保持应用的高可用性。
使用 instance-groups managed create 命令
gcloud compute instance-groups managed create example-group \
--base-instance-name test \
--size 3 \
--template an-instance-template
INSTANCE_GROUP_NAME:所创建的实例组名称。
SIZE:实例组的大小。
INSTANCE_TEMPLATE:该组将使用的实例模板的名称。
ZONE:提供 Compute Engine 服务的一个可用区。
点击页面顶部的滚动更新。
在更新模式下,选择寻机更新或主动更新。
MIG 的大小调整手动和自动两种方式,其中自动扩缩的工作原理是,当有更多负载时,该功能会向您的 MIG 中添加更多虚拟机(扩充),而在虚拟机需求量减少时,该功能会删除虚拟机(缩减)。我们只需定义自动扩缩政策,自动扩缩程序即可根据测量到的负载执行自动扩缩。当然,自动扩缩仅适用于区域和地区的托管实例组,针对非托管实例组是不适用的。
自动扩缩更多信息可以通过官方文档了解:
https://cloud.google.com/compute/docs/autoscaler#policies
如果代管实例组尚未设置为自动扩缩,则可以手动调整组的大小以更改实例数。如果增加大小,则代管实例组会使用当前实例模板添加新实例。
如果要减小代管实例组的大小,则该实例组将删除自身所含的某些虚拟机。实例组首先会删除 currentAction 为 DELETING、CREATING 和 RECREATING 的实例,然后才会删除正在运行并且无任何计划内操作的实例。
使用 resize 命令
gcloud compute instance-groups managed resize \
--size \
--zone
如需从实例组中移除实例而不删除实例,请使用 abandon-instances 命令。
gcloud compute instance-groups managed abandon-instances \
--instances example-i3n2,example-z2x9 \
--zone
如需删除某托管实例组,但必须保留此代管实例组内的某些虚拟机,请先放弃这些实例,以将虚拟机从该实例组移除,然后再删除代管实例组。
使用 delete 命令
gcloud compute instance-groups managed delete \
--zone