前言

若我們有一個服務,使用者眾多,伺服器負載量大,除了透過升級主機硬體、優化程式效能,還能透過建立多台伺服器進行服務,並透過負載平衡的機制將請求分發給各個伺服器。

負載平衡器有很多種方式可以實現,包括使用 nginx 提供的功能。

本文章示範透在 Google Cloud 建立負載平衡(Cloud Load Balancing)的伺服器群組,不但設定快速、還能一併設定 SSL Certificate、GCE(Cloud Compute Engine)執行個體群組,未來擴充非常的快速簡便。


伺服器自動擴展後,可以透過開機腳本設置環境與下載程式,至於程式更新版本的部分可以透過 CI/CD 服務,這部分則不在本文章討論範圍。


目前常用的主流服務還有 k8s 自動管理,這部分則不在本文章討論範圍。

事前準備

在進行之前,我們假設您有一個網域,並且已了解 GCE的用途與設定方式、如何在 GCE架設 nginx 並提供網頁服務、擁有 DNS 的基礎知識與了解設定方式、擁有 HTTPS/SSL Certificate 的基礎知識,我們著重在介紹 GCP Cloud Load Balancing 的建置教學。

(Cloud Load Balancing 也支援 HTTP 服務,但本文僅介紹透過 Google-managed SSL certificates 建立 HTTPS服務。)

將會用到的 Google Cloud 服務如下:

1. GCE (Google Compute Engine)

2. Cloud Load Balancing (含 Google-managed SSL certificates)

1. GCE 執行個體群組設定

假設我們有 2 台 GCE 伺服器主機後,我們希望能將請求分散至此 2 台主機,那可以將這2台主機設定為「執行個體群組」,接著就透過 Cloud Load Balancing 的設置完成,這就是設定「執行個體群組」的目的。

在 Google Cloud 後台側邊欄,點擊「Compute Engine」->「執行個體群組」,在上方點擊「建立執行個體群組」

GCE 主畫面

執行個體群組分為「是否自動配置新增移除GCE主機」,若自動配置時,又分為「Stateless」與「Stateful」。

可以透過「執行個體範本」在負載較重時,自動部署新的主機,較輕時自動關閉。

本文透過使用「New unmanaged instance group」(手動建立GCE主機、手動設置群組),快速介紹負載平衡設置。

事先建立2個GCE執行個體 instance-1 與 instance-2(細節略過)

在新增執行個體群組時,「Network and instances」都選預設,「VM 執行個體」選擇剛才建立的2個GCE執行個體,「通訊埠對應」設定 443 (使用https)。

GCE 新增執行個體群組畫面

2. Cloud Load Balancing

在 Google Cloud 後台側邊欄,點擊「網路服務」->「負載平衡」,在上方點擊「建立負載平衡器」,選擇「HTTP(S)負載平衡」

Load Balancing 首頁

選擇「從網際網路傳送至VM或無伺服器服務」與「傳統版HTTP(S)負載平衡器」

Load Balancing 建立負載平衡器

2-1. 後端設定

「後端設定」是指負載平衡器收到請求後,分配請求的細節設定。

我們設定「後端類型」發送至「執行個體群組」,設定透過「HTTP」與後端溝通。

接著設定「後端」的「執行個體群組」,下拉選擇先前建立的執行個體。通訊埠編號設定「80」,平衡模式則依照需求,或先依照預設設定。

Load Balancing 建立後端設定

「健康狀態檢查」也是必填,可以「建立健康狀態檢查」,可以設置「HTTP」「80」port,每隔60秒檢查,30秒逾時。或依照需求設定。

Load Balancing 健康狀態檢查

2-2. 主機與路徑規則

負載平衡器可以依照不同路徑,將請求轉發到不同的後端服務。

若沒有這方面的需求,則保留預設資料即可。

Load Balancing 主機與路徑規則

2-3. 前端設定

前端設定分為「HTTP」與「HTTPS」,建議「IP位址」不要使用「臨時」的,這樣如果重啟時,或因其他因素外部IP變動,DNS還要重新設定。

建議「建立IP位址」,這樣就能使用固定IP。且若使用固定IP,HTTP/HTTPS設定可以是同一個外部IP。

Load Balancing 前端設定

「憑證」就是指 HTTPS 的 SSL 憑證,若已經有網域,但尚未有憑證,可以點擊「建立新憑證」->「建立 Google 代管的憑證」

接著輸入網域。

Load Balancing 前端設定 建立SSL憑證

注意:在文章開頭「事前準備」時,我們假設您已經有一個網域,若沒有,可以在 「Google Domains」或其他網域平台購買,否則可以僅使用 HTTP 而不使用 HTTPS

2-4. SSL Certificate

建立完成負載平衡器後,在步驟「2-3.」建立的 SSL Certificate 可能尚未生效,這時候可以點擊「load balancing components view」->「憑證」查看狀態。

Load Balancing 主畫面
Load Balancing 憑證畫面

若「Domain Status」狀態是「PROVISIONING」佈建中,代表網域正在驗證當中,網域驗證可能最久會耗費60分鐘。

Load Balancing SSL PROVISIONING

若「Domain Status」狀態是「ACTIVE」有效,則網域與負載平衡器已經開始運作。

Load Balancing SSL ACTIVE

關於更多 Cloud Load Balancing 的 SSL certificates 請參考下方來自官方網站文件的參考連結「Google Cloud - Cloud Load Balancing - SSL certificates - Troubleshoot」

參考連結

Google Cloud - Cloud Load Balancing - SSL certificates - Troubleshoot
FBLINETwitterLinkIn
回部落格