理解 Google Compute Engine (GCE)
Compute Engine 是 Google Cloud 的基礎架構即服務 (IaaS) 產品。它允許你在 Google 的全球基礎架構上執行虛擬機器 (VM)。對於 Associate Cloud Engineer (ACE) 來說,Compute Engine 是考試中比重最大的部分之一。你需要知道如何選擇正確的機器類型、配置儲存,以及如何實現自動化部署。
GCE 的核心優勢在於其靈活性:你可以從預定義的機器類型中選擇,也可以根據需求自定義 CPU 和記憶體配額。
白話文解釋
1. 租車服務 (瑞士刀類比)
- VM 執行個體 (Instance): 就是你租來的一輛車。
- 機器類型 (Machine Types):
- 一般用途 (General-purpose, 如 E2, N2):像是一般轎車,省油、適合日常通勤(Web 服務)。
- 運算最佳化 (Compute-optimized, 如 C2):像是跑車,馬力強、適合比賽(高效能運算)。
- 記憶體最佳化 (Memory-optimized, 如 M2):像是大卡車,載貨量大(記憶體資料庫如 SAP HANA)。
- 映像檔 (Images):車子的型號與出廠設置。
- 永久磁碟 (Persistent Disks):車子的行李箱。即便你還了車,行李箱(數據)也可以拆下來裝到另一台車上。
2. 樂高積木組裝 (工地類比)
- vCPU/RAM: 樂高的顆粒,你可以按照說明書(機器類型)組裝,也可以自己亂拼(自定義機器)。
- 執行個體範本 (Instance Template):樂高的組裝說明書。如果你想拼 100 個一模一樣的機器,你就需要這本說明書。
- 受管執行個體群組 (Managed Instance Groups, MIG):一個自動化工廠,它會根據說明書自動拼出更多機器,或者修好壞掉的機器。
3. 虛擬辦公室 (房屋仲介類比)
- 可用區 (Zone):辦公室所在的具體大樓。
- 區域 (Region):辦公室所在的城市。
- 中繼資料 (Metadata):貼在辦公桌上的便利貼,記錄了這台電腦的設定資訊。
選擇機器類型與家族
選擇正確的機器家族是優化性能與成本的第一步。
機器家族
- 一般用途 (General-purpose, E2, N1, N2, N2D): 最佳性價比。E2 是入門首選,它使用動態調度的負載,非常適合低負載的 Web 伺服器。
- 運算最佳化 (Compute-optimized, C2, C2D): 適用於需要極高單核性能的負載,如遊戲伺服器或高性能運算 (HPC)。
- 記憶體最佳化 (Memory-optimized, M1, M2): 適用於大型記憶體資料庫。
- 加速器最佳化 (Accelerator-optimized, A2, A3): 搭載 GPU (NVIDIA A100/H100),適用於 AI/ML 訓練。
對於 ACE 考試,記住 E2 是成本最低且最通用的選擇,而 C2 用於高效能,M2 用於大記憶體。 Source ↗
配置 VM 磁碟與網路介面
永久磁碟 (Persistent Disks, PD)
永久磁碟是網路附加儲存,這意味著它們的生命週期可以獨立於 VM 執行個體。你可以刪除 VM 但保留 PD。 Source ↗
- 標準 PD (Standard PD, HDD): 便宜,適合大容量、低頻率存取。
- 平衡 PD (Balanced PD): 性能與成本的平衡點,適合一般工作負載。
- SSD PD: 高效能、低延遲。
- 極速 PD (Extreme PD): 頂級性能。
網路介面 (Network Interfaces)
每個 VM 至少有一個網路介面 (nic0)。
- 內部 IP (Internal IP): 在 VPC 內部通信。
- 外部 IP (External IP): 與網際網路通信(可以是靜態或臨時 Ephemeral)。
管理自定義映像檔與快照
這是確保數據安全與環境一致性的關鍵。
快照 (Snapshots)
快照是增量備份 (Incremental),這意味著只有自上次快照以來更改的數據塊才會被儲存,這大大節省了儲存成本和時間。快照通常用於備份和災難恢復。 Source ↗
自定義映像檔 (Custom Images)
如果你配置好了一個環境(安裝了軟體、修改了設定),你可以將磁碟製作成映像檔。
- 用途:作為執行個體範本的基礎,用於在大規模環境中部署一致的機器。
執行個體範本與中繼資料
執行個體範本 (Instance Templates)
這是一個不可變 (Immutable) 的資源,定義了 VM 的所有屬性(機器類型、映像檔、標籤、腳本等)。它不屬於特定區域,是全域資源。
中繼資料與啟動腳本 (Metadata and Startup Scripts)
- 中繼資料 (Metadata): 用於向 VM 傳遞資訊(鍵值對)。
- 啟動腳本 (Startup Scripts): 在 VM 啟動時自動執行的腳本。例如自動更新系統或安裝 Nginx。
如果你需要在 100 台機器啟動時自動安裝軟體,你應該在執行個體範本中定義啟動腳本 (Startup Script)。 Source ↗
VM 執行個體的生命週期
理解 VM 的狀態對於故障排除至關重要:
- PROVISIONING (配置中):正在分配資源。
- STAGING (準備中):正在準備啟動(加載映像檔)。
- RUNNING (執行中):正常執行(開始計費)。
- STOPPING (停止中):正在關閉。
- TERMINATED (已終止):已關閉,但不計運算費(仍計儲存費)。
考試陷阱:TERMINATED 狀態的 VM 不會產生 CPU/RAM 費用,但關聯的永久磁碟和靜態 IP 仍會持續計費。 Source ↗
搶佔式 VM 與 Spot VM (Preemptible VMs & Spot VMs)
為了節省成本,Google 提供了閒置資源的折扣。
- Spot VM: 折扣高達 60-91%。缺點是 Google 隨時可能收回資源(提供 30 秒通知)。
- 適用場景:批處理、容錯性強的任務。
ACE 必背的成本優化數字:Spot VM 折扣最高 91%,但 Google 隨時可以收回;Sustained Use Discount 在 VM 執行超過一個月的 25% 後自動套用;Committed Use Discount 則需要承諾 1 年或 3 年的固定 vCPU 與 RAM 用量。 Source ↗
透過 gcloud CLI 管理運算資源
# 建立一個 VM
gcloud compute instances create my-vm \
--zone=us-central1-a \
--machine-type=e2-medium \
--image-family=debian-11 \
--image-project=debian-cloud
# 建立快照
gcloud compute disks snapshot MY_DISK_NAME --snapshot-names=my-backup
# 調整機器類型(必須先停止 VM)
gcloud compute instances set-machine-type my-vm --machine-type=e2-standard-4
要用 gcloud compute instances set-machine-type 調整 VM 規格(例如從 e2-medium 換成記憶體最佳化的 M3),必須先 STOP 該執行個體 — Compute Engine 在 RUNNING 狀態下會拒絕這個呼叫。這也是為什麼 ACE 情境題裡「替正在執行的 VM 加 RAM」標準答案永遠是 Stop -> 修改 machine type -> Start,沒有 live-resize 這個選項。
Source ↗
Compute Engine 的最佳實務
- 使用受管執行個體群組 (MIG):實現自動縮放與自動修復。
- 定期清理未使用的快照:雖然是增量的,但積少成多。
- 優先使用 Shielded VM:增強安全性。
- 利用標籤 (Labels):方便成本追蹤。
ACE 的常見運算情境
- 情境:你需要確保即便數據中心失火,你的數據也不會丟失。
- 解決方案:定期將快照儲存在不同的區域 (Region),或者使用多區域 (Multi-regional) 儲存。
- 情境:你需要修改一台正在執行的 VM 的機器類型。
- 解決方案:必須先 Stop (停止) VM,修改屬性,然後再 Start (啟動)。
常見問題 (FAQ)
問:永久磁碟 (Persistent Disk) 可以同時掛載給多台 VM 嗎? 答:可以,但前提是必須以 唯讀 (Read-Only) 模式掛載。
問:什麼是區域永久磁碟 (Regional Persistent Disk)? 答:這類磁碟會同步複製到同一個區域內的兩個可用區,提供更高的可用性。
問:什麼是 Local SSD? 答:這是物理連接到主機的磁碟,速度極快但數據是臨時的。如果 VM 停止或刪除,數據會消失。
問:我可以更改現有 VM 的可用區 (Zone) 嗎? 答:不能直接更改。你必須製作快照,然後在新的可用區利用快照建立新磁碟並建立 VM。
問:什麼是單租戶節點 (Sole-tenant nodes)? 答:這讓你租用整台物理伺服器,不與其他客戶共享硬體,通常用於合規性或特定的軟體授權需求。
ACE 總結清單
- 區分 E2, C2, M2 的適用場景。
- 理解快照 (增量備份) 與映像檔 (部署模版) 的差異。
- 知道
gcloud compute instances create的基本參數。 - 明白 VM 停止後哪些資源還在計費。
- 熟悉啟動腳本 (Startup Script) 的用途。