滚动新闻 →
美国佛州登革热病例激增 三县进入紧急状态 新能源汽车为什么需要防止电池热失控 名古屋MIRAI TOWER传火警冒烟雾 幸无人伤亡 五金工具买套装还是单独购买 《情深深》四主角隔空同框?苏有朋童年创伤曝光 AI 模型加载到 GPU 的过程是怎样的,从磁盘文件到显存完整解释 Google Cloud Managed Instance Group 是什么,多台虚拟机如何统一管理 熊本接连地震 台积电熊本厂所在地菊阳町3级 SaaS 权限系统怎么设计?管理员、员工和普通用户应该如何划分 习近平访美踉跄上机 回国最后一幕露馅 俄罗斯攻欧?丹麦警告 普京否认 显卡风扇不转是不是显卡坏了?不同显卡的风扇停转机制需要区分 川普为何高规格接待习?媒体人一句话揭迷底 老妇夜宿国3服务区 帐篷离奇倒塌死亡逾10小时 大陆高学历求职百态 95后硕士当河马“铲屎官” 江苏男殡仪馆卖咖啡 直言:挣钱“胆子要大” Windows 11 电源模式怎么选择?性能、平衡和节能应该怎样取舍 PHP autoload 怎么工作?从 Composer 自动加载理解现代 PHP 项目 泰国曼谷豪雨酿淹水灾情 居民困车阵 从项羽本纪看失败者的文学魅力 中秋节广东发生酒驾车祸 致夫妻双亡 秋天瓜子上市 “嗑”瓜子有这些好处 《伤寒论》在传统医学史上的地位 中国歌手刘欢中秋节去世 “不死癌症”等多病缠身 围棋为什么强调全局观 疑瓦斯外泄 雅典繁忙观光区剧烈爆炸3伤 如何让孩子理解边界感也是一种尊重 如何判断视频曝光是否合理 太平洋法属新喀里多尼亚岛 遭规模7强震侵袭 南京为什么多次成为中国都城 卧室没有自然光可以如何改善空间感 中国人为什么讲究“无酒不成席” 希腊爱琴海渡轮突发火警 29人全数安全撤离 长途旅行如何选择更舒服的住宿 强烈东北风暴逼近美东 逾4千万人恐受影响 香港大坑上演百年舞火龙 香火飞舞点亮中秋夜 本周末“丰收月”登场 与其他满月有何不同? 媒体揭川习闭门谈台湾 北京施压未得逞 川习会抗议声中落幕 五大核心分歧未解 车辆启动后排气管滴水到底正常不正常

Google Cloud Managed Instance Group 是什么,多台虚拟机如何统一管理

发布时间: 2026-09-26 01:30:02    最后更新: 2026-09-26 02:43:08    阅读:4  约15 分钟阅读     

在 Google Cloud Compute Engine 中,如果一台虚拟机承担网站、API、后台任务或者计算服务,管理员可以直接登录这台 VM 进行维护;但当同一种服务从一台机器扩展到十台、几十台甚至跨多个可用区的数百台 VM 后,逐台管理很快就会变成一个运维问题。Google Cloud 的 Managed Instance Group,也就是 MIG,解决的正是这一层问题。它不是简单意义上的“虚拟机列表”,而是 Compute Engine 提供的一套实例生命周期管理机制,可以把一组具有共同配置的 VM 作为一个整体进行创建、维护、故障恢复、自动更新和扩缩容。Google 将 MIG 定义为可以作为一个实体统一管理的一组虚拟机,并通过实例模板、自动修复、自动扩缩容、区域部署以及自动更新等能力,把原本分散的 VM 纳入统一的控制体系。

实例模板决定了虚拟机如何被创建

MIG 的基础是 Instance Template,也就是实例模板。模板保存的是创建 VM 时所需要的共同配置,例如机器类型、启动磁盘镜像、网络接口、磁盘配置、启动脚本以及其他实例属性。创建 MIG 时,需要指定实例模板以及目标实例数量,Compute Engine 随后按照模板创建并管理这些实例。这样做的价值并不只是省掉几次鼠标点击,而是把“什么样的机器才算合格的服务实例”从人工操作变成了一个可以被系统重复执行的配置定义。

