跳至主要內容
ESC
PCA 雲端架構師之旅 — 第 9/13 篇

PCA 雲端架構師之旅 09 — 網路與 Load Balancing

PCA 雲端架構師之旅 09 — 網路與 Load Balancing
Updated: 2026-07-17

儲存選完,下一個問題就很現實:流量到底怎麼進來。GCP 的 Load Balancing 是它在雲端市場少數真的拿得出手的東西——全域 Anycast、一個公網 IP 蓋全世界、跨 region 自動路由,這套別家還真不容易抄。但能力一多,選型就跟著難,七種 Load Balancer 攤在你面前,題目又只給你三行字,你得很快認出它要的是哪一種。

PCA 超愛考這個。給你一段需求,問你選哪種 LB。這一題答歪,後面的高可用設計、成本估算全部跟著歪。所以這篇我們不只把七種講清楚,更重要的是練那個「看到關鍵字就反射出答案」的肌肉。

這是 13 步驟 PCA 雲端架構師之旅 的第九站。

先判斷 HTTP 或 TCP UDP、外部或內部、全域或區域,再把流量送到健康後端的 Load Balancer 選型圖

圖解:七種 Load Balancer 不用整張死背。先問流量是 HTTP(S) 還是 TCP/UDP,再問使用者在外部還是內部,最後看服務範圍要全域還是區域;三個答案會把選項快速縮小,健康檢查再決定哪些後端真的能接流量。


題目其實已經把答案寫在句子裡

你大概會在 case study 看到這種句子,每一句背後都鎖死了一種 LB:

  • 「全球用戶、要做 TLS 終止、還要 WAF」
  • 「內部微服務之間的 gRPC 呼叫」
  • 「遊戲伺服器、走 UDP、低延遲、要保留客戶端 IP」
  • 「一個既有的 TCP 應用,只跑在 asia-east1 一個 region」

讀的時候眼睛要盯三個關鍵字:協定(是不是 HTTP)、範圍(全球還是一個 region)、有沒有要保留原始 client IP。這三個答完,答案幾乎就出來了。

過來人提醒你三個最常翻車的點。第一個,看到題目就反射選 Global External Application Load Balancer——「全域 + 應用層」聽起來最豪華嘛。但很多場景根本只需要一個區域 LB,甚至內部 LB 就夠了,你選了最貴的那個,邏輯上不算錯,但在「成本要砍 35%」的案子裡就是扣分。第二個,UDP 的需求拿 Application LB 去接,這個直接判死——Application LB 只認 HTTP(S),UDP 跟 raw TCP 它碰都不碰。第三個最陰,題目埋一句「要保留 client IP」,這句話一出現,能選的就剩 Passthrough Network LB 一種,其他全部出局。


七種 LB,先把座標軸搞懂

直接背七種組合很痛苦,而且容易記混。聰明的做法是先理解三個彼此獨立的維度,組合起來就是那七種。

Cloud Load Balancing 建立負載平衡器精靈第一步「負載平衡器類型」,並排應用程式負載平衡器(HTTP/HTTPS)與網路負載平衡器(TCP/UDP/SSL)兩張架構圖,左側列出步驟 2 公開或內部、步驟 3 全域或單一區域部署

Google 的建立精靈其實偷偷把選型順序幫你排好了:第一步先逼你選應用程式(HTTP/HTTPS)還是網路(TCP/UDP/SSL),接著左側的步驟 2「公開或內部」、步驟 3「全域或單一區域」一路往下問。這三步就是上面那張「三軸」的真身。考場上沒有精靈給你點,但你腦袋要照同一個順序跑一遍——協定 → 對外對內 → 範圍——三題答完,七個選項就縮到剩一個。

維度選項你要問自己
協定層 (Layer)Application (L7) / Proxy Network (L4) / Passthrough Network (L4)是 HTTP?還是純 TCP/UDP?要不要保留 client IP?
對外對內 (Exposure)External(對外) / Internal(對內)流量從網際網路來,還是 VPC 內部互打?
範圍 (Scope)Global(全域) / Regional(區域)用戶散在全球,還是集中一個區域?

三軸交叉,常用的就這七種,記住每一種的「招牌場景」比記名字有用:

LB 類型協定招牌場景
Global External Application LBHTTP(S)全球用戶網站、整合 Cloud CDN / Cloud Armor
Regional External Application LBHTTP(S)區域法規限制、必須綁定特定 region
Internal Application LBHTTP(S)微服務 East-West、內部 API gateway
Global External Proxy Network LBTCP / SSL全球 TCP 應用(非 HTTP),但仍要 TLS 終止
Regional External Proxy Network LBTCP / SSL區域 TCP 應用
External Passthrough Network LBTCP / UDP保留 client IP、遊戲、VoIP、非標準協定
Internal Passthrough Network LBTCP / UDPVPC 內部 L4 分流、HA 資料庫前端

