GCP HTTP(S) Load Balancer 負載平衡依網址分流教學

GCP HTTP(S) Load Balancer 負載平衡依網址分流教學

在《GCP – Cloud Load Balancing 之分類與選擇》一文中,我們介紹了各種 GCP Load Balancer 的選擇標準,而這次將深入介紹 GCP HTTP(S) Load Balancer 這款負載平衡器。如果對 GCP Load Balancer 的種類及架構還不熟悉,可先閱讀《什麼是負載平衡?原理、6大 GCP 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 概念大家可以參考以下文章:《Internal HTTP(S) Load Balancing overview》。而如果針對負載平衡 GCP 有任何想詢問的內容,也都可以直接聯繫我們喔!

延伸閱讀:

什麼是負載平衡?原理、6大 GCP Load Balancer 完整介紹
[ GCP 教學] 打造彈性、快速且安全的雲端基本服務架構 – 負載平衡 Load Balancer 和 Instance Group
在 GCP Load Balancer 上設定 logging 以及 monitoring 功能 – TCP Load Balancer dashboard & Email 告警設定教學
如何透過 GCP HTTP(S) Load Balancing 來實現 HTTP Redirect HTTPS
GCP – Cloud Load Balancing 之分類與選擇

Cloud Ace 研討會主頁

發佈留言