arrow_back

搭配使用 HTTP 負載平衡器和 Cloud Armor

登录 加入
欢迎加入我们的社区,一起测试和分享您的知识!
done
学习 700 多个动手实验和课程并获得相关技能徽章

搭配使用 HTTP 負載平衡器和 Cloud Armor

实验 1 小时 universal_currency_alt 5 积分 show_chart 中级
info 此实验可能会提供 AI 工具来支持您学习。
欢迎加入我们的社区,一起测试和分享您的知识!
done
学习 700 多个动手实验和课程并获得相关技能徽章

GSP215

Google Cloud 自修研究室標誌

總覽

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 帳戶或專案,請勿用於本研究室,以免產生額外費用。

如何開始研究室及登入 Google Cloud 控制台

  1. 按一下「Start Lab」(開始研究室) 按鈕。如果研究室會產生費用,畫面中會出現選擇付款方式的彈出式視窗。左側的「Lab Details」窗格會顯示下列項目:

    • 「Open Google Cloud console」按鈕
    • 剩餘時間
    • 必須在這個研究室中使用的暫時憑證
    • 完成這個實驗室所需的其他資訊 (如有)
  2. 點選「Open Google Cloud console」;如果使用 Chrome 瀏覽器,也能按一下滑鼠右鍵,然後選取「在無痕式視窗中開啟連結」

    接著,實驗室會啟動相關資源並開啟另一個分頁,當中顯示「登入」頁面。

    提示:您可以在不同的視窗中並排開啟分頁。

    注意:如果頁面中顯示「選擇帳戶」對話方塊,請點選「使用其他帳戶」
  3. 如有必要,請將下方的 Username 貼到「登入」對話方塊。

    {{{user_0.username | "Username"}}}

    您也可以在「Lab Details」窗格找到 Username

  4. 點選「下一步」

  5. 複製下方的 Password,並貼到「歡迎使用」對話方塊。

    {{{user_0.password | "Password"}}}

    您也可以在「Lab Details」窗格找到 Password

  6. 點選「下一步」

    重要事項:請務必使用實驗室提供的憑證,而非自己的 Google Cloud 帳戶憑證。 注意:如果使用自己的 Google Cloud 帳戶來進行這個實驗室,可能會產生額外費用。
  7. 按過後續的所有頁面:

    • 接受條款及細則。
    • 由於這是臨時帳戶,請勿新增救援選項或雙重驗證機制。
    • 請勿申請免費試用。

Google Cloud 控制台稍後會在這個分頁開啟。

注意:如要查看列出 Google Cloud 產品和服務的選單,請點選左上角的「導覽選單」「導覽選單」圖示

工作 1:設定 HTTP 和健康狀態檢查防火牆規則

設定防火牆規則,允許傳送至後端的 HTTP 流量,以及來自 Google Cloud 健康狀態檢查工具的 TCP 流量。

建立 HTTP 防火牆規則

建立防火牆規則來允許 HTTP 流量前往後端。

  1. 前往 Cloud 控制台,依序點選「導覽選單」圖示 「導覽選單」圖示 >「虛擬私有雲網路」>「防火牆」

  2. 留意現有的 ICMP內部RDPSSH 防火牆規則。

    各項 Google Cloud 專案一開始時都有 default 網路和這些防火牆規則。

  3. 點選「Create Firewall Rule」

  4. 設定下方的值,其他屬性均保留預設值:

    屬性 值 (依指示輸入值或選取選項)
    名稱 default-allow-http
    網路 預設
    目標 指定的目標標記
    目標標記 http-server
    來源篩選器 IPv4 範圍
    來源 IPv4 範圍 0.0.0.0/0
    通訊協定和通訊埠 指定的通訊協定和通訊埠:勾選「TCP」並輸入 80

請務必在「來源 IPv4 範圍」欄位中加入 /0 來指定所有網路。

  1. 點選「建立」

建立健康狀態檢查防火牆規則

健康狀態檢查會判斷負載平衡器的哪些執行個體能接收新的連線。以 HTTP 負載平衡來說,如果對達到負載平衡的執行個體執行健康狀態檢查探測,這類要求是從位址範圍 130.211.0.0/2235.191.0.0/16 傳出。防火牆規則必須允許這類連線。

  1. 一樣在「防火牆政策」頁面,點選「Create Firewall Rule」

  2. 設定下方的值,其他屬性均保留預設值:

    屬性 值 (依指示輸入值或選取選項)
    名稱 default-allow-health-check
    網路 預設
    目標 指定的目標標記
    目標標記 http-server
    來源篩選器 IPv4 範圍
    來源 IPv4 範圍 130.211.0.0/2235.191.0.0/16
    通訊協定和通訊埠 指定的通訊協定和通訊埠:勾選「TCP」
    注意: 請務必逐一輸入兩個「來源 IPv4 範圍」,並在中間加入空格。
  3. 點選「建立」

