[GCP 教學] GCP HTTP(S) Load Balancer 負載平衡依照網址分流操作

  • Post author:
  • Post category:GCP
[GCP 教學] GCP HTTP(S) Load Balancer 負載平衡依照網址分流操作
banner

上次的「GCP – Cloud Load Balancing 之分類與選擇」文章中,我們做了 GCP 各種 Load Balancer 的各種分類與用途,本文再深入介紹 GCP HTTP(S) Load Balancer。

GCP HTTP(S) Load Balancer 可以讓多個網域,或同個網域但不同路徑,都指向同一個Load Balancer,再依照URL去分流到不同目的地。詳情可看以下文章:

https://cloud.google.com/load-balancing/docs/url-map

因為分流是依照URL,而 Public DNS需額外去購買,所以為了節省箱關費用和設定上的方便,可用 Internal Load Balancer 和 Cloud DNS 的 Private Zone 來設定DNS,如果要看網頁是否生效,就在GCP同一個subnet來建立VM,透過內部IP去確認即可。

建立2台要分流的主機

先建立一台VM名為ap1,在zone a:

先建立一台VM名為ap1
先建立一台VM名為ap1

作業系統選擇 Ubuntu:

作業系統選擇 Ubuntu
作業系統選擇 Ubuntu

網路的部分,內部IP不用管,外部IP則是因為你要先讓 Ubuntu 安裝 Apache,所以先暫時用一下外部IP。

外部IP則是因為你要先讓 Ubuntu 安裝 Apache,所以先暫時用一下外部IP
外部IP則是因為你要先讓 Ubuntu 安裝 Apache,所以先暫時用一下外部IP

防火牆的部分,針對要開放的協定來勾選

防火牆針對要開放的協定來勾選
防火牆針對要開放的協定來勾選

第二台依此類推:

建建第二台VM ap2
建建第二台VM ap2

直接點選SSH就可以連線

直接點選SSH就可以連線
直接點選SSH就可以連線

更新可安裝的package列表

更新可安裝的package列表
更新可安裝的package列表

安裝apache

安裝apache
安裝apache

我們直接點 External IP就能打開網頁

直接點 External IP就能打開網頁
直接點 External IP就能打開網頁

但是如果看到這個

點擊時帶的是 HTTPS 的協定,所以會看到拒絕連線
點擊時帶的是 HTTPS 的協定,所以會看到拒絕連線

是因為你點擊時,它帶的是 HTTPS 的協定,你要手動把 URL中的”S”拿掉,例如

http://35.236.143.167/

這樣才能看到歡迎頁面:

看到Apache歡迎頁面
看到Apache歡迎頁面

接下來更改主頁內容,以利分辨目前造訪的VM是AP1還是AP2.

更改主頁內容
更改主頁內容

更改這裡:

改完重新整理頁面,會看到網頁更新了:

改完重新整理頁面,會看到網頁更新了
改完重新整理頁面,會看到網頁更新了

AP2也一樣:

AP2也一樣
AP2也一樣

如果把外部IP拿掉,也可以在GCP內建一台Linux VM使用CURL去內部IP確認:

如果把外部IP拿掉,也可以在GCP內建一台Linux VM使用CURL去內部IP確認
如果把外部IP拿掉,也可以在GCP內建一台Linux VM使用CURL去內部IP確認

建立 Cloud DNS Private Zone

接下來去 Cloud DNS

建立一個 Private Zone,在這裡你想要用什麼 Domain 都可以,我取名 aaronweb.com

Cloud DNS Private Zone
Cloud DNS Private Zone

接下來建立Record也很簡單,直接輸入主機名稱和對應的IP就好,真的跟外部DNS代管廠商的頁面差不多:

接下來建立Record也很簡單,直接輸入主機名稱和對應的IP就好
接下來建立Record也很簡單,直接輸入主機名稱和對應的IP就好

第二台的DNS

用一台內網的Windows VM去連連看。

AP1可以連:

AP1可以連
AP1可以連

AP2也可以連,超快就設好,簡單到我很驚訝!

