Compute Engine
📖 为什么 Compute Engine 是 ACE 考试的核心?
ACE 考试四个域中,Deploying and implementing a cloud solution 占了大约 25%——是权重最高的域。而 Compute Engine 是这个域的第一个话题,也是 GCP 最基础的计算服务。几乎每套模拟题都会出 3-5 道和 VM 直接相关的题目。
Compute Engine — GCP 的虚拟机 (VM) 服务,等价于 AWS 的 EC2、Azure 的 Virtual Machines。 你可以理解为"在 Google 的数据中心里租一台电脑":CPU、内存、磁盘、操作系统都由你选,用多少付多少。 考试怎么考:给你一个场景(数据库/Web 服务器/批处理),让你选机器类型、定价模式和磁盘类型。
📖 1. VM 实例基础
1.1 什么时候该用 Compute Engine?
不是所有场景都需要 VM。GCP 提供了从"全自己管"到"啥都不管"的一系列计算选项:
| 服务 | 你管什么 | 适合什么 | 一句话记忆 |
|---|---|---|---|
| Compute Engine | OS、运行时、应用全管 | 需要完全控制的场景 | "租整套公寓,自己装修" |
| GKE | 管容器,不管底层 VM | 微服务架构 | "合租公寓,共享设施" |
| App Engine | 只管代码 | Web 应用快速部署 | "酒店式公寓,拎包入住" |
| Cloud Functions | 只管函数逻辑 | 事件驱动的小任务 | "叫外卖,用完即走" |
| Cloud Run | 只管容器镜像 | 无状态 HTTP 服务 | "自带餐盒的外卖" |
考试给你场景时,先判断"需不需要自己管操作系统"。如果需要(比如跑特殊版本的数据库、需要 GPU 驱动),选 Compute Engine;否则往上找更托管的方案。
1.2 创建 VM 实例
gcloud compute instances create my-vm \
--zone=asia-east1-a \
--machine-type=e2-medium \
--image-family=debian-11 \
--image-project=debian-cloud \
--boot-disk-size=20GB \
--boot-disk-type=pd-balanced
这条命令做了什么:在台湾可用区 asia-east1-a 创建一台 2 vCPU / 4 GB 内存的 VM,使用 Debian 11 系统镜像,配一块 20 GB 的 SSD 启动盘。
⚠️ 考试视角:--zone 是必须指定的参数(除非你配了默认 Zone)。考题经常给一条缺少 --zone 的命令问"这条命令会怎样"——答案是报错或使用默认配置。
1.3 VM 的生命周期

