检查点
Configure HTTP and health check firewall rules
/ 25
Configure instance templates and instance group
/ 25
Configure the HTTP Load Balancer
/ 25
Blacklist the siege-vm
/ 25
搭配使用 HTTP 負載平衡器和 Cloud Armor
GSP215
總覽
Google 在自家遍布全球的網路邊緣服務點 (POP) 提供 Google Cloud HTTP(S) 負載平衡服務。導向至 HTTP(S) 負載平衡器的使用者流量會進入離使用者最近的 POP,接著透過 Google 的全球網路進行負載平衡,再傳至有足夠容量且距離最近的後端。
Cloud Armor IP 許可清單/拒絕清單可讓您在 Google Cloud 盡可能接近使用者和惡意流量的邊緣,允許或限制對方存取 HTTP(S) 負載平衡器。這有助於防止惡意使用者或流量消耗資源,或進入虛擬私有雲 (VPC) 網路。
在本研究室中,您會設定具有全域後端的 HTTP 負載平衡器,如下圖所示。接著您會對負載平衡器進行壓力測試,並透過 Cloud Armor 建立壓力測試 IP 拒絕清單。
目標
本研究室將說明如何執行下列工作:
- 建立 HTTP 和健康狀態檢查防火牆規則
- 設定兩個執行個體範本
- 建立兩個代管執行個體群組
- 設定支援 IPv4 和 IPv6 的 HTTP 負載平衡器
- 對 HTTP 負載平衡器進行壓力測試
- 建立 IP 位址拒絕清單,限制對 HTTP 負載平衡器的存取
設定和需求
點選「Start Lab」按鈕前的須知事項
請詳閱以下操作說明。研究室活動會計時,而且中途無法暫停。點選「Start Lab」 後就會開始計時,讓您瞭解有多少時間可以使用 Google Cloud 資源。
您將在真正的雲端環境中完成實作研究室活動,而不是在模擬或示範環境。為達此目的,我們會提供新的暫時憑證,讓您用來在研究室活動期間登入及存取 Google Cloud。
如要完成這個研究室活動,請先確認:
- 您可以使用標準的網際網路瀏覽器 (Chrome 瀏覽器為佳)。
- 是時候完成研究室活動了!別忘了,活動一開始將無法暫停。
如何開始研究室及登入 Google Cloud 控制台
-
按一下「Start Lab」(開始研究室) 按鈕。如果研究室會產生費用,畫面中會出現選擇付款方式的彈出式視窗。左側的「Lab Details」窗格會顯示下列項目:
- 「Open Google Cloud console」按鈕
- 剩餘時間
- 必須在這個研究室中使用的暫時憑證
- 完成這個實驗室所需的其他資訊 (如有)
-
點選「Open Google Cloud console」;如果使用 Chrome 瀏覽器,也能按一下滑鼠右鍵,然後選取「在無痕式視窗中開啟連結」。
接著,實驗室會啟動相關資源並開啟另一個分頁,當中顯示「登入」頁面。
提示:您可以在不同的視窗中並排開啟分頁。
注意:如果頁面中顯示「選擇帳戶」對話方塊,請點選「使用其他帳戶」。 -
如有必要,請將下方的 Username 貼到「登入」對話方塊。
{{{user_0.username | "Username"}}} 您也可以在「Lab Details」窗格找到 Username。
-
點選「下一步」。
-
複製下方的 Password,並貼到「歡迎使用」對話方塊。
{{{user_0.password | "Password"}}} 您也可以在「Lab Details」窗格找到 Password。
-
點選「下一步」。
重要事項:請務必使用實驗室提供的憑證,而非自己的 Google Cloud 帳戶憑證。 注意:如果使用自己的 Google Cloud 帳戶來進行這個實驗室,可能會產生額外費用。 -
按過後續的所有頁面:
- 接受條款及細則。
- 由於這是臨時帳戶,請勿新增救援選項或雙重驗證機制。
- 請勿申請免費試用。
Google Cloud 控制台稍後會在這個分頁開啟。
工作 1:設定 HTTP 和健康狀態檢查防火牆規則
設定防火牆規則,允許傳送至後端的 HTTP 流量,以及來自 Google Cloud 健康狀態檢查工具的 TCP 流量。
建立 HTTP 防火牆規則
建立防火牆規則來允許 HTTP 流量前往後端。
-
前往 Cloud 控制台,依序點選「導覽選單」圖示 >「虛擬私有雲網路」>「防火牆」。
-
留意現有的 ICMP、內部、RDP 和 SSH 防火牆規則。
各項 Google Cloud 專案一開始時都有 default 網路和這些防火牆規則。
-
點選「Create Firewall Rule」。
-
設定下方的值,其他屬性均保留預設值:
屬性 值 (依指示輸入值或選取選項) 名稱 default-allow-http 網路 預設 目標 指定的目標標記 目標標記 http-server 來源篩選器 IPv4 範圍 來源 IPv4 範圍 0.0.0.0/0 通訊協定和通訊埠 指定的通訊協定和通訊埠:勾選「TCP」並輸入 80
請務必在「來源 IPv4 範圍」欄位中加入 /0 來指定所有網路。
- 點選「建立」。
建立健康狀態檢查防火牆規則
健康狀態檢查會判斷負載平衡器的哪些執行個體能接收新的連線。以 HTTP 負載平衡來說,如果對達到負載平衡的執行個體執行健康狀態檢查探測,這類要求是從位址範圍 130.211.0.0/22
和 35.191.0.0/16
傳出。防火牆規則必須允許這類連線。
-
一樣在「防火牆政策」頁面,點選「Create Firewall Rule」。
-
設定下方的值,其他屬性均保留預設值:
屬性 值 (依指示輸入值或選取選項) 名稱 default-allow-health-check 網路 預設 目標 指定的目標標記 目標標記 http-server 來源篩選器 IPv4 範圍 來源 IPv4 範圍 130.211.0.0/22
和35.191.0.0/16
通訊協定和通訊埠 指定的通訊協定和通訊埠:勾選「TCP」 注意: 請務必逐一輸入兩個「來源 IPv4 範圍」,並在中間加入空格。 -
點選「建立」。
點選「Check my progress」,確認目標已達成。
工作 2:設定執行個體範本並建立執行個體群組
代管執行個體群組會使用執行個體範本,以建立相同執行個體的群組。請運用這些範本建立 HTTP 負載平衡器的後端。
設定執行個體範本
執行個體範本是一種 API 資源,可用來建立 VM 執行個體和代管執行個體群組。執行個體範本會定義機器類型、開機磁碟映像檔、子網路、標籤和其他執行個體屬性。
請為
-
前往 Cloud 控制台,依序點選「導覽選單」圖示 >「Compute Engine」>「執行個體範本」>「建立執行個體範本」。
-
在「Name」部分,輸入
-template。 -
在「位置」部分,選取「Global」。
-
在「系列」部分,選取「E2」。
-
在「機器類型」部分,選取「e2-micro」。
-
點選「進階選項」。
-
點選「網路」。設定下方的值,其他屬性均保留預設值:
屬性 值 (依指示輸入值或選取選項) 網路標記 http-server -
在「網路介面」下方點選預設值。設定下方的值,其他屬性均保留預設值:
屬性 值 (依指示輸入值或選取選項) 網路 預設 子網路 預設 點選「完成」。
網路標記 http-server 能確保這些執行個體套用 HTTP 和健康狀態檢查防火牆規則。
-
點選「管理」分頁標籤。
-
在「中繼資料」下方,點選「+ 新增項目」並指定下列設定:
鍵 值 startup-script-url gs://cloud-training/gcpnet/httplb/startup.sh
startup-script-url
能指定執行個體啟動時執行的指令碼。這個指令碼會安裝 Apache 並變更歡迎頁面,在頁面中納入用戶端 IP,以及 VM 執行個體的名稱、區域和可用區。歡迎查看指令碼內容。
- 點選「建立」。
- 等待執行個體範本建立完成。
接著複製
- 點選「
-template」,接著按一下頂端的「+ 建立類似的項目」。 - 在「Name」部分,輸入
-template。 - 確認「位置」部分選取「Global」。
- 點選「進階選項」。
- 點選「網路」。
- 確認將 http-server 新增至網路標記。
- 在「網路介面」部分,為「子網路」選取預設值「
」。 - 點選「完成」。
- 點選「建立」。
建立代管執行個體群組
在
-
一樣在「Compute Engine」頁面,點選左選單中的「執行個體群組」。
-
點選「建立執行個體群組」。
-
設定下方的值,其他屬性均保留預設值:
屬性 值 (依指示輸入值或選取選項) 名稱 -mig (如有需要,可移除名稱中多餘的空格) 執行個體範本 -template 位置 多可用區 區域 執行個體數量下限 1 執行個體數量上限 2 「Autoscaling signals」> 點選下拉式選單 >「信號類型」 CPU 使用率 目標 CPU 使用率 80,點選「完成」。 初始化期間 45
代管執行個體群組提供自動調度資源功能,可根據負載的增減,在代管執行個體群組中自動新增或移除執行個體。這項功能可協助應用程式妥善處理增加的流量,並在資源需求降低時節省成本。只要定義自動調度資源政策,自動配置器就會依據測得的負載量,自動調整資源配置。
- 點選「建立」。
接著執行相同程序,為
-
點選「建立執行個體群組」。
-
設定下方的值,其他屬性均保留預設值:
屬性 值 (依指示輸入值或選取選項) 名稱 -mig 執行個體範本 -template 位置 多可用區 區域 執行個體數量下限 1 執行個體數量上限 2 「Autoscaling signals」> 點選下拉式選單 >「信號類型」 CPU 使用率 目標 CPU 使用率 80,點選「完成」。 初始化期間 45 -
點選「建立」。
點選「Check my progress」,確認目標已達成。
驗證後端
確認兩個區域中已建立 VM 執行個體,且都能存取 HTTP 網站。
-
一樣在「Compute Engine」頁面,點選左選單中的「VM 執行個體」。
-
留意開頭為
-mig 和 -mig 的執行個體。 這些執行個體屬於代管執行個體群組。
-
點選
-mig 執行個體的「外部 IP」。 畫面上會顯示「用戶端 IP」(您的 IP 位址)、「主機名稱」(開頭為
-mig) 和「伺服器位置」( 內的可用區)。 -
點選
-mig 執行個體的「外部 IP」。 畫面上會顯示「用戶端 IP」(您的 IP 位址)、「主機名稱」(開頭為
-mig) 和「伺服器位置」( 內的可用區)。
工作 3:設定 HTTP 負載平衡器
設定 HTTP 負載平衡器,平衡兩個後端之間的流量 (
開始設定
-
前往 Cloud 控制台,依序點選「導覽選單」圖示 >「網路服務」>「負載平衡」。
-
點選「建立負載平衡器」。
-
在「Application Load Balancer HTTP(S)」下方,點選「下一步」。
-
在「公開或內部」部分選取「公開 (外部)」,接著點選「下一步」。
-
在「全域或單一區域部署」部分,選取「最適合全域工作負載」,接著點選「下一步」。
-
在「建立負載平衡器」部分,點選「設定」。
-
將新 HTTP(S) 負載平衡器的「名稱」設為
http-lb
。
設定前端
主機與路徑規則會決定流量的導向方式。舉例來說,您可以將影片流量導向至其中一個後端,並將靜態內容流量導向至另一個後端。不過,您不會在本研究室中設定主機和路徑規則。
-
點選「前端設定」。
-
指定下方的值,其他屬性均保留預設值:
屬性 值 (依指示輸入值或選取選項) 通訊協定 HTTP IP 版本 IPv4 IP 位址 臨時 通訊埠 80 -
點選「完成」。
-
點選「新增前端 IP 和通訊埠」。
-
指定下方的值,其他屬性均保留預設值:
屬性 值 (依指示輸入值或選取選項) 通訊協定 HTTP IP 版本 IPv6 IP 位址 自動分配 通訊埠 80 -
點選「完成」。
HTTP(S) 負載平衡服務支援透過 IPv4 或 IPv6 位址傳輸用戶端流量。用戶端的 IPv6 要求會在全域負載平衡層終止,接著透過 IPv4 進行 Proxy 處理後,再傳送至後端。
設定後端
後端服務會將傳入流量導向至一或多個連接的後端。每個後端都含有執行個體群組,以及其他負載能力中繼資料。
-
點選「後端設定」。
-
在「後端服務和後端值區」部分,點選「建立後端服務」。
-
設定下方的值,其他屬性均保留預設值:
屬性 值 (依指示選取選項) 名稱 http-backend 執行個體群組 -mig 通訊埠編號 80 平衡模式 速率 每秒要求數上限 50 頻寬 100
這項設定表示負載平衡器會試著將每個
-
點選「完成」。
-
點選「新增後端」。
-
設定下方的值,其他屬性均保留預設值:
屬性 值 (依指示選取選項) 執行個體群組 -mig 通訊埠編號 80 平衡模式 使用率 後端使用率上限 80 頻寬 100
這項設定表示負載平衡器會試著將每個
-
點選「完成」。
-
在「健康狀態檢查」部分,選取「建立健康狀態檢查」。
-
設定下方的值,其他屬性均保留預設值:
屬性 值 (依指示選取選項) 名稱 http-health-check 通訊協定 TCP 通訊埠 80
健康狀態檢查會判斷哪些執行個體能接收新的連線。這項 HTTP 健康狀態檢查會每 5 秒輪詢執行個體一次,並等待最多 5 秒來接收回應。如果成功兩次,就會判定為健康狀態良好;如果失敗兩次,則會判定為健康狀態不良。
- 點選「儲存」。
- 勾選「啟用記錄功能」方塊。
- 將「取樣率」設為
1
。 - 點選「建立」即可建立後端服務。
- 點選「確定」。
檢查並建立 HTTP 負載平衡器
- 點選「檢查並完成」。
- 檢查「後端」和「前端」服務。
- 點選「建立」。
- 等待負載平衡器建立完成。
- 按一下負載平衡器的名稱 (http-lb)。
- 請注意負載平衡器的 IPv4 和 IPv6 位址,您會在下一個工作中用到。這兩個 IP 位址分別為
[LB_IP_v4]
和[LB_IP_v6]
。
點選「Check my progress」,確認目標已達成。
工作 4:測試 HTTP 負載平衡器
為後端建立 HTTP 負載平衡器後,接著確認流量是否轉送至後端服務。
存取 HTTP 負載平衡器
在瀏覽器中開啟新分頁並前往 http://[LB_IP_v4]
,測試能否透過 IPv4 存取 HTTP 負載平衡器。請務必將負載平衡器的 IPv4 位址換成 [LB_IP_v4]
。
如果您有本機 IPv6 位址,請前往 http://[LB_IP_v6]
試試 HTTP 負載平衡器的 IPv6 位址。請務必將負載平衡器的 IPv6 位址換成 [LB_IP_v6]
。
對 HTTP 負載平衡器進行壓力測試
使用 siege
建立新的 VM,以在 HTTP 負載平衡器上模擬負載。接著在負載偏高時,判斷兩個後端的流量是否達到平衡。
-
前往 Cloud 控制台,依序點選「導覽選單」圖示 >「Compute Engine」>「VM 執行個體」。
-
點選「建立執行個體」。
-
設定下方的值,其他屬性均保留預設值:
屬性 值 (依指示輸入值或選取選項) 名稱 siege-vm 區域 可用區 系列 E2
- 點選「建立」。
- 等待 siege-vm 執行個體建立完成。
- 在「siege-vm」部分,點選「SSH」來啟動終端機並連線。
- 執行下列指令來安裝 siege:
- 如要在環境變數中儲存 HTTP 負載平衡器的 IPv4 位址,請執行下列指令,並將
[LB_IP_v4]
換成 IPv4 位址:
- 執行下列指令來模擬負載:
- 前往 Cloud 控制台,依序點選「導覽選單」圖示 >「網路服務」>「負載平衡」。
- 點選「後端」。
- 點選「http-backend」。
- 前往「http-lb」。
- 點選「監控」分頁標籤。
- 在北美地區和兩個後端之間,花 2 至 3 分鐘監控前端位置的總輸入流量。
流量一開始應該只會導向至
這證明了流量預設只會轉送至距離最近的後端,但如果負載過高,流量也可能會分配至其他後端。
- 返回 siege-vm 的 SSH 終端機。
- 按下 CTRL+C 鍵來停止 siege。
您會看見類似下方的輸出內容:
工作 5:建立 siege-vm 拒絕清單
使用 Cloud Armor 將 siege-vm 列入拒絕清單,避免該執行個體存取 HTTP 負載平衡器。
建立安全性政策
建立 Cloud Armor 安全性政策,並對 siege-vm 設定拒絕清單規則。
- 前往 Cloud 控制台,依序點選「導覽選單」圖示 >「Compute Engine」>「VM 執行個體」。
- 記下 siege-vm 的外部 IP
[SIEGE_IP]
。
-
前往 Cloud 控制台,依序點選「導覽選單」>「網路安全性」>「Cloud Armor 政策」。
-
點選「建立政策」。
-
設定下方的值,其他屬性均保留預設值:
屬性 值 (依指示輸入值或選取選項) 名稱 denylist-siege 預設規則動作 允許 -
點選「下一步」。
-
點選「新增規則」。
-
設定下方的值,其他屬性均保留預設值:
屬性 值 (依指示輸入值或選取選項) 「條件」>「相符」 輸入 SIEGE_IP 動作 拒絕 回應碼 403 (禁止) 優先順序 1000 -
點選「完成」。
-
點選「下一步」。
-
點選「新增目標」。
-
在「Type」部分,選取「後端服務 (外部應用程式負載平衡器)」。
-
在「目標」部分,選取「http-backend」。
-
點選「建立政策」。
- 等待政策建立完成,再執行下一步。
點選「Check my progress」,確認目標已達成。
驗證安全性政策
確認 siege-vm 無法存取 HTTP 負載平衡器。
- 返回 siege-vm 的 SSH 終端機。
- 執行下列指令來存取負載平衡器:
您會看見類似下方的輸出內容:
- 在瀏覽器中開啟新分頁並前往
http://[LB_IP_v4]
。請務必將負載平衡器的 IPv4 位址換成[LB_IP_v4]
。
- 返回 siege-vm 的 SSH 終端機,執行下列指令來模擬負載:
此指令不會產生任何輸出內容。
查看安全性政策記錄檔,確認流量是否也遭到封鎖。
- 前往控制台,依序點選「導覽選單」>「網路安全性」>「Cloud Armor 政策」。
- 點選「denylist-siege」。
- 點選「記錄」。
- 點選「查看政策記錄檔」。
- 在記錄頁面上,確認清除「查詢預覽」內的所有文字。在「應用程式負載平衡器」選取資源,接著依序點選「http-lb-forwarding-rule」>「http-lb」>「套用」。
- 現在點選「執行查詢」。
- 展開「查詢結果」內的記錄項目。
- 展開「httpRequest」。
要求應該來自 siege-vm IP 位址。如果不是,請展開另一個記錄項目。
- 展開「jsonPayload」。
- 展開「enforcedSecurityPolicy」。
- 請注意「configuredAction」是
DENY
,「名稱」則是denylist-siege
。
您可以運用 Cloud Armor 安全性政策建立的記錄檔,判斷流量來源、獲允許或遭到拒絕的時間點。
恭喜!
您設定了後端位於
後續步驟/瞭解詳情
-
如要瞭解 Cloud Armor 基本概念,請參閱 Cloud Armor 說明文件。
-
如要深入瞭解負載平衡,請參閱 Load Balancing 說明文件。
Google Cloud 教育訓練與認證
協助您瞭解如何充分運用 Google Cloud 的技術。我們的課程會介紹專業技能和最佳做法,讓您可以快速掌握要領並持續進修。我們提供從基本到進階等級的訓練課程,並有隨選、線上和虛擬課程等選項,方便您抽空參加。認證可協助您驗證及證明自己在 Google Cloud 技術方面的技能和專業知識。
使用手冊上次更新日期:2024 年 4 月 18 日
研究室上次測試日期:2024 年 4 月 18 日
Copyright 2024 Google LLC 保留所有權利。Google 和 Google 標誌是 Google LLC 的商標,其他公司和產品名稱則有可能是其關聯公司的商標。