跳至主要內容
ESC
pca-architect-journey — 第 10/13 篇

PCA 架構之旅 10 — 網路拓樸

PCA

Load Balancer 選完了,接下來要把整張網路地圖畫出來。這一步的產出物是一張網路拓樸圖——region 在哪、zone 怎麼分、VPC 長什麼樣、流量從 DNS 進來怎麼走到 Pod。

PCA 的實務題常會給你半張架構圖,問你缺了什麼;或者反過來,丟一個場景要你在考場描述怎麼畫。畫得出來,後面談可靠性、安全性才有基礎。


為什麼這一步重要

畫網路拓樸最容易踩的坑:

  1. 把 region 跟 zone 搞混:把資料庫放在「region」是抽象說法;真實要決定的是 region + zone,而且通常要多個 zone
  2. subnet 當 security boundary:subnet 不是防火牆,它只是 IP 段劃分。真正的 security boundary 是 firewall rules 跟 service attachments
  3. 忘了畫 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 建議)

思考框架

畫拓樸圖時,按順序問五個問題:

  1. 用戶從哪進來? → 畫 Cloud DNS(geo routing? latency routing?)
  2. 第一站是什麼? → Application LB + Cloud CDN + Cloud Armor
  3. 流量去哪個 region?哪個 zone? → 標清楚每個服務的 region / zone
  4. 同 region 不同服務怎麼講話? → Internal LB? VPC Peering? Private Service Connect?
  5. 跨 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-frontendGKE nodes(前端 Pod)10.0.0.0/20
subnet-backendGKE nodes(後端 Pod)10.0.16.0/20
subnet-db-psaPrivate Service Access for Cloud SQL10.0.32.0/24
subnet-mgmtBastion、維運工具10.0.40.0/24

第四層:zone 分布

  • GKE regional cluster 橫跨 asia-east1-aasia-east1-basia-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 設定點在哪。


常見陷阱

  1. 把 subnet 畫成 zone 的子集合:subnet 是 regional 的,它會自動跨 zone。畫圖時 subnet 的框應該包覆整個 region,不要畫在單一 zone 裡面。
  2. 兩個 GKE cluster 用同一個 subnet 的 secondary range:Pod IP 跟 Service IP 是從 subnet 的 secondary range 切的。兩個 cluster 共用會衝突,一定要規劃不同 range。
  3. 忘記 Cloud SQL 需要 Private Service Access 的 peering range:Cloud SQL 用 Service Networking 配一段 /24 peering range。這段 range 不能跟既有 subnet 重疊,否則建立時會失敗。

延伸閱讀


系列導航

🎯 換你練習

理論讀完,換自己來。到 架構師設計工作坊 · 步驟 10 填入你的 case study,邊寫邊內化。

pca-architect-journey — 10/13 完成 查看系列全覽 →

留言討論

徽章解鎖!