第 2 章

Compute Engine

⏱️ 180 分钟📚 Deploying and implementing a cloud solution难度: ⭐⭐
📝 25 题练习
备考助手

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 EngineOS、运行时、应用全管需要完全控制的场景"租整套公寓,自己装修"
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 Instance Lifecycle

图解说明:

  1. 这张图在讲什么:一个 VM 实例从创建到终止的完整状态流转——PROVISIONING → STAGING → RUNNING,然后可以 STOP/SUSPEND/DELETE,部分状态可以逆向恢复。
  2. 你应该先看哪里:先找 RUNNING 节点,它是核心状态;然后看从 RUNNING 出发有哪些分支(STOPPING、SUSPENDING、TERMINATED),再看哪些状态可以回到 RUNNING。
  3. 考试常见问法:给你一个"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 / G2GPU 加速型机器学习训练、视频渲染"显卡怪兽"
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-Demand0%短期、不确定"出租车,贵但灵活"
SUD~30%自动持续运行的 VM"常客自动打折"
CUD~57%1/3 年稳定长期负载"年卡,提前锁价"
Spot VM~91%✅ 随时回收批处理、容错任务"候补票,便宜但不保证"

3.2 Preemptible VM vs Spot VM

GCP 原来有 Preemptible VM(抢占式 VM),现在推荐用 Spot VM 替代。考试可能两个都考:

特性Preemptible VMSpot 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-standardHDD日志、冷数据备份"便宜大碗,不求速度"
pd-balancedSSD通用工作负载(推荐默认)"万金油,新项目首选"
pd-ssdSSD数据库、高 IOPS 应用"快磁盘,数据库用"
pd-extremeSSD极高极高SAP HANA、Oracle 级需求"最贵最快,要命的场景"
Local SSDNVMe SSD极高极高临时缓存、scratch space"超快但不持久"

IOPS (Input/Output Operations Per Second) — 每秒能完成多少次读写操作,理解为"磁盘的反应速度"。 吞吐量 (Throughput) — 每秒能传输多少数据(MB/s),理解为"磁盘的搬运速度"。 简单记:IOPS = 多快能响应,吞吐量 = 多快能搬运

4.2 磁盘的关键特性

特性Persistent DiskLocal 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 Overview

图解说明:

  1. 这张图在讲什么:MIG 如何基于一个 Instance Template 创建多个相同配置的 VM 实例,并展示了 Auto Scaling、Auto Healing、Rolling Update 等核心功能的协作关系。
  2. 你应该先看哪里:先看 Instance Template(蓝图),再看从它派生出的一组 VM 实例,最后注意围绕这组实例的 Auto Scaling 和 Health Check 组件。
  3. 考试常见问法:题目描述"需要自动替换失败的 VM 实例并保持固定副本数"——答案是 MIG + Auto Healing;问"如何零停机更新所有 VM 配置"——答案是新建 Instance Template + Rolling Update。

MIG 是 GCP 实现高可用弹性伸缩的核心机制:

MIG 功能作用一句话记忆
Auto Scaling根据 CPU/自定义指标自动增减 VM"忙了开窗口,闲了关窗口"
Auto HealingVM 健康检查失败自动替换"坏了自动换新"
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-scriptVM 启动时执行的脚本"开机自动跑"
shutdown-scriptVM 关机前执行的脚本"关机前收拾"
自定义 key-value传递应用配置"贴便签纸"

📖 7. Live Migration 与可用性策略

7.1 Live Migration(实时迁移)

Live Migration — 在不关机的情况下,把正在运行的 VM 从一台物理宿主机迁移到另一台。 比喻:搬家公司在你上班的时候把家具搬到新房,你下班回家发现地址变了但东西都还在。

GCP 在做宿主机维护(硬件升级、安全补丁)时,会用 Live Migration 把你的 VM 迁走,你的服务完全不中断

这是 GCP 相比其他云的一个亮点——AWS 在类似场景下通常需要重启 VM。

7.2 可用性策略

策略配置行为一句话记忆
On Host MaintenanceMIGRATE(默认)自动 Live Migration"无感搬家"
On Host MaintenanceTERMINATE停止 VM"维护就关机"
Automatic Restarttrue(默认)非用户触发的停机后自动重启"倒了自动扶起来"

⚠️ 考试视角: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 SSDGPU 加速 + 临时高速缓存
"批处理任务,可以中断"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 恢复

⚠️ 常见错误

  1. 用 Local SSD 存重要数据 — Local SSD 在 VM 停止/删除后数据丢失。持久化数据必须用 Persistent Disk。
  2. Spot VM 跑有状态数据库 — Spot VM 随时可能被回收,只适合无状态或容错工作负载。
  3. 预算敏感场景选自定义机器类型 — 自定义类型比同等预定义类型贵,优先匹配预定义类型。
  4. 以为 SUD 需要手动开通 — SUD 是自动的,不需要任何操作。考题问"不需要额外操作"→ SUD。
  5. MIG 混用不同配置的 VM — MIG 要求所有实例基于同一模板。要异构用非托管实例组。
  6. 忽略 Regional MIG — 生产环境应该用 Regional MIG(跨 Zone),不要只用 Zonal MIG。
  7. 开放 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

📚 参考资源

📝 章节练习 (25 题)
开始练习