第一台雲端主機:Compute Engine 從建立到監控完全指南
上一篇 GCP-102 環境設定 我們把 GCP 帳號和第一個專案都建好了。這篇就來動手,建立你的第一台雲端主機。
Compute Engine 是 GCP 最基礎的運算服務,你可以把它想成在 Google 的全球資料中心裡租了一台電腦。作業系統你說了算,要裝什麼軟體都行,拿來架個網站也沒問題。
完成本教學後,你將:
- ✅ 了解 Compute Engine 的核心概念(機型、映像檔、磁碟)
- ✅ 建立一台 Linux 虛擬機並透過 SSH 連線
- ✅ 在 VM 上架設 Apache 網頁伺服器
- ✅ 設定防火牆規則允許外部存取
- ✅ 建立快照(Snapshot)備份策略
- ✅ 設定 Cloud Monitoring 監控告警
- ✅ 學會成本優化技巧,避免帳單爆表
先決條件:
- 已完成 GCP-102 環境設定
- 有可用的 GCP 專案和免費額度
預估時間:30 分鐘
一、Compute Engine 是什麼?三分鐘搞懂
虛擬機器 = 雲端版的電腦
想像你要在辦公室放一台伺服器:
- 傳統做法:買硬體 → 搬到機房 → 接電源和網路 → 安裝 OS → 設定軟體 → 等待 2-4 週
- 雲端做法:開啟 Console → 選規格 → 按「建立」→ 60 秒後開始使用
差別就這麼大。Compute Engine 就是 GCP 的虛擬機器(VM)服務,屬於 IaaS(基礎設施即服務) 模型。你可以:
- 選擇 CPU、記憶體、磁碟的組合
- 安裝任何作業系統(Linux 或 Windows)
- 完全控制機器上的一切
關鍵概念速覽
動手之前,先把幾個常出現的名詞搞懂:
| 概念 | 白話解釋 | 類比 |
|---|---|---|
| Instance(執行個體) | 一台正在運行的虛擬機 | 一台開著的電腦 |
| Machine Type(機型) | CPU + 記憶體的組合 | 電腦的規格配置 |
| Image(映像檔) | 作業系統的安裝光碟 | Windows 安裝隨身碟 |
| Boot Disk(開機磁碟) | VM 的主要儲存裝置 | 電腦的 SSD/HDD |
| Zone(區域) | VM 所在的實體位置 | 機房的地理位置 |
| Firewall(防火牆) | 控制進出流量的規則 | 大樓的門禁系統 |
| Snapshot(快照) | 磁碟在某個時間點的副本 | 遊戲的存檔點 |
機型家族:選擇適合你的配置
GCP 把機型分成好幾個家族,對應不同的工作負載:
| 機型家族 | 代號 | 適用場景 | 成本 |
|---|---|---|---|
| 通用型 | E2, N2, N2D | Web 伺服器、開發環境、小型資料庫 | $ |
| 運算最佳化 | C2, C2D, C3 | 高效能運算、遊戲伺服器、科學模擬 | $$ |
| 記憶體最佳化 | M2, M3 | 大型資料庫(SAP HANA)、記憶體快取 | $$$ |
| 加速器最佳化 | A2, A3, G2 | 機器學習訓練、影像處理 | $$$$ |
💡 新手建議:從 E2 系列 開始,這是最便宜的選項,適合學習和開發。
二、動手建立第一台 VM
方法一:透過 Cloud Console(圖形介面)
Step 1:進入 Compute Engine 頁面
- 開啟 GCP Console
- 左側選單點擊 Compute Engine → VM instances
- 如果是第一次使用,需要等待 API 啟用(約 1-2 分鐘)
- 點擊 建立執行個體(CREATE INSTANCE)
Step 2:設定基本資訊
名稱:my-first-vm
區域:asia-east1(台灣彰化)
可用區:asia-east1-b
💡 為什麼選 asia-east1? 這是離台灣最近的 GCP 區域,網路延遲最低。如果你的用戶在其他地區,可以選擇對應的區域。
Step 3:選擇機型
系列:E2(通用型、最經濟)
機型:e2-micro(2 個共享 vCPU、1 GB 記憶體)
💡 省錢秘訣:
e2-micro在 us-west1、us-central1、us-east1 三個區域每月有 1 台免費額度(Always Free 方案,相當於 744 小時)。注意本教學使用的 asia-east1 不在免費範圍內,僅供學習示範;若想真正享受免費額度,請選擇上述三個美國區域。
Step 4:設定開機磁碟
- 點擊「變更」
- 作業系統:Debian GNU/Linux 12 (Bookworm)
- 開機磁碟類型:標準永久磁碟
- 大小:10 GB(足夠學習使用)
Step 5:設定防火牆
勾選:
- ✅ 允許 HTTP 流量
- ✅ 允許 HTTPS 流量
Step 6:點擊「建立」
等待約 30-60 秒,你的第一台 VM 就準備好了!
方法二:透過 gcloud CLI(命令列)
習慣敲指令的話,打開 Cloud Shell,執行:
gcloud compute instances create my-first-vm \
--zone=asia-east1-b \
--machine-type=e2-micro \
--image-family=debian-12 \
--image-project=debian-cloud \
--boot-disk-size=10GB \
--boot-disk-type=pd-standard \
--tags=http-server,https-server
🎯 ACE 考試提示:考試中經常會出現 gcloud 指令的語法,建議兩種方式都要熟悉。
三、連線到你的 VM
SSH 連線
VM 一建好,連線的方式有好幾種:
方法 1:Console 內建 SSH(最簡單)
在 VM instances 頁面,點擊 VM 旁邊的 SSH 按鈕,瀏覽器會自動開啟一個終端視窗。
方法 2:gcloud CLI
gcloud compute ssh my-first-vm --zone=asia-east1-b
方法 3:第三方 SSH 客戶端
# 將實例 SSH 設定寫入本機 ~/.ssh/config(並產生金鑰)
gcloud compute config-ssh
# 然後用任何 SSH 客戶端連線
ssh my-first-vm.asia-east1-b.<your-project-id>
確認 VM 資訊
連線後,執行以下指令確認 VM 狀態:
# 查看作業系統版本
cat /etc/os-release
# 查看 CPU 資訊
nproc
# 查看記憶體
free -h
# 查看磁碟空間
df -h
你應該會看到 Debian 12、2 vCPU、約 1 GB 記憶體,以及 10 GB 磁碟。
四、架設 Apache 網頁伺服器
接下來玩點有趣的,在這台 VM 上架一個網站。
安裝 Apache
# 更新套件列表
sudo apt update
# 安裝 Apache
sudo apt install apache2 -y
# 確認 Apache 正在運行
sudo systemctl status apache2
你應該會看到 Active: active (running) 的訊息。
建立自訂首頁
# 建立一個簡單的首頁
sudo tee /var/www/html/index.html > /dev/null << 'EOF'
<!DOCTYPE html>
<html lang="zh-TW">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>我的第一台 GCP VM</title>
<style>
body {
font-family: 'Noto Sans TC', sans-serif;
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
margin: 0;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
}
.container {
text-align: center;
padding: 2rem;
}
h1 { font-size: 2.5rem; margin-bottom: 1rem; }
p { font-size: 1.2rem; opacity: 0.9; }
.info {
margin-top: 2rem;
padding: 1.5rem;
background: rgba(255,255,255,0.1);
border-radius: 12px;
text-align: left;
}
code { background: rgba(0,0,0,0.2); padding: 2px 6px; border-radius: 4px; }
</style>
</head>
<body>
<div class="container">
<h1>🎉 恭喜!你的第一台 GCP VM 上線了!</h1>
<p>這台伺服器正在 Google Cloud 上運行</p>
<div class="info">
<p><strong>課程:</strong>登雲學院 GCP-103</p>
<p><strong>服務:</strong>Compute Engine</p>
<p><strong>區域:</strong>asia-east1(台灣彰化)</p>
</div>
</div>
</body>
</html>
EOF
在瀏覽器中查看
- 回到 GCP Console 的 VM instances 頁面
- 找到你的 VM 的「外部 IP 位址」(例如
34.80.xxx.xxx) - 在瀏覽器中輸入
http://34.80.xxx.xxx - 你應該會看到剛才建立的漂亮頁面!
⚠️ 看不到頁面? 確認你在建立 VM 時有勾選「允許 HTTP 流量」。如果忘了,可以到 VPC 網路 → 防火牆規則中新增規則。
五、防火牆規則詳解
在 GCP 中,防火牆規則控制哪些流量可以進出你的 VM。
預設防火牆規則
GCP 自動建立的 default 網路帶有以下預設規則(自訂 VPC 預設不含這些規則,需自行建立):
| 規則名稱 | 方向 | 動作 | 說明 |
|---|---|---|---|
default-allow-internal | 入站 | 允許 | 同一網路內的 VM 可以互相通訊 |
default-allow-ssh | 入站 | 允許 | 允許從任何地方 SSH(port 22) |
default-allow-rdp | 入站 | 允許 | 允許 RDP 連線(port 3389) |
default-allow-icmp | 入站 | 允許 | 允許 ping 指令 |
建立自訂防火牆規則
如果你需要開放其他 port(例如 Node.js 的 3000 port):
gcloud compute firewall-rules create allow-custom-port \
--direction=INGRESS \
--action=ALLOW \
--rules=tcp:3000 \
--source-ranges=0.0.0.0/0 \
--target-tags=custom-port \
--description="Allow port 3000 for Node.js"
然後把 custom-port 標籤加到你的 VM:
gcloud compute instances add-tags my-first-vm \
--zone=asia-east1-b \
--tags=custom-port
🎯 ACE 考試提示:防火牆規則是透過 Network Tags 套用到 VM 上的。記住
--target-tags和--source-ranges這兩個參數。
⚠️ 安全提醒:
0.0.0.0/0代表允許「所有來源」存取,在正式環境中應該限縮來源 IP 範圍。
六、磁碟管理與備份策略
磁碟類型比較
| 磁碟類型 | 代號 | IOPS | 價格 | 適用場景 |
|---|---|---|---|---|
| 標準永久磁碟 | pd-standard | 低 | $ | 備份、冷儲存、開發環境 |
| 平衡永久磁碟 | pd-balanced | 中 | $$ | 一般用途、Web 伺服器 |
| SSD 永久磁碟 | pd-ssd | 高 | $$$ | 資料庫、高效能應用 |
| 極端永久磁碟 | pd-extreme | 極高 | $$$$ | 關鍵資料庫(Oracle, SAP) |
| 本機 SSD | local-ssd | 極高 | $$$ | 暫存資料、快取(VM 關機資料消失!) |
🎯 ACE 考試提示:本機 SSD 的資料在 VM 停止或刪除時會永久遺失。這是考試常見陷阱題。
建立快照(Snapshot)
快照是磁碟在某個時間點的備份,可以用來:
- 災難恢復
- 在不同區域建立相同的 VM
- 資料遷移
# 建立快照
gcloud compute disks snapshot my-first-vm \
--zone=asia-east1-b \
--snapshot-names=my-first-vm-snapshot-$(date +%Y%m%d)
設定自動快照排程
# 建立快照排程(每天凌晨 2 點,保留 7 天)
gcloud compute resource-policies create snapshot-schedule daily-backup \
--region=asia-east1 \
--max-retention-days=7 \
--start-time=02:00 \
--daily-schedule
# 將排程套用到磁碟
gcloud compute disks add-resource-policies my-first-vm \
--zone=asia-east1-b \
--resource-policies=daily-backup
七、Cloud Monitoring 監控告警
伺服器沒有監控,就像開車不看儀表板。等到出事才發現,通常已經來不及了。
安裝 Ops Agent
Cloud Monitoring 需要在 VM 上安裝 Agent 來收集系統指標:
# 安裝 Ops Agent(整合 Monitoring + Logging)
curl -sSO https://dl.google.com/cloudagents/add-google-cloud-ops-agent-repo.sh
sudo bash add-google-cloud-ops-agent-repo.sh --also-install
# 確認 Agent 狀態
sudo systemctl status google-cloud-ops-agent
建立告警政策
透過 Console 建立 CPU 使用率告警:
- 進入 Monitoring → Alerting → Create Policy
- 新增條件:
- 資源類型:VM Instance
- 指標:CPU utilization
- 條件:大於 80%,持續 5 分鐘
- 設定通知管道(Email、Slack、PagerDuty 等)
- 命名:「VM CPU 過高警告」
透過 gcloud CLI:
# 先建立通知頻道(以 Email 為例)
gcloud beta monitoring channels create \
--display-name="My Email" \
--type=email \
--channel-labels=email_address=your-email@example.com
查看監控資訊
在 Cloud Console 中:
- Monitoring → Dashboards:查看系統總覽
- Monitoring → Metrics Explorer:自訂查詢指標
- Logging → Logs Explorer:查看系統日誌
八、成本優化:別讓帳單嚇到你
停止 vs 刪除
| 動作 | 會收費嗎? | 資料保留? |
|---|---|---|
| 停止 VM | 不收 CPU/記憶體費用,但磁碟仍收費 | ✅ 保留 |
| 刪除 VM | 完全不收費 | ❌ 永久刪除 |
# 停止 VM(停止收 CPU 費用,但磁碟繼續收費)
gcloud compute instances stop my-first-vm --zone=asia-east1-b
# 啟動 VM
gcloud compute instances start my-first-vm --zone=asia-east1-b
# 刪除 VM(完全釋放資源)
gcloud compute instances delete my-first-vm --zone=asia-east1-b
省錢技巧
- 用完就關:學習時不用的 VM 記得停止
- E2-micro 免費額度:每月 744 小時免費,適合長期運行的小型應用
- 搶佔式 VM(Spot VM):最高省 91%,但可能隨時被回收
- 承諾使用折扣(CUD):承諾使用 1 年省約 37%,3 年省約 55%
- 右調機型:使用 Cloud Monitoring 的推薦,縮小過度配置的 VM
- 設定預算警示:在 Billing → Budgets 設定花費上限通知
# 查看目前的費用估算
gcloud billing budgets list --billing-account=YOUR_BILLING_ACCOUNT_ID
💡 免費額度提醒:GCP 的 Always Free 方案包含 1 個 e2-micro VM(限 us-west1、us-central1、us-east1 區域)。如果只是學習,可以選擇美國區域來享受免費額度。
九、安全性最佳實踐
必做的安全設定
- 使用 OS Login:取代傳統 SSH 金鑰管理,透過 IAM 控制 SSH 存取
# 啟用 OS Login
gcloud compute project-info add-metadata \
--metadata enable-oslogin=TRUE
-
限縮防火牆規則:不要對全世界開放所有 port
-
啟用 Shielded VM:防止 rootkit 和 bootkit 攻擊
gcloud compute instances create secure-vm \
--zone=asia-east1-b \
--machine-type=e2-micro \
--shielded-secure-boot \
--shielded-vtpm \
--shielded-integrity-monitoring
- 使用 Service Account:給 VM 最小權限的服務帳戶
# 建立自訂服務帳戶
gcloud iam service-accounts create vm-sa \
--display-name="VM Service Account"
# 只給必要權限
gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \
--member="serviceAccount:vm-sa@YOUR_PROJECT_ID.iam.gserviceaccount.com" \
--role="roles/logging.logWriter"
- 定期更新系統:
# 設定自動安全更新
sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure -plow unattended-upgrades
🎯 ACE 考試提示:Service Account 是 VM 的「身份證」,決定了 VM 可以存取哪些 GCP 服務。考試中經常考「最小權限原則」的應用。
十、動手練習
練習 1:建立一個多層架構
嘗試建立兩台 VM:
- Web Server:安裝 Nginx,對外提供服務
- Database Server:安裝 MySQL,只允許 Web Server 存取
提示:使用 Network Tags 和防火牆規則來限制流量。
練習 2:跨區域部署
- 在
asia-east1(台灣)建立一台 VM - 在
us-central1(美國)建立另一台 - 測試兩台之間的延遲:
ping <internal-ip>
練習 3:快照與復原
- 在 VM 上建立一些檔案
- 建立快照
- 刪除 VM
- 從快照恢復到新的 VM
- 確認檔案還在
總結與下一步
恭喜,你的第一台 GCP 虛擬機已經跑起來了。來回顧一下這篇學到的東西:
本課重點
| 概念 | 一句話總結 |
|---|---|
| Compute Engine | GCP 的 IaaS VM 服務,完全控制 OS |
| 機型選擇 | E2 最便宜、C2 高效能、M2 大記憶體 |
| SSH 連線 | Console 內建、gcloud CLI、第三方客戶端 |
| 防火牆 | 透過 Network Tags 套用規則到 VM |
| 快照 | 磁碟的時間點備份,支援自動排程 |
| Monitoring | 安裝 Ops Agent + 設定告警政策 |
| 成本優化 | 停止 VM 仍收磁碟費、e2-micro 有免費額度 |
ACE 考試重點
- 搶佔式 VM(Spot VM)可省 91%,但隨時可能被回收
- 本機 SSD 資料在 VM 停止時永久遺失
- Service Account 遵循最小權限原則
- 防火牆規則透過 Network Tags 套用
- 停止 VM ≠ 刪除 VM(磁碟費用差異)
下一步
- 📖 GCP-104 VPC 網路基礎:深入了解 VPC、子網路、路由
- 📖 GCP-105 IAM 基礎:掌握 GCP 權限管理
- 🗄️ 資料庫服務比較:了解各種 GCP 資料庫的差異
- ⚡ 運算服務比較:Compute Engine vs Cloud Run vs GKE
課程導航
| 上一課 | 目前 | 下一課 |
|---|---|---|
| GCP-102 環境設定 | GCP-103 第一台 VM | GCP-104 VPC 網路基礎 |