PCA 架構之旅 10 — 網路拓樸
PCA
Load Balancer 選完了,接下來要把整張網路地圖畫出來。這一步的產出物是一張網路拓樸圖——region 在哪、zone 怎麼分、VPC 長什麼樣、流量從 DNS 進來怎麼走到 Pod。
PCA 的實務題常會給你半張架構圖,問你缺了什麼;或者反過來,丟一個場景要你在考場描述怎麼畫。畫得出來,後面談可靠性、安全性才有基礎。
為什麼這一步重要
畫網路拓樸最容易踩的坑:
- 把 region 跟 zone 搞混:把資料庫放在「region」是抽象說法;真實要決定的是 region + zone,而且通常要多個 zone
- subnet 當 security boundary:subnet 不是防火牆,它只是 IP 段劃分。真正的 security boundary 是 firewall rules 跟 service attachments
- 忘了畫 Cloud DNS / CDN:這兩個不在 VPC 裡,但一定要畫在拓樸圖上,因為它們是流量的第一站
考官在意的不是你會不會背定義,而是你能不能說清楚一個 request 從 DNS 查詢一路走到回傳給用戶的完整路徑。
核心概念
GCP 網路拓樸的六個基本元件:
| 元件 | 範圍 | 功能 |
|---|---|---|
| Region | 全球數十個 | 地理區域(例如 asia-east1 彰化) |
| Zone | 每 region 至少 3 個 | 區域內獨立故障域 |
| VPC | 全域(Global) | 邏輯網路,跨 region |
| Subnet | 區域(Regional) | VPC 內的 IP 段,綁在一個 region |
| Cloud DNS | 全球 | 權威 DNS,支援 geo / latency routing |
| Cloud CDN | 全球 edge | 邊緣快取,綁在 Application LB |
幾個重要的 GCP 特點:
- VPC 是 global 的:同一個 VPC 可以橫跨所有 region 的 subnet,不像 AWS 一個 VPC 綁在 region
- Subnet 是 regional 的:一個 subnet 會涵蓋該 region 內所有 zone
- zone 選 3 個以上做 HA:單 zone 的 SLA 遠低於多 zone
- 兩種 VPC 模式:Auto Mode(自動每 region 建 subnet)、Custom Mode(手動規劃,production 建議)
思考框架
畫拓樸圖時,按順序問五個問題:
- 用戶從哪進來? → 畫 Cloud DNS(geo routing? latency routing?)
- 第一站是什麼? → Application LB + Cloud CDN + Cloud Armor
- 流量去哪個 region?哪個 zone? → 標清楚每個服務的 region / zone
- 同 region 不同服務怎麼講話? → Internal LB? VPC Peering? Private Service Connect?
- 跨 region 要通嗎? → 同一個 VPC 的不同 subnet 自動通(Google 骨幹);跨 VPC 要 Peering
補一個常被忘記的問題:
- 資料庫怎麼對外(對內)? → Cloud SQL 用 Private Service Access,不要用 public IP
走一遍範例 — 登雲書店
登雲書店的網路拓樸長這樣(從外到內):
第一層:DNS 與 edge
用戶 → Cloud DNS (shop.cloudon-books.com)
→ Global External Application LB (單一公網 IP)
→ Cloud CDN 邊緣節點(命中率 ~70%)
→ Cloud Armor(WAF + rate limit)
第二層:VPC 結構
- VPC:
cloudon-vpc(custom mode,global) - 主 region:
asia-east1(彰化) - DR region:
asia-northeast1(東京)
第三層:Subnet 規劃(asia-east1)
| Subnet 名稱 | 用途 | CIDR |
|---|---|---|
subnet-frontend | GKE nodes(前端 Pod) | 10.0.0.0/20 |
subnet-backend | GKE nodes(後端 Pod) | 10.0.16.0/20 |
subnet-db-psa | Private Service Access for Cloud SQL | 10.0.32.0/24 |
subnet-mgmt | Bastion、維運工具 | 10.0.40.0/24 |
第四層:zone 分布
- GKE regional cluster 橫跨
asia-east1-a、asia-east1-b、asia-east1-c - Cloud SQL HA 啟用,自動選兩個 zone(primary + standby)
- Bigtable 單叢集放
asia-east1-b(節省成本,非關鍵路徑)
第五層:流量路徑範例
用戶查詢 shop.cloudon-books.com
→ Cloud DNS 回 Global LB 的 Anycast IP
→ LB 選 CDN edge
→ CDN miss → 回源 GKE frontend Pod
→ Pod 呼叫 Internal LB (backend service)
→ backend Pod 透過 Private Service Access 查 Cloud SQL
→ 結果回傳
PCA 常見的追問:「如果 asia-east1 整個 region 掛掉怎麼辦?」 完整答案留到第 12 步(DR)再談,但拓樸圖上一定要看得出 DR region 存在,還有 Cloud DNS 的 failover policy 設定點在哪。
常見陷阱
- 把 subnet 畫成 zone 的子集合:subnet 是 regional 的,它會自動跨 zone。畫圖時 subnet 的框應該包覆整個 region,不要畫在單一 zone 裡面。
- 兩個 GKE cluster 用同一個 subnet 的 secondary range:Pod IP 跟 Service IP 是從 subnet 的 secondary range 切的。兩個 cluster 共用會衝突,一定要規劃不同 range。
- 忘記 Cloud SQL 需要 Private Service Access 的 peering range:Cloud SQL 用 Service Networking 配一段 /24 peering range。這段 range 不能跟既有 subnet 重疊,否則建立時會失敗。
延伸閱讀
系列導航
🎯 換你練習
理論讀完,換自己來。到 架構師設計工作坊 · 步驟 10 填入你的 case study,邊寫邊內化。
pca-architect-journey — 10/13 完成
查看系列全覽 →