表格看完,真正會在考場救你一命的是兩條分水嶺,務必弄到滾瓜爛熟。

第一條,Proxy 跟 Passthrough 的差別。Proxy 型的 LB 會把連線「切成兩段」——client 連到 LB 是一條 TCP,LB 再連後端是另一條 TCP,所以後端看到的來源 IP 是 LB 的。Passthrough(直通)就完全不同,它只改封包的路由,不終止連線,client 跟後端等於直接對話,後端拿得到原始 client IP。這就是為什麼「保留 client IP」這個需求一出現,答案只能是 Passthrough。

第二條,Application 跟 Proxy Network 的差別。這兩個都是 proxy(都會終止連線),差在看得多深。Application LB 是 L7,看得懂 HTTP 的 header、path、cookie,所以能做 /api 跟靜態資源分流這種事;Proxy Network LB 只看到 L4,它知道這是一條 TCP,但不知道裡面裝的是什麼。需要按路徑分流就得用 Application,純粹 TCP 轉發又想要 TLS 終止才輪到 Proxy Network。

📝 考場提點

考場上不要硬記七個名字,記「三軸 + 兩條分水嶺」就好。拿到題目按順序問四件事:是不是 HTTP(是→Application,否→Network)→ 要不要保留 client IP(要→Passthrough,否→Proxy)→ 流量從公網還是 VPC(公網→External,內部→Internal)→ 全球還是區域(全球只有 Application 跟 Proxy Network 撐得住)。四題問完答案就鎖定了。額外記一條反射:題目只要出現 WAF、OWASP Top 10、防爬蟲、DDoS,答案幾乎一定是 Global External Application LB 搭 Cloud Armor,這組是綁在一起的。


走一遍範例 — 登雲書店

光講維度太抽象,我們把登雲書店真的接一遍。它要上雲了,流量從前端到後端、從公網到 VPC 內部,每一層需要的 LB 都不一樣,正好把七種裡的關鍵幾種都用上。

第一層:會員購物網站(前端)

  • 需求:HTTPS、全球 CDN、WAF 防爬蟲
  • 選擇:Global External Application LB + Cloud CDN + Cloud Armor
  • 理由:HTTP 協定 + 需要 path routing(/api vs 靜態資源)+ 整合 CDN

第二層:後端微服務之間(訂單 → 庫存 → 物流)

  • 需求:gRPC、只在 VPC 內、跨 AZ HA
  • 選擇:Internal Application LB(gRPC 走 HTTP/2)
  • 理由:East-West 流量不該走出 VPC;需要 L7 routing 支援 service mesh

第三層:自架 PostgreSQL 讀取副本分流(Compute Engine / GKE 上的自管節點)

  • 需求:TCP 5432、保留 client IP 做審計
  • 選擇:Internal Passthrough Network LB
  • 理由:PostgreSQL 協定是 TCP;審計需要 client IP;不需要 L7 能力
  • 注意:Cloud SQL 是全代管服務,使用者無法在它前面掛自建 LB(讀取副本各自有獨立連線端點);要用 ILB 分流的前提是資料庫節點由你自管

第四層:即時聊天客服(WebSocket over WSS)

  • 需求:長連線、HTTP Upgrade
  • 選擇:Global External Application LB
  • 理由:Application LB 支援 WebSocket;不要誤選 Proxy Network LB

這四層裡藏了一個最常見的錯誤設計:把「後端微服務之間」也接到 Global External Application LB。我看過不少團隊圖方便,一套外部 LB 內外通吃。問題是這樣內部呼叫會繞出 VPC、走一圈公網路由再回來,不只白白多付一筆流量費、多吃一段延遲,更糟的是內部 API 等於暴露在公網能觸及的路徑上,零信任原則第一條就破了。內部往內部的流量,老老實實走 Internal LB,這不只是省錢,是安全基線。

📝 考場提點

case study 的 LB 題常常一次丟給你好幾層流量,評分看的是你有沒有「分層選對」——尤其是外部 vs 內部這一刀。內部往內部硬走 External LB,在改考卷的人眼裡同時踩到成本(多付 egress)跟安全(破壞零信任)兩個雷,是雙重扣分。另一個高頻陷阱:題目一強調「成本要砍」「預算有限」,就別反射把每一層都堆 Global External Application LB——能用 Regional、能用 Internal 的地方就降下來,這種「夠用就好」的取捨,正是 PCA 想看到的架構成熟度。


那些把人坑進去的細節

七種選完,魔鬼藏在幾個容易記反的地方,這幾個 PCA 幾乎每次改版都還留著考。