这里有一个很容易被误解的地方:实例模板并不是一个会实时同步所有现有 VM 的“中央配置文件”。如果管理员修改或者创建了新的实例模板,已经运行的 VM 不会因为模板本身发生变化就瞬间全部变成新版本。要让现有实例采用新的配置,需要使用 MIG 的更新机制,由 MIG 按照设定的更新策略逐步替换或者刷新实例。Google Cloud 支持滚动更新以及 Canary 更新,可以控制更新速度、范围以及服务受到的干扰程度,这也是 MIG 和简单批量创建 VM 的重要区别之一。

对于实际生产环境,这意味着操作系统镜像、应用程序版本、启动脚本以及机器规格的变化,都应该尽可能进入可追踪的实例模板和更新流程,而不是登录几十台服务器以后分别执行不同的命令。否则即使服务器数量不多,时间一长也会出现所谓 configuration drift,也就是同一个服务集群里的机器实际上已经运行着不同版本的软件、不同的系统参数和不同的依赖环境。

MIG真正强大的地方在于实例生命周期管理

MIG 的核心价值并不是“帮你创建很多台一样的 VM”,而是 Compute Engine 会持续维护这个实例组的目标状态。如果 MIG 需要维持一定数量的实例,而其中一台 VM 因为崩溃、被删除或者 Spot VM 被回收而离开运行状态,MIG 可以按照原有配置重新创建实例,从而恢复所需的计算容量。Google Cloud 还提供基于应用程序健康状态的 autohealing,也就是自动修复机制。当健康检查发现某台 VM 上运行的应用程序没有按照预期响应时,MIG 可以重新创建该 VM。

这和普通意义上的“服务器监控”并不是一回事。监控系统告诉管理员某台机器出了问题,而 MIG 的控制机制可以进一步执行恢复动作。对于无状态 Web 前端或者 API 服务,这种设计尤其有价值,因为业务实例本身可以被视为可替换计算资源。某台 VM 出问题以后,系统不需要花很长时间去修复那一台机器,而是可以按照既定配置重新获得一个能够提供服务的新实例。

不过,MIG 的自动修复并不意味着所有应用都可以随意重建。无状态应用比较适合这种模型,因为实例本身不应该保存不可替代的业务数据。如果一台 Web Server 被删除以后,新的 VM 从镜像和配置重新启动即可继续工作,那么 MIG 的自动修复就非常自然。如果应用把重要数据直接存储在本地磁盘,并且这些数据没有经过适当的持久化设计,那么自动重建反而可能造成数据问题。

自动扩缩容不是简单的CPU超过70%就增加两台机器

MIG 可以与 autoscaler 配合,根据业务负载自动调整实例数量。Google Cloud 当前支持多种扩缩容信号,包括 CPU 利用率、负载均衡容量、Cloud Monitoring 指标、计划任务,以及部分场景下的队列型工作负载。也就是说,自动扩缩容并不是一个固定的“CPU 超过某个百分比就增加几台 VM”的简单规则,而是根据配置的信号和目标状态计算所需容量。

CPU 是一个常见指标,但它并不总是最好的业务指标。一个 Web API 服务可能在 CPU 只有40%的情况下已经出现大量请求排队,因为瓶颈可能位于数据库连接池、外部 API、锁竞争、网络 I/O 或应用内部队列。反过来,一些计算型程序即使 CPU 长时间处于高利用率,也可能不应该无限增加实例,因为任务本身存在固定的并行度或者共享资源限制。因此,MIG 的 autoscaling 应该根据应用实际瓶颈设计,而不是简单照搬一个 CPU 百分比。

对于请求驱动型 Web 服务,负载均衡器提供的 serving capacity 可以比单纯 CPU 利用率更接近业务实际压力。对于后台处理系统,队列长度或者待处理任务数量可能更加合适。对于具有明显日周期的服务,则可以结合计划扩缩容,在业务高峰之前提前准备容量。Google Cloud 也提供预测性和计划型扩缩容能力,用来处理并非完全依赖实时 CPU 信号的需求。

还必须考虑扩容本身需要时间。autoscaler 决定增加实例,并不意味着新 VM 可以在同一瞬间承担生产流量。实例需要创建、启动应用程序、通过相应的健康检查,然后才能进入正常服务状态。因此,一个系统如果只依赖“流量已经暴涨以后再扩容”,仍然可能在突发流量的最初阶段出现容量不足。对于有明显流量规律的系统,提前扩容或者保留最低实例数量往往比完全等待实时负载触发更可靠。