图解说明:
- 这张图在讲什么:一个 VM 实例从创建到终止的完整状态流转——PROVISIONING → STAGING → RUNNING,然后可以 STOP/SUSPEND/DELETE,部分状态可以逆向恢复。
- 你应该先看哪里:先找 RUNNING 节点,它是核心状态;然后看从 RUNNING 出发有哪些分支(STOPPING、SUSPENDING、TERMINATED),再看哪些状态可以回到 RUNNING。
- 考试常见问法:给你一个"VM 处于 TERMINATED 状态,如何恢复"——答案是可以重新 START;问"哪些状态仍然计费 CPU"——只有 RUNNING。
PROVISIONING → STAGING → RUNNING → STOPPING → TERMINATED
↑ |
└───────────┘
(可以重新启动)
| 状态 | 计费? | 说明 | 一句话记忆 |
|---|---|---|---|
| RUNNING | ✅ | 正常运行 | "开着灯,收电费" |
| STOPPED / TERMINATED | ❌ CPU/内存不收费 | VM 关机但磁盘还在 | "关灯不拆房,磁盘还收费" |
| SUSPENDED | ❌ CPU/内存不收费 | VM 休眠,内存写入磁盘 | "电脑合上盖子" |
⚠️ 考试视角:STOPPED 状态下 CPU 和内存不收费,但持久磁盘和静态 IP 仍然收费。题目问"如何最大程度降低不使用 VM 的成本"——如果只是暂时不用,停止 VM;如果确定不用了,删除 VM 和磁盘。
📖 2. 机器类型——怎么选配置?
2.1 机器类型命名规则
GCP 的机器类型名字有固定格式,理解了命名规则就不用死记:
{系列}-{类型}-{vCPU数}
e2-standard-4 → E2 系列 / 标准型 / 4 个 vCPU
n2-highmem-8 → N2 系列 / 高内存型 / 8 个 vCPU
c2-highcpu-16 → C2 系列 / 高 CPU 型 / 16 个 vCPU
类型中的关键词:
- standard:vCPU : 内存 ≈ 1:4(4 vCPU = 16 GB)
- highmem:vCPU : 内存 ≈ 1:8(4 vCPU = 32 GB)
- highcpu:vCPU : 内存 ≈ 1:1(4 vCPU = 4 GB)
2.2 机器系列选型
| 系列 | 定位 | 典型场景 | 一句话记忆 |
|---|---|---|---|
| E2 | 成本优化通用型 | Web 服务、小型数据库、开发测试 | "经济舱,大多数场景够用" |
| N2 / N2D | 平衡型(AMD 为 N2D) | 中型数据库、缓存、CI/CD | "商务舱,性价比之选" |
| C2 / C2D / C3 | 计算密集型 | 游戏服务器、科学计算、批处理 | "CPU 怪兽" |
| M2 / M3 | 超大内存型 | SAP HANA、大型内存数据库 | "内存怪兽,最高 12 TB" |
| A2 / G2 | GPU 加速型 | 机器学习训练、视频渲染 | "显卡怪兽" |
| T2D | 横向扩展型(Arm) | 容器化微服务、Web Serving | "Arm 架构,省电省钱" |
2.3 自定义机器类型
如果预定义类型不合适(比如你需要 6 vCPU + 24 GB 内存,但没有这个组合),可以自定义:
gcloud compute instances create custom-vm \
--custom-cpu=6 \
--custom-memory=24GB \
--zone=us-central1-a
还可以添加扩展内存(超过标准比例的额外内存):
gcloud compute instances create big-mem-vm \
--custom-cpu=4 \
--custom-memory=50GB \
--custom-extensions \
--zone=us-central1-a
⚠️ 考试视角:自定义机器类型比同等预定义类型略贵。考题问"最经济的选择"时,如果预定义类型能满足需求,就选预定义;只有不匹配时才选自定义。
2.4 机器系列选型决策树
你的工作负载特点是什么?
│
├─ 通用 Web / API / 小数据库
│ ├─ 预算敏感 → E2
│ └─ 需要更好性能 → N2
│
├─ CPU 密集(科学计算、游戏、编译)
│ └─ C2 / C3
│
├─ 内存密集(SAP、大数据分析)
│ └─ M2 / M3
│
├─ GPU / ML 训练
│ └─ A2 / G2
│
└─ 不确定 → 从 E2 开始,根据监控数据调整
📖 3. 定价——怎么省钱?
3.1 四种定价模式
这是 ACE 考试的高频考点。先理解四种模式的本质差异:
On-Demand(按需) — 用多久付多久,按秒计费(最少 1 分钟)。 比喻:出租车。随叫随到,按路程计费,不用预约,但最贵。
Sustained Use Discount, SUD(持续使用折扣) — VM 在一个月内运行时间越长,单价自动越低。 比喻:常客折扣。你在一家咖啡店喝得越多,店家自动给你打折,不需要你办卡。 关键:SUD 是自动的,你不需要做任何操作。
Committed Use Discount, CUD(承诺使用折扣) — 承诺 1 年或 3 年的用量,换取最高 57% 的折扣。 比喻:健身房年卡。提前承诺,锁定低价。中途不想去了也不退钱。
Spot VM(竞价实例) — 使用 Google 闲置计算资源,最高 91% 折扣,但随时可能被回收。 比喻:航班候补票。超级便宜,但如果有正价乘客来了,你得让座。
| 定价模式 | 最高折扣 | 承诺期 | 会被中断? | 适合场景 | 一句话记忆 |
|---|---|---|---|---|---|
| On-Demand | 0% | 无 | ❌ | 短期、不确定 | "出租车,贵但灵活" |
| SUD | ~30% | 自动 | ❌ | 持续运行的 VM | "常客自动打折" |
| CUD | ~57% | 1/3 年 | ❌ | 稳定长期负载 | "年卡,提前锁价" |
| Spot VM | ~91% | 无 | ✅ 随时回收 | 批处理、容错任务 | "候补票,便宜但不保证" |
3.2 Preemptible VM vs Spot VM
GCP 原来有 Preemptible VM(抢占式 VM),现在推荐用 Spot VM 替代。考试可能两个都考:
| 特性 | Preemptible VM | Spot VM | 一句话区别 |
|---|---|---|---|
| 最长运行时间 | 24 小时硬限制 | 无时间限制 | Spot 没有 24h 限制 |
| 定价 | 固定折扣 | 动态定价 | Spot 价格会变 |
| Google 推荐 | ❌ 已弃用 | ✅ 新标准 | 新项目用 Spot |
| 回收机制 | 30 秒警告后关机 | 30 秒警告后关机 | 一样的回收方式 |
# 创建 Spot VM
gcloud compute instances create spot-vm \
--provisioning-model=SPOT \
--instance-termination-action=STOP \
--zone=us-central1-a \
--machine-type=e2-medium
⚠️ 考试视角:Spot/Preemptible VM 的典型使用场景是:大数据批处理(Dataflow/Dataproc)、CI/CD 构建、渲染任务、容错型微服务。如果题目说"任务不能中断"或"有状态数据库",绝对不选 Spot。
3.3 定价选型口诀
稳定长期 → CUD(年卡)
持续运行但不想承诺 → SUD 自动生效
能容忍中断 → Spot VM
啥都不确定 → On-Demand
📖 4. 磁盘与存储
4.1 磁盘类型怎么选?
Persistent Disk(持久磁盘) — 网络附加存储,独立于 VM 存在。VM 删了磁盘还在。 比喻:移动硬盘。可以从一台电脑拔下来插到另一台电脑上。
Local SSD(本地 SSD) — 物理连接在宿主机上的 SSD,性能极高但 VM 停止后数据丢失。 比喻:酒店提供的洗漱用品。住的时候随便用,退房就没了。
| 磁盘类型 | 介质 | IOPS | 吞吐量 | 用途 | 一句话记忆 |
|---|---|---|---|---|---|
| pd-standard | HDD | 低 | 低 | 日志、冷数据备份 | "便宜大碗,不求速度" |
| pd-balanced | SSD | 中 | 中 | 通用工作负载(推荐默认) | "万金油,新项目首选" |
| pd-ssd | SSD | 高 | 高 | 数据库、高 IOPS 应用 | "快磁盘,数据库用" |
| pd-extreme | SSD | 极高 | 极高 | SAP HANA、Oracle 级需求 | "最贵最快,要命的场景" |
| Local SSD | NVMe SSD | 极高 | 极高 | 临时缓存、scratch space | "超快但不持久" |
IOPS (Input/Output Operations Per Second) — 每秒能完成多少次读写操作,理解为"磁盘的反应速度"。 吞吐量 (Throughput) — 每秒能传输多少数据(MB/s),理解为"磁盘的搬运速度"。 简单记:IOPS = 多快能响应,吞吐量 = 多快能搬运。
4.2 磁盘的关键特性
| 特性 | Persistent Disk | Local SSD |
|---|---|---|
| 数据持久性 | ✅ VM 删除后数据保留 | ❌ VM 停止/删除数据丢失 |
| 可以快照备份 | ✅ | ❌ |
| 可以调整大小 | ✅ 可在线扩容 | ❌ 固定大小 |
| 可以挂载到多个 VM | ✅ 只读模式可以 | ❌ |
| 可以跨 Zone 迁移 | ✅ 通过快照 | ❌ |
⚠️ 考试视角:题目说"需要高性能临时存储用于数据处理中间结果"→ Local SSD。说"数据库需要持久化高性能存储"→ pd-ssd 或 pd-extreme。考题经常用"VM 重启后数据丢失"来暗示 Local SSD 的风险。
4.3 快照 (Snapshot)
Snapshot(快照) — Persistent Disk 在某个时间点的备份。 比喻:给硬盘拍张"照片",以后可以用这张"照片"还原到拍摄时的状态。
快照是增量的:第一次是全量备份,之后只备份变化的部分,节省存储空间和时间。
# 创建快照
gcloud compute disks snapshot my-disk \
--zone=asia-east1-a \
--snapshot-names=my-snapshot
# 从快照创建新磁盘
gcloud compute disks create new-disk \
--source-snapshot=my-snapshot \
--zone=us-central1-a
快照可以跨 Region 使用,这是实现灾备的重要手段:在 asia-east1 的磁盘做快照,在 us-central1 从快照恢复。
📖 5. 实例模板与实例组
5.1 实例模板 (Instance Template)
Instance Template(实例模板) — 创建 VM 的"蓝图",定义了机器类型、磁盘、网络等所有配置。 比喻:盖房子的图纸。有了图纸,每次盖出来的房子都一模一样。
gcloud compute instance-templates create web-template \
--machine-type=e2-medium \
--image-family=debian-11 \
--image-project=debian-cloud \
--boot-disk-size=20GB \
--boot-disk-type=pd-balanced \
--tags=http-server \
--metadata=startup-script='#!/bin/bash
apt-get update && apt-get install -y nginx'
实例模板是不可变的(immutable)——创建后不能修改。想改配置?只能创建一个新模板,然后让实例组用新模板做滚动更新。
5.2 托管实例组 (Managed Instance Group, MIG)
MIG (Managed Instance Group) — 一组基于同一个模板的 VM,由 GCP 自动管理。 比喻:连锁店。总部(模板)定好装修和菜单标准,每家分店(VM)照着开,坏了一家自动再开一家。
图解说明:
- 这张图在讲什么:MIG 如何基于一个 Instance Template 创建多个相同配置的 VM 实例,并展示了 Auto Scaling、Auto Healing、Rolling Update 等核心功能的协作关系。
- 你应该先看哪里:先看 Instance Template(蓝图),再看从它派生出的一组 VM 实例,最后注意围绕这组实例的 Auto Scaling 和 Health Check 组件。
- 考试常见问法:题目描述"需要自动替换失败的 VM 实例并保持固定副本数"——答案是 MIG + Auto Healing;问"如何零停机更新所有 VM 配置"——答案是新建 Instance Template + Rolling Update。
MIG 是 GCP 实现高可用和弹性伸缩的核心机制:
| MIG 功能 | 作用 | 一句话记忆 |
|---|---|---|
| Auto Scaling | 根据 CPU/自定义指标自动增减 VM | "忙了开窗口,闲了关窗口" |
| Auto Healing | VM 健康检查失败自动替换 | "坏了自动换新" |
| Rolling Update | 逐步更新到新模板,无需停机 | "一个一个换,不关门" |
| Load Balancing | 与负载均衡器集成分发流量 | "来客人自动分桌" |
| Multi-zone | 跨多个 Zone 部署(Regional MIG) | "鸡蛋放多个篮子" |
# 创建区域级 MIG(跨多个 Zone,推荐用于生产)
gcloud compute instance-groups managed create web-mig \
--template=web-template \
--size=3 \
--region=asia-east1
# 配置自动扩缩
gcloud compute instance-groups managed set-autoscaling web-mig \
--region=asia-east1 \
--max-num-replicas=10 \
--min-num-replicas=2 \
--target-cpu-utilization=0.6 \
--cool-down-period=90
5.3 Zonal MIG vs Regional MIG
| 类型 | 部署范围 | 可用性 | 用途 | 一句话记忆 |
|---|---|---|---|---|
| Zonal MIG | 单个 Zone | 低 | 开发测试 | "一栋楼" |
| Regional MIG | 同 Region 多个 Zone | 高 | 生产环境 | "多栋楼,一栋倒了还有" |
⚠️ 考试视角:题目说"高可用"或"Zone 故障时仍能提供服务"→ 答案是 Regional MIG。如果只是"快速创建一组 VM"→ Zonal MIG 就够了。
5.4 非托管实例组 (Unmanaged Instance Group)
手动管理的 VM 集合,组内的 VM 可以配置不同(异构)。
| 对比 | MIG(托管) | Unmanaged(非托管) |
|---|---|---|
| 模板 | 必须用模板 | 不需要 |
| Auto Scaling | ✅ | ❌ |
| Auto Healing | ✅ | ❌ |
| Rolling Update | ✅ | ❌ |
| 异构实例 | ❌ 必须相同 | ✅ 可以不同 |
⚠️ 考试视角:"托管实例组不支持以下哪项功能?"→ 答案是"异构实例"。非托管组几乎只在需要"不同配置的 VM 放在同一个负载均衡器后面"时才用。
📖 6. 网络与访问
6.1 SSH 连接方式
# 方式 1:通过公网 IP(需要防火墙放行 22 端口)
gcloud compute ssh my-vm --zone=asia-east1-a
# 方式 2:通过 IAP 隧道(不需要公网 IP,更安全)
gcloud compute ssh my-vm --zone=asia-east1-a --tunnel-through-iap
IAP (Identity-Aware Proxy) — 让你不暴露 VM 的公网 IP 就能 SSH 连接。 比喻:公司内网 VPN。你不需要直接连到服务器的公网地址,而是通过一个安全中转。
⚠️ 考试视角:题目说"VM 没有外部 IP,需要 SSH 管理"→ 答案是 IAP Tunnel。这是 Google 推荐的最佳实践,比开放 22 端口到公网安全得多。
6.2 Startup Script(启动脚本)
VM 启动时自动运行的脚本,用于安装软件、配置环境:
gcloud compute instances create web-vm \
--metadata=startup-script='#!/bin/bash
apt-get update
apt-get install -y nginx
systemctl start nginx'
也可以从 Cloud Storage 加载脚本:
gcloud compute instances create web-vm \
--metadata=startup-script-url=gs://my-bucket/startup.sh
6.3 Metadata(元数据)
每个 VM 实例都有元数据,可以用来传递配置信息。考试常考的两种:
| 元数据 | 用途 | 一句话记忆 |
|---|---|---|
| startup-script | VM 启动时执行的脚本 | "开机自动跑" |
| shutdown-script | VM 关机前执行的脚本 | "关机前收拾" |
| 自定义 key-value | 传递应用配置 | "贴便签纸" |
📖 7. Live Migration 与可用性策略
7.1 Live Migration(实时迁移)
Live Migration — 在不关机的情况下,把正在运行的 VM 从一台物理宿主机迁移到另一台。 比喻:搬家公司在你上班的时候把家具搬到新房,你下班回家发现地址变了但东西都还在。
GCP 在做宿主机维护(硬件升级、安全补丁)时,会用 Live Migration 把你的 VM 迁走,你的服务完全不中断。
这是 GCP 相比其他云的一个亮点——AWS 在类似场景下通常需要重启 VM。
7.2 可用性策略
| 策略 | 配置 | 行为 | 一句话记忆 |
|---|---|---|---|
| On Host Maintenance | MIGRATE(默认) | 自动 Live Migration | "无感搬家" |
| On Host Maintenance | TERMINATE | 停止 VM | "维护就关机" |
| Automatic Restart | true(默认) | 非用户触发的停机后自动重启 | "倒了自动扶起来" |
⚠️ 考试视角:Spot/Preemptible VM 不支持 Live Migration,只能设置为 TERMINATE。题目问"哪种 VM 不支持实时迁移"→ 答案是 Spot/Preemptible。
📖 8. Sole-Tenant Nodes(独占租户节点)
Sole-Tenant Node — 一台物理服务器只给你一个租户用,不和别人共享硬件。 比喻:包场。整个电影院只放你一个人的电影。
什么场景需要独占租户:
- 合规要求:金融/医疗行业要求"不能和别人共享物理硬件"
- 许可证:带 BYOL(Bring Your Own License)的 Windows Server 或 Oracle 数据库
- 性能隔离:不想被"邻居"的工作负载影响
⚠️ 考试视角:题目提到"BYOL"、"per-core licensing"、"physical isolation requirement"→ 答案往往指向 Sole-Tenant Nodes。
🎯 场景速查表
| 场景 | 选什么 | 为什么 |
|---|---|---|
| "通用 Web 服务器,预算有限" | E2 + pd-balanced | 经济实惠的万金油组合 |
| "MySQL 数据库,需要高 IOPS" | N2 + pd-ssd | 平衡性能 + 高速磁盘 |
| "SAP HANA 内存数据库" | M2 + pd-extreme + Sole-Tenant | 超大内存 + 极致磁盘 + 物理隔离 |
| "ML 模型训练" | A2 (GPU) + Local SSD | GPU 加速 + 临时高速缓存 |
| "批处理任务,可以中断" | E2 Spot VM | 最高 91% 折扣 |
| "稳定运行的生产 VM,3 年不变" | N2 + CUD 3 年 | 最高 57% 折扣 |
| "高可用 Web 服务" | Regional MIG + Load Balancer | 跨 Zone 容灾 + 自动扩缩 |
| "VM 无外部 IP,需要管理" | IAP Tunnel SSH | 安全不暴露公网 |
| "需要临时高性能缓存" | Local SSD | 极高 IOPS 但不持久化 |
| "宿主机维护时不中断服务" | Live Migration(默认) | GCP 自动无感迁移 |
| "Windows BYOL 许可证" | Sole-Tenant Node | 独占硬件满足许可要求 |
| "灾备:数据需要跨区域恢复" | Persistent Disk Snapshot | 快照可跨 Region 恢复 |
⚠️ 常见错误
- 用 Local SSD 存重要数据 — Local SSD 在 VM 停止/删除后数据丢失。持久化数据必须用 Persistent Disk。
- Spot VM 跑有状态数据库 — Spot VM 随时可能被回收,只适合无状态或容错工作负载。
- 预算敏感场景选自定义机器类型 — 自定义类型比同等预定义类型贵,优先匹配预定义类型。
- 以为 SUD 需要手动开通 — SUD 是自动的,不需要任何操作。考题问"不需要额外操作"→ SUD。
- MIG 混用不同配置的 VM — MIG 要求所有实例基于同一模板。要异构用非托管实例组。
- 忽略 Regional MIG — 生产环境应该用 Regional MIG(跨 Zone),不要只用 Zonal MIG。
- 开放 22 端口到 0.0.0.0/0 — 应该用 IAP Tunnel,不暴露公网端口。
📖 命令速查
# VM 实例
gcloud compute instances create VM_NAME --zone=ZONE --machine-type=TYPE
gcloud compute instances list
gcloud compute instances describe VM_NAME --zone=ZONE
gcloud compute instances stop VM_NAME --zone=ZONE
gcloud compute instances start VM_NAME --zone=ZONE
gcloud compute instances delete VM_NAME --zone=ZONE
# SSH
gcloud compute ssh VM_NAME --zone=ZONE
gcloud compute ssh VM_NAME --zone=ZONE --tunnel-through-iap
# 实例模板
gcloud compute instance-templates create TEMPLATE_NAME --machine-type=TYPE
gcloud compute instance-templates list
gcloud compute instance-templates describe TEMPLATE_NAME
# MIG
gcloud compute instance-groups managed create MIG_NAME --template=TEMPLATE --size=N --region=REGION
gcloud compute instance-groups managed set-autoscaling MIG_NAME --region=REGION \
--max-num-replicas=MAX --min-num-replicas=MIN --target-cpu-utilization=0.6
# 磁盘与快照
gcloud compute disks create DISK_NAME --zone=ZONE --type=pd-ssd --size=100GB
gcloud compute disks snapshot DISK_NAME --zone=ZONE --snapshot-names=SNAP_NAME
gcloud compute snapshots list