負載平衡 (Load Balancing) 是什麼?分流原理為何?
所謂的負載平衡 (Load Balancing) 就是將企業內多部伺服器的流量負載做平衡,透過特定的分流技術,將龐大流量轉向擁有相同功能的其他伺服器,以維持每一部伺服器工作量平均負載(例:當 A 伺服器負載量增加時,就能通過負載平衡器將客戶端的請求轉到伺服器 B)。而這樣分散負載的方式,可有效避免單一伺服器負載過高所導致服務變慢或中斷的情況,並讓資源使用達到最佳化。總體來說,負載平衡的核心作用就是解決同時大量造訪單一網站或服務的流量過載問題,讓客戶端可以穩定快速的獲取重要資料。
而平衡負載的分流方式有很多種,最常見的就是依照地理位置和 URL 來進行分流。而 GCP 的負載流量平衡流程主要依序以下這三大步驟來完成,分別是「步驟一:使用者端發出請求」、「步驟二:請求進入負載平衡器」、「步驟三:將流量分配至健康的伺服器或其它後端服務示」,相關的架構與流程可參考下圖。
GCP Load Balancing 的兩大類型及特色
GCP Cloud Load Balancing是一個完全分散式、軟體定義的代管式服務。由於它不是基於硬體,因此使用者不需要管理負載平衡後的基礎架構。加上Cloud Load Balancing是構建在與Google 相同的前端服務基礎設施上,它可以支援每秒100萬次以上的查詢,並同時具備一致的高性能和低延遲。通過使用 GCP Cloud Load Balancing,企業可以盡可能的向用戶快速提供服務內容。
了解完負載平衡 (Load Balancing) 的原理和 GCP Cloud Load Balancing 的介紹後,我們接下來帶大家認識一下它的種類與架構。基本上負載平衡器可分成兩大種類:「全球負載平衡器(Global load balancer) 」及「區域負載平衡器(Regional load balancer) 」,而 GCP Cloud Load Balancing 兩大種類中又可以細分出底下這九種不同的負載平衡器,讓使用者可以更彈性的根據各自需求去選擇。
全球與區域負載平衡器差別在哪?
「全球」負載平衡意思為不論使用者的位置在哪,都可以透過「一個」全球負載平衡器的外部 IP 連線至離它最近的 Google 前端,讓 Google 前端再將其流量轉發到離使用者最近的後端。我們在這邊所提到的後端可以是全世界任一個 Google Cloud 的資源(如 VM 或 Cloud Storage)。而「區域」負載平衡與前者最大的差異就是它的後端只能在單一 Region 內進行(但是可以是在不同的 Zone) 。另外,「區域」負載平衡所提供的負載平衡 IP 會在 VPC Network 的子網段中供所屬內部使用。
一、外部HTTP(S) 負載平衡
外部HTTP(S) 負載平衡 是一種基於Proxy的第 7 層負載平衡器,可以平衡來自不同地區中的 HTTP 與 HTTPS 流量,基本上只需要使用一個全球 IP 位址,就可以在單個外部 IP 位址後面完整地運行和擴縮服務,所以在 DNS 的設定作業上變得更加簡單方便。此外 HTTP(S) 負載平衡具高擴充性及容錯能力,因此不太需要預先暖機。外部HTTP(S) 負載平衡將HTTP 和HTTPS 流量分配到各個Google Cloud 平台(例如Compute Engine、Google Kubernetes Engine (GKE)、Cloud Storage 等)上託管的後端,以及通過網際網路或混合連接的外部後端。
二、內部HTTP(S) 負載平衡
外部TCP/UDP 網路負載平衡 能在同一區域中的 VM 之間分配外部流量,使用場景像是需要對非 TCP 流量進行負載平衡,或者需要對其他負載平衡器不支持的 TCP 端口進行負載平衡。而網路負載平衡器的架構取決於是使用基於後端服務的網路負載平衡器,或基於目標池的網路負載平衡器。
三、外部TCP / UDP 網路負載平衡
外部TCP/UDP 網路負載平衡 能在同一區域中的 VM 之間分配外部流量,使用場景像是需要對非 TCP 流量進行負載平衡,或者需要對其他負載平衡器不支持的 TCP 端口進行負載平衡。而網路負載平衡器的架構取決於是使用基於後端服務的網路負載平衡器,或基於目標池的網路負載平衡器。
四、內部TCP / UDP 負載均衡
內部TCP/UDP 負載平衡 是一種基於 Andromeda 網路虛擬化堆疊構建的區域性負載平衡器。在 Virtual Private Cloud (VPC) 網路中同一區域內的 VM 之間分配流量,它可以在位於同一VPC 網路中的系統或連接到 VPC 網路系統存取的內部 IP 位址後面運行和擴縮服務。
五、SSL 卸載
藉由 SSL 卸載功能除了可以集中管理 SSL 憑證與解密作業,還可以在負載平衡層和後端之間啟用加密功能。儘管這個作法會稍微增加後端的處理負擔,不過能夠享有最高等級的安全性。
如何選擇合適的 Load balancing
知道 GCP Cloud Load Balancing 的不同種類和特性之後,接著來了解一下該如何判斷目前的使用情境會需要什麼樣的負載平衡。其實 Google Cloud 的官網已經為大家梳理好一張決策樹來協助大家更輕鬆做判斷和評估。一開始先分成從 External 或 Internal 來選擇 Load Balancing,前者是分配來自 Interent 到 Google Cloud VPC 的流量,後者則是分配在 Google Cloud 內的資源流量,如 VM 與 VM 之間。總而言之,只要有需要對應到 Internet 的都可以選擇 External load balancer 的部分繼續細選下去,若非者則可選則 Internal。
接著再根據流量類型來進行分類,若是 HTTP/HTTPS 像常見的 80、443、8080 連接埠,可以選擇 HTTP(S) Load Balancer。除此之外,都是TCP/UDP流量。
TCP流量分為是否有 SSL Offload ,也就是有沒有需要 SSL 憑證,若有可直接使用SSL Proxy。其餘則是 TCP Proxy 或 TCP網路負載平衡。
若有 Global LB 的需求,則選擇使用 TCP Proxy,若沒有的話,再看是否需要 Preserve Client IPs ,也就是保留 Original Client IP ,若需要保留則必須使用 TCP 網路負載平衡。
而 UDP 流量則是相對單純,可直接使用 UDP 網路負載平衡。
右半邊 Internal 是相對容易的部分,直接看是 TCP 或 UDP 或 HTTP/HTTPS 來做選擇即可。
以上就是針對 Google Cloud Load Balancing 的一些原理和分類介紹,希望可以幫助到初次接觸 GCP 或是對 GCP Load Balancer 不熟的讀者,釐清一些概念和方向。若想了解更多歡迎聯繫我們!