AP2也可以連
AP2也可以連

建立 Instance Group

接下來我們要把VM建成 Unmanaged Instance Group:

接下來我們要把VM建成 Unmanaged Instance Group
接下來我們要把VM建成 Unmanaged Instance Group

另一個ap2也是,就不多放截圖。

另外有一個東西要先建,叫做 Name Port,也要在 instance group建,點擊Edit:

Name Port,也要在 instance group建
Name Port,也要在 instance group建

注意要展開隱藏選單,Add item:

注意要展開隱藏選單,Add item
注意要展開隱藏選單,Add item

Port Name取個簡單易懂的名字就好

Port Name取個簡單易懂的名字就好
Port Name取個簡單易懂的名字就好

ap2也照做

ap2也照做
ap2也照做

建立 Internal HTTP Load Balancer

接下來要建 Internal HTTP Load Balancer,碰到要建 Proxy-only subnet的要求,它是 Internal HTTP Load Balancer 特有的一個 proxy,它會依照 URL Map的描述來判斷進來的 request 要導向哪裡去,詳細文章可以看這裡:

https://cloud.google.com/load-balancing/docs/l7-internal/proxy-only-subnets

接下來要建 Internal Load Balance,碰到要建 Proxy-only subnet的要求
接下來要建 Internal Load Balance,碰到要建 Proxy-only subnet的要求

看一下現有的subnet,找一段不會重疊的IP Range:

看一下現有的subnet,找一段不會重疊的IP Range
看一下現有的subnet,找一段不會重疊的IP Range

建一段10.141.0.20/24:

建一段10.141.0.20/24

想說沒有重疊到就沒關係,但是:

因為default VPC Network佔了 10.120.0.0/9 非常大的IP Range,如果要避免重疊,乾脆把整個 VPC 直接從default轉custom

從default轉custom
從default轉custom

轉換VPC Network前的警告:

轉換VPC Network前的警告
轉換VPC Network前的警告

接下來建 Load Balancer:

接下來建 Load Balancer
接下來建 Load Balancer

因為是內部的,要選 Only between my VMs:

因為是內部的,要選 Only between my VMs
因為是內部的,要選 Only between my VMs

成功建立 proxy-subnet 了:

成功建立 proxy-subnet
成功建立 proxy-subnet

接下來進入後端,選擇 ig-ap1 這個instance group,來建立backend service

建立backend service
建立backend service

然後也要建立 Health Check:

建立 Health Check
建立 Health Check

確認後建立 Health Check:

確認後建立 Health Check
確認後建立 Health Check

第二個也是:

建立 Health Check
建立 Health Check

接下來的Routing Rules是分流的關鍵:

Routing Rules是分流的關鍵
Routing Rules是分流的關鍵

接著建立 Frontend:

接著建立 Frontend
接著建立 Frontend

建好之後,會取得Frontend IP,那我們再去Cloud DNS ,把原本指向 VM IP的記錄改成指向 Frontend IP。

把原本指向 VM IP的記錄改成指向 Frontend IP
把原本指向 VM IP的記錄改成指向 Frontend IP

變這樣
(PS.我建2個Frontend IP是為了其他用途,正常情況一個IP就好)

這樣就完成了!

測試分流效果

接下來測試,把 ap1和ap2的外部IP拿掉,然後用一台Windows VM,直接在瀏覽器輸入網址:

直接在瀏覽器輸入網址
直接在瀏覽器輸入網址

再確認第二台:

再確認第二台
再確認第二台

看到2台VM在Load Balance後面依照網址進行分流,這樣就代表 Load Balance 分流成功了。

以上是這次的分享,完整的 Internal HTTP(S) Load Balancer概念可以參考以下文章:

https://cloud.google.com/load-balancing/docs/l7-internal

Aaron Lee

超過7年的 Google Cloud 經驗,服務過上百家 Google Workspace 與 GCP 客戶,擔任多次研討會主講人與教育訓練講師,提供架構諮詢與技術支援,幫助各大企業上雲。