跳至主要內容
ESC
GCP 入門基礎 — 第 3/5 篇

第一台雲端主機:Compute Engine 從建立到監控完全指南

GCP-103

上一篇 GCP-102 環境設定 我們把 GCP 帳號和第一個專案都建好了。這篇就來動手,建立你的第一台雲端主機。

Compute Engine 是 GCP 最基礎的運算服務,你可以把它想成在 Google 的全球資料中心裡租了一台電腦。作業系統你說了算,要裝什麼軟體都行,拿來架個網站也沒問題。

完成本教學後,你將:

  • ✅ 了解 Compute Engine 的核心概念(機型、映像檔、磁碟)
  • ✅ 建立一台 Linux 虛擬機並透過 SSH 連線
  • ✅ 在 VM 上架設 Apache 網頁伺服器
  • ✅ 設定防火牆規則允許外部存取
  • ✅ 建立快照(Snapshot)備份策略
  • ✅ 設定 Cloud Monitoring 監控告警
  • ✅ 學會成本優化技巧,避免帳單爆表

先決條件

預估時間: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, N2DWeb 伺服器、開發環境、小型資料庫$
運算最佳化C2, C2D, C3高效能運算、遊戲伺服器、科學模擬$$
記憶體最佳化M2, M3大型資料庫(SAP HANA)、記憶體快取$$$
加速器最佳化A2, A3, G2機器學習訓練、影像處理$$$$

💡 新手建議:從 E2 系列 開始,這是最便宜的選項,適合學習和開發。


二、動手建立第一台 VM

方法一:透過 Cloud Console(圖形介面)

Step 1:進入 Compute Engine 頁面

  1. 開啟 GCP Console
  2. 左側選單點擊 Compute EngineVM instances
  3. 如果是第一次使用,需要等待 API 啟用(約 1-2 分鐘)
  4. 點擊 建立執行個體(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-microus-west1、us-central1、us-east1 三個區域每月有 1 台免費額度(Always Free 方案,相當於 744 小時)。注意本教學使用的 asia-east1 不在免費範圍內,僅供學習示範;若想真正享受免費額度,請選擇上述三個美國區域。

Step 4:設定開機磁碟

  1. 點擊「變更」
  2. 作業系統:Debian GNU/Linux 12 (Bookworm)
  3. 開機磁碟類型:標準永久磁碟
  4. 大小: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

在瀏覽器中查看

  1. 回到 GCP Console 的 VM instances 頁面
  2. 找到你的 VM 的「外部 IP 位址」(例如 34.80.xxx.xxx
  3. 在瀏覽器中輸入 http://34.80.xxx.xxx
  4. 你應該會看到剛才建立的漂亮頁面!

⚠️ 看不到頁面? 確認你在建立 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)
本機 SSDlocal-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 使用率告警:

  1. 進入 MonitoringAlertingCreate Policy
  2. 新增條件:
    • 資源類型:VM Instance
    • 指標:CPU utilization
    • 條件:大於 80%,持續 5 分鐘
  3. 設定通知管道(Email、Slack、PagerDuty 等)
  4. 命名:「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 中:

  • MonitoringDashboards:查看系統總覽
  • MonitoringMetrics Explorer:自訂查詢指標
  • LoggingLogs 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

省錢技巧

  1. 用完就關:學習時不用的 VM 記得停止
  2. E2-micro 免費額度:每月 744 小時免費,適合長期運行的小型應用
  3. 搶佔式 VM(Spot VM):最高省 91%,但可能隨時被回收
  4. 承諾使用折扣(CUD):承諾使用 1 年省約 37%,3 年省約 55%
  5. 右調機型:使用 Cloud Monitoring 的推薦,縮小過度配置的 VM
  6. 設定預算警示:在 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 區域)。如果只是學習,可以選擇美國區域來享受免費額度。


九、安全性最佳實踐

必做的安全設定

  1. 使用 OS Login:取代傳統 SSH 金鑰管理,透過 IAM 控制 SSH 存取
# 啟用 OS Login
gcloud compute project-info add-metadata \
  --metadata enable-oslogin=TRUE
  1. 限縮防火牆規則:不要對全世界開放所有 port

  2. 啟用 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
  1. 使用 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"
  1. 定期更新系統
# 設定自動安全更新
sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure -plow unattended-upgrades

🎯 ACE 考試提示:Service Account 是 VM 的「身份證」,決定了 VM 可以存取哪些 GCP 服務。考試中經常考「最小權限原則」的應用。


十、動手練習

練習 1:建立一個多層架構

嘗試建立兩台 VM:

  1. Web Server:安裝 Nginx,對外提供服務
  2. Database Server:安裝 MySQL,只允許 Web Server 存取

提示:使用 Network Tags 和防火牆規則來限制流量。

練習 2:跨區域部署

  1. asia-east1(台灣)建立一台 VM
  2. us-central1(美國)建立另一台
  3. 測試兩台之間的延遲:ping <internal-ip>

練習 3:快照與復原

  1. 在 VM 上建立一些檔案
  2. 建立快照
  3. 刪除 VM
  4. 從快照恢復到新的 VM
  5. 確認檔案還在

總結與下一步

恭喜,你的第一台 GCP 虛擬機已經跑起來了。來回顧一下這篇學到的東西:

本課重點

概念一句話總結
Compute EngineGCP 的 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-102 環境設定GCP-103 第一台 VMGCP-104 VPC 網路基礎
GCP 入門基礎 — 3/5 完成 查看系列全覽 →

留言討論

徽章解鎖!