负载均衡和MIG自动修复不是同一套机制

原文经常把 MIG、健康检查和 Load Balancer 描述成一个连续的单一系统,这容易造成误解。实际上,负载均衡器和 MIG 各自负责不同的问题。

负载均衡器主要负责决定请求应该发送给哪些健康的后端实例。如果某个后端实例无法正常提供服务,负载均衡系统可以停止向它发送流量。MIG 的 autohealing 则负责实例生命周期,当应用程序健康检查确认实例已经不适合继续运行时,MIG 可以执行重建。Google Cloud 本身也明确把 load balancing 和 application-based autohealing 作为不同能力提供。

这一区别在生产环境非常重要。一个实例可能只是暂时无法接受某类请求,此时从负载均衡器中摘除它可能已经足够;如果因为短暂网络抖动就立即重建 VM,反而可能扩大故障范围。因此健康检查的设计不能只考虑“检查得越严格越好”,还要考虑启动时间、瞬时故障、依赖服务异常以及重建成本。

Regional MIG解决的是可用区级故障

如果所有 VM 都位于同一个 zone,那么这个 zone 出现故障时,实例组中的所有计算资源都有可能受到影响。Regional MIG 可以把实例分布到同一个 Google Cloud region 内的多个 zone,从而降低单一 zone 故障造成整个服务不可用的风险。Google Cloud 当前文档也明确将多 zone 部署作为 MIG 高可用能力的一部分。

但跨 zone 并不意味着应用自动获得了完整的高可用架构。计算节点可以分散,数据库却可能仍然只有一个实例;应用可以自动恢复,缓存却可能成为单点;Web Server 可以跨三个 zone 部署,但所有实例依赖的外部服务仍然可能只有一个出口。因此 MIG 解决的是 VM 计算层面的容量和生命周期问题,而不是自动解决整个系统架构中的所有单点故障。

Stateful MIG与普通无状态MIG完全不同

现代云架构经常强调 stateless,也就是把 VM 当成可以随时替换的计算节点。但 Google Cloud 并没有要求所有 MIG 都必须无状态。Stateful MIG 可以保留特定 VM 的状态,例如实例名称、Persistent Disk、IP 地址和实例级 metadata,使 VM 在重建、自动修复或者更新后继续保留这些指定状态。

这使 MIG 可以用于某些具有状态的应用,例如数据库集群、传统单体应用、Kafka 或需要检查点保存状态的长期计算任务。不过,stateful MIG 和普通 stateless MIG 的运维逻辑差别很大。状态型应用通常不能简单理解为“机器越多越快”,因为增加一个数据库节点可能涉及数据复制、分片、仲裁、日志一致性和节点身份等问题。

这里还有一个很重要的当前技术限制:Google Cloud 文档明确说明,配置了 stateful configuration 的 MIG 不能使用 autoscaling。因此,不能把“stateful MIG”“自动修复”“跨 zone”与“无限自动横向扩容”混成一套能力。Stateful MIG 更强调保存实例身份和数据状态,而普通 stateless MIG 才是最适合自动横向扩缩容的典型模型。

对于数据库,工程师也不应该因为 Google 提供了 stateful MIG,就直接认为自建数据库已经天然获得了云数据库级别的能力。数据库的复制、故障转移、数据一致性、备份、恢复以及升级策略仍然属于数据库自身的架构问题。Google Cloud 当前文档在介绍 stateful MIG 时,也把它定位为帮助状态型应用实现更高可用和自动化运维的 Compute Engine 能力,而不是替代数据库本身的集群机制。

MIG的自动更新解决的是集群版本管理

当一组 VM 长期运行以后,软件版本升级往往比机器创建更加麻烦。假设一个服务有50台 VM,如果管理员直接登录每台机器执行升级,任何一台机器失败、版本不同或者配置遗漏,都可能造成集群状态不一致。

MIG 的 automatic updater 可以按照设定的策略逐步部署新版本。管理员可以控制更新范围和速度,也可以采用 Canary 方式先让一小部分实例运行新模板,观察应用状态后再继续扩大部署范围。这样做的意义并不是让升级过程“自动完成”这么简单,而是把发布策略本身纳入基础设施控制层。