點選「Check my progress」,確認目標已達成。 設定 HTTP 和健康狀態檢查防火牆規則

工作 2:設定執行個體範本並建立執行個體群組

代管執行個體群組會使用執行個體範本,以建立相同執行個體的群組。請運用這些範本建立 HTTP 負載平衡器的後端。

設定執行個體範本

執行個體範本是一種 API 資源,可用來建立 VM 執行個體和代管執行個體群組。執行個體範本會定義機器類型、開機磁碟映像檔、子網路、標籤和其他執行個體屬性。

請為 分別建立一個執行個體範本。

  1. 前往 Cloud 控制台,依序點選「導覽選單」圖示 「導覽選單」圖示 >「Compute Engine」>「執行個體範本」>「建立執行個體範本」

  2. 在「Name」部分,輸入 -template

  3. 在「位置」部分,選取「Global」

  4. 在「系列」部分,選取「E2」

  5. 在「機器類型」部分,選取「e2-micro」

  6. 點選「進階選項」。

  7. 點選「網路」。設定下方的值,其他屬性均保留預設值:

    屬性 值 (依指示輸入值或選取選項)
    網路標記 http-server
  8. 在「網路介面」下方點選預設值。設定下方的值,其他屬性均保留預設值:

    屬性 值 (依指示輸入值或選取選項)
    網路 預設
    子網路 預設

    點選「完成」

網路標記 http-server 能確保這些執行個體套用 HTTP健康狀態檢查防火牆規則。

  1. 點選「管理」分頁標籤。

  2. 在「中繼資料」下方,點選「+ 新增項目」並指定下列設定:

    startup-script-url gs://cloud-training/gcpnet/httplb/startup.sh

startup-script-url 能指定執行個體啟動時執行的指令碼。這個指令碼會安裝 Apache 並變更歡迎頁面,在頁面中納入用戶端 IP,以及 VM 執行個體的名稱、區域和可用區。歡迎查看指令碼內容

  1. 點選「建立」
  2. 等待執行個體範本建立完成。

接著複製 -template,為 subnet-b 建立另一個執行個體範本:

  1. 點選「-template」,接著按一下頂端的「+ 建立類似的項目」
  2. 在「Name」部分,輸入 -template
  3. 確認「位置」部分選取「Global」
  4. 點選「進階選項」。
  5. 點選「網路」
  6. 確認將 http-server 新增至網路標記
  7. 在「網路介面」部分,為「子網路」選取預設值「
  8. 點選「完成」
  9. 點選「建立」

建立代管執行個體群組

分別建立一個代管執行個體群組。

  1. 一樣在「Compute Engine」頁面,點選左選單中的「執行個體群組」

  2. 點選「建立執行個體群組」

  3. 設定下方的值,其他屬性均保留預設值:

    屬性 值 (依指示輸入值或選取選項)
    名稱 -mig (如有需要,可移除名稱中多餘的空格)
    執行個體範本 -template
    位置 多可用區
    區域
    執行個體數量下限 1
    執行個體數量上限 2
    「Autoscaling signals」> 點選下拉式選單 >「信號類型」 CPU 使用率
    目標 CPU 使用率 80,點選「完成」
    初始化期間 45

代管執行個體群組提供自動調度資源功能,可根據負載的增減,在代管執行個體群組中自動新增或移除執行個體。這項功能可協助應用程式妥善處理增加的流量,並在資源需求降低時節省成本。只要定義自動調度資源政策,自動配置器就會依據測得的負載量,自動調整資源配置。

  1. 點選「建立」

接著執行相同程序,為 -mig 建立第二個執行個體群組:

  1. 點選「建立執行個體群組」

  2. 設定下方的值,其他屬性均保留預設值:

    屬性 值 (依指示輸入值或選取選項)
    名稱 -mig
    執行個體範本 -template
    位置 多可用區
    區域
    執行個體數量下限 1
    執行個體數量上限 2
    「Autoscaling signals」> 點選下拉式選單 >「信號類型」 CPU 使用率
    目標 CPU 使用率 80,點選「完成」
    初始化期間 45
  3. 點選「建立」

點選「Check my progress」,確認目標已達成。 設定執行個體範本和執行個體群組

驗證後端

