當你使用虛擬機器架設好一個網站,你可能會考慮使用 GCP Load Balancer,這其實也是整個 Google Cloud 最核心的功能,很多大企業也是為此而選擇上雲。以下逐步帶你確認幾個重要的問題,和設定的步驟。
(一) 你為什麼要使用 Load Balancer?
因為 Load Balancer 可以達到的效果很多,要看你的情境和預算適不適合,例如:
1. 你有多台機器要平均分散流量
這是 LB 的基本功能,它可以自動分流外部流量到所有的機器。
2. 你不想再自己申請 SSL 憑證,想要使用 Google 免費的憑證
坊間有很多 SSL 憑證供應商,都要付費購買,而且並不便宜,憑證到期還要自己申請展期,萬一錯過展期時間,網站就會出現憑證錯誤的訊息,使用者會懷疑網站是不是有問題,影響信譽。坊間有很多 SSL 憑證供應商,都要付費購買,而且並不便宜,憑證到期還要自己申請展期,萬一錯過展期時間,網站就會出現憑證錯誤的訊息,使用者會懷疑網站是不是有問題,影響信譽。
3. 你有多個後端 (多種不同的服務),想依照網址分流到不同後端
或是依照使用者所在的位置,或是要造訪的網站,分流到不同機器,都可以使用 LB。
4. 你想用 Cloud Armor 保護主機,阻擋 DDoS 攻擊
因為 Cloud Armor 必須設定在 LB 上,才能發揮作用,為此你必須使用 LB,才能在上面套用 Cloud Armor 的防禦政策。
5. 你的網站包含大量媒體內容 (圖片或影片),想要串接 Cloud CDN 發布內容
同上,Cloud CDN 也必須設定在 LB 上,才能發揮作用。
6. 確認費用可以接受
假如你只有一台 e2-medium 規格的虛擬機器,並且直接對外服務,費用包含進出 LB 的資料處理費用 (每 GiB 0.008 美元),以及轉發規則 (Forwarding Rule) 的費用 (每小時 0.025 美元),假設你的資料處理每月 10 GiB 左右,最基本的費用0.008 * 10 GB * 2 (資料進和出) + 0.025 * 每月730小時 = 0.08 + 18.25 = 18.41 美元。如果可以接受,就可以考慮採用。

截圖自 GCP 價格計算機
如果上述的問題,只要有一個是肯定的,就可以再往下進行。在本文的範例中,我們就假設上述需求全部都要做到,藉此來說明每個功能需要達成的條件和步驟。
(二) 你是否要自動擴充 (Autoscale)?
自動擴充就是當流量大的時候,GCP 會幫你建立相同的主機來對外服務,而分流的問題,Load Balancer 會自動幫你處理,讓你的每台主機平均分散負載。這樣也可以達成高可用性 (High Availibility),如果你的其中一台機器有問題,其他主機還是可以持續運作,LB 也可以將流量傳到正常的主機。但是要做到 Autoscale,必須做到以下兩件事:
1. 把你的主機變成無狀態的 (Stateless)
既然你的主機要隨著流量變大時要自動擴充,也代表流量變小時要能夠自動縮減,就是主機會被刪除掉,那主機內的資料不就會跟著消失?沒錯,所以你的資料庫必須要往外面放,讓你的主機變成是無狀態的。例如你另外用一台主機專門放資料庫,或是乾脆直接用 Cloud SQL。讓你所有的主機,都往外部存取資料庫,主機就不存放任何資料了。
除了資料庫以外,你的設定檔如果經常會變動,或是有用戶會上傳檔案或圖片到主機上,這些儲存位置,你都要用程式把儲存位置導向外部,建議使用 Cloud Storage。這代表你的系統架構要改,不可以把所有資料都放在同一台上了。
2. 建立映像檔、執行個體範本和執行個體群組
這些是什麼東西?
按照 GCP 的邏輯,你不能把現有主機直接到 Load Balancer,Autoscaling 之所以能運作,你要建立一個執行個體群組 (Instance Group;簡稱 IG), 因為 IG 在擴充的時候,必須要知道你的主機長什麼樣子。
所以 IG 要讀取你的執行個體範本 (Instance Template) 當中,你所指定的映像檔 (Image),執行個體範本也會記錄主機規格、要開在哪一個 Region 或 Zone、哪一個 VPC 網路、Subnet、Disk 用哪一種、對外開放的 Port 要 HTTP 或 HTTPS、要不要有外部 IP 等。而映像檔可以想像成是燒光碟片的概念,針對你準備好的機器的開機磁碟 (Boot Disk) 燒成光碟,之後主機擴充都是拿這片光碟,安裝到每一台新的機器當中。如下圖:

資料來源:東東老師自行繪製
文章轉載自《東東GCP 教學》網站
📚 Cloud Load Balancer 相關文章
🔗 【東東老師 X 思想科技】建立 Load Balancer 的整體架構和步驟