对于大型生产系统,这种机制可以与应用层的健康检查、监控和负载均衡结合起来。新版本如果出现异常,不应该等到整个集群全部升级以后才发现,而应该尽可能在小规模实例范围内暴露问题。MIG 因此不仅是“服务器批量管理工具”,也是 Compute Engine 中实现基础设施版本治理的重要组成部分。

MIG与Kubernetes并不是简单的谁取代谁

Managed Instance Group 管理的是 Compute Engine VM,而 Kubernetes 管理的是容器工作负载及其调度关系。Google Kubernetes Engine 使用 Kubernetes 控制平面来调度 Pod、管理服务发现、滚动部署以及容器级别的资源分配,而 MIG 直接处理 VM 实例的生命周期。

两者实际上可以同时存在。一个典型的 GKE 环境本身就可能使用 Compute Engine VM 作为节点,而 VM 节点的生命周期管理又可能涉及 MIG。因此,把 MIG 和 Kubernetes 简单理解成“两个竞争产品”并不准确。它们解决的是不同抽象层的问题。

如果应用需要完整的 VM 环境、特定操作系统、直接控制系统服务或者运行不适合容器化的传统应用,MIG 往往更直接。如果应用已经采用微服务和容器架构,需要 Pod 级别的调度、服务发现和容器生命周期管理,那么 GKE 等 Kubernetes 平台通常更加合适。最终决定因素不是“哪个更新”,而是应用需要管理的是 VM,还是容器工作负载。

MIG解决不了数据库、网络和应用架构本身的问题

MIG 最大的价值在于把大量 VM 从“几十台需要人工维护的服务器”转变成“由控制器维护的一组计算资源”。但这种抽象也有边界。它能够重新创建 VM,却不能自动修复数据库的数据一致性;能够增加实例数量,却不能凭空增加数据库连接池容量;能够把 Web Server 分散到多个 zone,却不能消除跨 zone 网络通信产生的延迟;能够自动部署新的 VM,却不能保证应用程序启动脚本本身没有错误。

因此,在设计生产系统时,应该把 MIG 放在计算层来看待。应用数据应该根据业务需求放入适当的数据库、对象存储或者持久化存储系统;缓存应该设计自己的失效和恢复机制;消息队列应该考虑积压和消费者容量;网络层应该考虑区域、zone、负载均衡和连接路径;应用本身则需要具备能够被健康检查、自动部署和自动替换的特性。

MIG 最适合的思维方式不是“我有很多台服务器,所以需要一个工具帮我管理服务器”,而是把 VM 本身看成一种可编排的计算资源。实例模板规定新实例应该是什么样子,MIG 负责维持实例组的目标状态,autohealing 负责在实例或应用失效时进行恢复,autoscaling 根据负载变化调整容量,regional deployment 提供跨 zone 的计算冗余,automatic updater 则负责把新的配置和软件版本逐步推向整个实例组。至于数据、业务状态和系统之间的依赖关系,则必须由更高层的架构负责。

对于企业级 Google Cloud 环境来说,这种分层非常重要。云平台真正改变的并不是“服务器从物理机变成虚拟机”这么简单,而是服务器逐渐从需要人工照顾的固定资产,变成可以按照声明式配置创建、替换、扩展和回收的计算单元。Managed Instance Group 正是 Compute Engine 在这一层提供的控制机制。理解了这一点,也就能理解为什么大型云系统不会把“维护每一台服务器”当成核心运维目标,而是努力让单台服务器变得可替换,让整个服务集群保持可预测、可恢复和可扩展。

喜欢这篇报道?

使用下面的功能,方便以后继续阅读和分享 MNewsTV

设为 Google 新闻首选来源 让 Google 新闻优先显示 MNewsTV 的最新报道 ›
★ 我的收藏 查看已经收藏的文章
关于文章收藏 收藏不需要注册帐号,收藏信息仅保存在当前浏览器中。 删除收藏请进入「我的收藏」进行管理。
分享这篇报道

分享 Facebook | X | WhatsApp | LinkedIn

捐助(Paypal): https://www.paypal.me/observeccp
订阅中国观察电报 Telegram : https://t.me/s/ObserveCCP