UDP 千萬別碰 Proxy Network LB。 Proxy Network LB 只吃 TCP 跟 SSL,UDP 它不收。所以 DNS、遊戲、VoIP 這類走 UDP 的,唯一的路就是 Passthrough Network LB。題目把「UDP」跟「Proxy」放在同一個選項裡,那個選項就是來騙你的。

以為 X-Forwarded-For 就是保留 client IP。 Application LB 確實會把原始 IP 塞進 X-Forwarded-For 這個 HTTP header,但這是「寫在 header 裡」,不是「封包層真的保留」。如果你的後端是純 TCP 應用、根本不解析 HTTP header,那它永遠讀不到這個 IP。需求只要寫「後端要拿到原始 client IP 做審計」而後端又不是 HTTP 服務,標準答案就是 Passthrough Network LB,別在 header 上鑽牛角尖。

Passthrough Network LB 沒有 Global 版本。 這點很多人栽過。它永遠是 regional,沒有全域版。所以當題目同時丟出「全球用戶 + UDP + 要保留 client IP」這種看似無解的組合時,它不是要你找一個神奇的全域 Passthrough,而是要你自己拼——在多個 region 各擺一個 regional Passthrough LB,前面再用 Cloud DNS 的地理路由把用戶導去最近的那個。能想到「用 DNS 補上 Global 這一層」,這題你就贏了。

同一個建立精靈選了網路負載平衡器加直通式(passthrough)後的「公開或內部」步驟,外部選項標示 External passthrough Network Load Balancer,只對應到單一個 Region A

選到直通式這一步,你會發現一件事:外部那邊只給你一個 Region A,從頭翻到尾都找不到「全域」那顆按鈕。這不是介面漏做,是直通式 LB 天生就永遠是區域性的。所以題目丟「全球用戶 + UDP + 保留 client IP」時,別傻傻去找一個神奇的全域 Passthrough——它不存在,正解是每個 region 各擺一台,再用 Cloud DNS 補上全域這層。精靈幫你把這個考題陷阱直接畫出來了。

Cloud Run / serverless 後端要靠 NEG 掛上去。 這點考試很愛拐彎問。Global External Application LB 沒辦法直接指向一個 Cloud Run 服務,中間得隔一層 Serverless Network Endpoint Group(NEG)當橋。題目如果寫「用全域 LB + Cloud Armor 罩住一個 Cloud Run 後端」,正確接法是 LB →(路由規則)→ Serverless NEG → Cloud Run,少了 NEG 這層就接不起來——選項裡那個「LB 直接指 Cloud Run」看起來最直覺,但它是錯的。

建立後端服務抽屜的「後端類型」下拉展開,列出執行個體群組、網路端點群組(區域性 NEG 對應 GCE 與 GKE、網際網路 NEG 對應外部後端、無伺服器 NEG 對應 App Engine/Cloud Run/Cloud Functions、Private Service Connect NEG)

很多人以為 LB 後面只能掛 VM,這個下拉選單就是最好的反例。「無伺服器 NEG」這一項,正是把 Cloud Run、App Engine、Cloud Functions 接到 LB 後面的那座橋。考試最愛擺的陷阱選項是「LB 直接指 Cloud Run」——看起來最順手,但少了這層 Serverless NEG 就是接不起來。記住後端類型這格一定要先選對,橋沒搭好,Cloud Armor 罩得再漂亮流量也進不去。

順帶一個實務上的痛,考試不一定考但工作一定遇到:health check 的防火牆。LB 的健康檢查是從 Google 一組固定的探測 IP 段打進來的,很多人 LB 都配好了卻發現後端一直被標成 unhealthy,最後才發現是 VPC 防火牆沒放行那幾段探測 IP。架構圖上看不到這個坑,但它能讓你整個下午都在懷疑人生。

建立防火牆規則表單,動作為允許、目標為指定的目標標記 lb-backend、來源 IPv4 範圍填入 130.211.0.0/22 與 35.191.0.0/16、通訊協定選 TCP

把 130.211.0.0/22 和 35.191.0.0/16 這兩段直接背起來——它們是 Google 健康檢查探測器的固定來源 IP。沒有這條規則放行,你的 LB 配得再完美,後端也會被健康檢查一路判成 unhealthy,流量一個都送不進去。這坑在架構圖上完全看不到,卻是新手最常花整個下午懷疑人生的地方;工作一定會踩,考試偶爾也拿它出來問。


延伸閱讀


下一步:流量怎麼進來搞定了,但 LB 後面那張網要怎麼鋪——VPC、子網、對等互連、混合連線——下一篇我們來談網路拓樸


系列導航

🎯 換你練習

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

PCA 雲端架構師之旅 — 9/13 完成 查看系列全覽 →

留言討論

徽章解鎖!