確認兩個區域中已建立 VM 執行個體,且都能存取 HTTP 網站。

  1. 一樣在「Compute Engine」頁面,點選左選單中的「VM 執行個體」

  2. 留意開頭為 -mig 和 -mig 的執行個體。

    這些執行個體屬於代管執行個體群組。

  3. 點選 -mig 執行個體的「外部 IP」

    畫面上會顯示「用戶端 IP」(您的 IP 位址)、「主機名稱」(開頭為 -mig) 和「伺服器位置」( 內的可用區)。

  4. 點選 -mig 執行個體的「外部 IP」

    畫面上會顯示「用戶端 IP」(您的 IP 位址)、「主機名稱」(開頭為 -mig) 和「伺服器位置」( 內的可用區)。

注意: 「主機名稱」和「伺服器位置」會識別 HTTP 負載平衡器傳送流量的位置。

工作 3:設定 HTTP 負載平衡器

設定 HTTP 負載平衡器,平衡兩個後端之間的流量 ( 中的 -mig 中的 -mig),如下方網路圖表所示:

說明負載平衡的網路圖表

開始設定

  1. 前往 Cloud 控制台,依序點選「導覽選單」圖示 「導覽選單」圖示 >「網路服務」>「負載平衡」

  2. 點選「建立負載平衡器」

  3. 在「Application Load Balancer HTTP(S)」下方,點選「下一步」。

  4. 在「公開或內部」部分選取「公開 (外部)」,接著點選「下一步」。

  5. 在「全域或單一區域部署」部分,選取「最適合全域工作負載」,接著點選「下一步」。

  6. 在「建立負載平衡器」部分,點選「設定」

  7. 將新 HTTP(S) 負載平衡器的「名稱」設為 http-lb

設定前端

主機與路徑規則會決定流量的導向方式。舉例來說,您可以將影片流量導向至其中一個後端,並將靜態內容流量導向至另一個後端。不過,您不會在本研究室中設定主機和路徑規則。

  1. 點選「前端設定」

  2. 指定下方的值,其他屬性均保留預設值:

    屬性 值 (依指示輸入值或選取選項)
    通訊協定 HTTP
    IP 版本 IPv4
    IP 位址 臨時
    通訊埠 80
  3. 點選「完成」

  4. 點選「新增前端 IP 和通訊埠」

  5. 指定下方的值,其他屬性均保留預設值:

    屬性 值 (依指示輸入值或選取選項)
    通訊協定 HTTP
    IP 版本 IPv6
    IP 位址 自動分配
    通訊埠 80
  6. 點選「完成」

HTTP(S) 負載平衡服務支援透過 IPv4 或 IPv6 位址傳輸用戶端流量。用戶端的 IPv6 要求會在全域負載平衡層終止,接著透過 IPv4 進行 Proxy 處理後,再傳送至後端。

設定後端

後端服務會將傳入流量導向至一或多個連接的後端。每個後端都含有執行個體群組,以及其他負載能力中繼資料。

  1. 點選「後端設定」

  2. 在「後端服務和後端值區」部分,點選「建立後端服務」

  3. 設定下方的值,其他屬性均保留預設值:

    屬性 值 (依指示選取選項)
    名稱 http-backend
    執行個體群組 -mig
    通訊埠編號 80
    平衡模式 速率
    每秒要求數上限 50
    頻寬 100

這項設定表示負載平衡器會試著將每個 -mig 執行個體的每秒要求數 (RPS),保持在 50 以下。

  1. 點選「完成」

  2. 點選「新增後端」

  3. 設定下方的值,其他屬性均保留預設值:

    屬性 值 (依指示選取選項)
    執行個體群組 -mig
    通訊埠編號 80
    平衡模式 使用率
    後端使用率上限 80
    頻寬 100

這項設定表示負載平衡器會試著將每個 -mig 執行個體的 CPU 使用率,保持在 80% 以下。

  1. 點選「完成」

  2. 在「健康狀態檢查」部分,選取「建立健康狀態檢查」

  3. 設定下方的值,其他屬性均保留預設值:

    屬性 值 (依指示選取選項)
    名稱 http-health-check
    通訊協定 TCP
    通訊埠 80

健康狀態檢查會判斷哪些執行個體能接收新的連線。這項 HTTP 健康狀態檢查會每 5 秒輪詢執行個體一次,並等待最多 5 秒來接收回應。如果成功兩次,就會判定為健康狀態良好;如果失敗兩次,則會判定為健康狀態不良。

  1. 點選「儲存」
  2. 勾選「啟用記錄功能」方塊。
  3. 將「取樣率」設為 1
  4. 點選「建立」即可建立後端服務。
  5. 點選「確定」

檢查並建立 HTTP 負載平衡器

  1. 點選「檢查並完成」
  2. 檢查「後端」和「前端」服務。
  3. 點選「建立」
  4. 等待負載平衡器建立完成。
  5. 按一下負載平衡器的名稱 (http-lb)。
  6. 請注意負載平衡器的 IPv4 和 IPv6 位址,您會在下一個工作中用到。這兩個 IP 位址分別為 [LB_IP_v4][LB_IP_v6]
注意:IPv6 位址是十六進制格式的位址。

點選「Check my progress」,確認目標已達成。 設定 HTTP 負載平衡器

工作 4:測試 HTTP 負載平衡器

為後端建立 HTTP 負載平衡器後,接著確認流量是否轉送至後端服務。

存取 HTTP 負載平衡器

在瀏覽器中開啟新分頁並前往 http://[LB_IP_v4],測試能否透過 IPv4 存取 HTTP 負載平衡器。請務必將負載平衡器的 IPv4 位址換成 [LB_IP_v4]

注意: 最多可能需要 5 分鐘才能存取 HTTP 負載平衡器。順利存取前,可能會出現 404 或 502 錯誤。請持續嘗試,直到看見其中一個後端頁面。 注意: 取決於您與 的距離,流量會轉送至 -mig-mig 執行個體。

如果您有本機 IPv6 位址,請前往 http://[LB_IP_v6] 試試 HTTP 負載平衡器的 IPv6 位址。請務必將負載平衡器的 IPv6 位址換成 [LB_IP_v6]

對 HTTP 負載平衡器進行壓力測試

使用 siege 建立新的 VM,以在 HTTP 負載平衡器上模擬負載。接著在負載偏高時,判斷兩個後端的流量是否達到平衡。

  1. 前往 Cloud 控制台,依序點選「導覽選單」圖示 「導覽選單」圖示 >「Compute Engine」>「VM 執行個體」

  2. 點選「建立執行個體」

  3. 設定下方的值,其他屬性均保留預設值:

    屬性 值 (依指示輸入值或選取選項)
    名稱 siege-vm
    區域
    可用區
    系列 E2

較近、離 較遠,因此流量應該只會轉送至 -mig,除非負載過高。

  1. 點選「建立」
  2. 等待 siege-vm 執行個體建立完成。
  3. 在「siege-vm」部分,點選「SSH」來啟動終端機並連線。
  4. 執行下列指令來安裝 siege:
sudo apt-get -y install siege
  1. 如要在環境變數中儲存 HTTP 負載平衡器的 IPv4 位址,請執行下列指令,並將 [LB_IP_v4] 換成 IPv4 位址:
export LB_IP=[LB_IP_v4]
  1. 執行下列指令來模擬負載:
siege -c 150 -t120s http://$LB_IP
  1. 前往 Cloud 控制台,依序點選「導覽選單」圖示 「導覽選單」圖示 >「網路服務」>「負載平衡」
  2. 點選「後端」
  3. 點選「http-backend」
  4. 前往「http-lb」
  5. 點選「監控」分頁標籤。
  6. 在北美地區和兩個後端之間,花 2 至 3 分鐘監控前端位置的總輸入流量

流量一開始應該只會導向至 -mig,但隨著 RPS 增加,流量也會導向至

這證明了流量預設只會轉送至距離最近的後端,但如果負載過高,流量也可能會分配至其他後端。

  1. 返回 siege-vmSSH 終端機。
  2. 按下 CTRL+C 鍵來停止 siege。

您會看見類似下方的輸出內容:

New configuration template added to /home/student-02-dd02c94b8808/.siege Run siege -C to view the current settings in that file { "transactions": 24729, "availability": 100.00, "elapsed_time": 119.07, "data_transferred": 3.77, "response_time": 0.66, "transaction_rate": 207.68, "throughput": 0.03, "concurrency": 137.64, "successful_transactions": 24729, "failed_transactions": 0, "longest_transaction": 10.45, "shortest_transaction": 0.03 }

工作 5:建立 siege-vm 拒絕清單

使用 Cloud Armor 將 siege-vm 列入拒絕清單,避免該執行個體存取 HTTP 負載平衡器。

建立安全性政策

建立 Cloud Armor 安全性政策,並對 siege-vm 設定拒絕清單規則。

  1. 前往 Cloud 控制台,依序點選「導覽選單」圖示 「導覽選單」圖示 >「Compute Engine」>「VM 執行個體」
  2. 記下 siege-vm外部 IP [SIEGE_IP]
注意: 如有用戶端外部 IP 位址試圖存取 HTTP 負載平衡器,有幾種方式可識別該位址。例如,您可以在 BigQuery 查看 VPC 流量記錄檔擷取的流量,判定是否有大量傳入要求。
  1. 前往 Cloud 控制台,依序點選「導覽選單」>「網路安全性」>「Cloud Armor 政策」

  2. 點選「建立政策」

  3. 設定下方的值,其他屬性均保留預設值:

    屬性 值 (依指示輸入值或選取選項)
    名稱 denylist-siege
    預設規則動作 允許
  4. 點選「下一步」

  5. 點選「新增規則」

  6. 設定下方的值,其他屬性均保留預設值:

    屬性 值 (依指示輸入值或選取選項)
    「條件」>「相符」 輸入 SIEGE_IP
    動作 拒絕
    回應碼 403 (禁止)
    優先順序 1000
  7. 點選「完成」

  8. 點選「下一步」

  9. 點選「新增目標」

  10. 在「Type」部分,選取「後端服務 (外部應用程式負載平衡器)」

  11. 在「目標」部分,選取「http-backend」

  12. 點選「建立政策」

注意: 您也可以將預設規則設為「拒絕」,只運用許可清單,或僅允許來自經授權使用者/IP 位址的流量。
  1. 等待政策建立完成,再執行下一步。

點選「Check my progress」,確認目標已達成。 建立 siege-vm 拒絕清單

驗證安全性政策

確認 siege-vm 無法存取 HTTP 負載平衡器。

  1. 返回 siege-vmSSH 終端機。
  2. 執行下列指令來存取負載平衡器:
curl http://$LB_IP

您會看見類似下方的輸出內容:

<!doctype html><meta charset="utf-8"><meta name=viewport content="width=device-width, initial-scale=1"><title>403</title>403 Forbidden 注意: 安全性政策可能需要幾分鐘才會生效。如果能存取後端,請持續嘗試,直到出現 403 禁止錯誤
  1. 在瀏覽器中開啟新分頁並前往 http://[LB_IP_v4]。請務必將負載平衡器的 IPv4 位址換成 [LB_IP_v4]
注意: 您可以透過瀏覽器存取 HTTP 負載平衡器,是因為預設規則允許流量,而您無法透過 siege-vm 存取,則是因為設定了拒絕規則。
  1. 返回 siege-vm 的 SSH 終端機,執行下列指令來模擬負載:
siege -c 150 -t120s http://$LB_IP

此指令不會產生任何輸出內容。

查看安全性政策記錄檔,確認流量是否也遭到封鎖。

  1. 前往控制台,依序點選「導覽選單」>「網路安全性」>「Cloud Armor 政策」
  2. 點選「denylist-siege」
  3. 點選「記錄」
  4. 點選「查看政策記錄檔」
  5. 在記錄頁面上,確認清除「查詢預覽」內的所有文字。在「應用程式負載平衡器」選取資源,接著依序點選「http-lb-forwarding-rule」>「http-lb」>「套用」
  6. 現在點選「執行查詢」
  7. 展開「查詢結果」內的記錄項目。
  8. 展開「httpRequest」

要求應該來自 siege-vm IP 位址。如果不是,請展開另一個記錄項目。

  1. 展開「jsonPayload」
  2. 展開「enforcedSecurityPolicy」
  3. 請注意「configuredAction」DENY,「名稱」則是 denylist-siege

查詢結果頁面

您可以運用 Cloud Armor 安全性政策建立的記錄檔,判斷流量來源、獲允許或遭到拒絕的時間點。

恭喜!

您設定了後端位於 的 HTTP 負載平衡器,接著運用 VM 對負載平衡器進行壓力測試,並透過 Cloud Armor 將該 VM 的 IP 位址列入拒絕清單。 您成功探索安全性政策記錄檔,識別流量遭封鎖的原因。

後續步驟/瞭解詳情

Google Cloud 教育訓練與認證

協助您瞭解如何充分運用 Google Cloud 的技術。我們的課程會介紹專業技能和最佳做法,讓您可以快速掌握要領並持續進修。我們提供從基本到進階等級的訓練課程,並有隨選、線上和虛擬課程等選項,方便您抽空參加。認證可協助您驗證及證明自己在 Google Cloud 技術方面的技能和專業知識。

使用手冊上次更新日期:2024 年 4 月 18 日

研究室上次測試日期:2024 年 4 月 18 日

Copyright 2024 Google LLC 保留所有權利。Google 和 Google 標誌是 Google LLC 的商標,其他公司和產品名稱則有可能是其關聯公司的商標。

此内容目前不可用

一旦可用,我们会通过电子邮件告知您

太好了!

一旦可用,我们会通过电子邮件告知您