arrow_back

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

登录 加入
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

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

Lab 1 小时 universal_currency_alt 5 积分 show_chart 中级
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

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 Console」(開啟 Google 控制台) 按鈕
    • 剩餘時間
    • 必須在這個研究室中使用的暫時憑證
    • 完成這個研究室所需的其他資訊 (如有)
  2. 按一下「Open Google Console」(開啟 Google 控制台)。接著,研究室會啟動相關資源並開啟另一個分頁,當中會顯示「Sign in」(登入) 頁面。

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

    注意事項:如果頁面中顯示了「Choose an account」(選擇帳戶) 對話方塊,請按一下「Use Another Account」(使用其他帳戶)
  3. 如有必要,請複製「Lab Details」(研究室詳細資料) 面板中的使用者名稱,然後貼到「Sign in」(登入) 對話方塊。按一下「Next」(下一步)

  4. 複製「Lab Details」(研究室詳細資料) 面板中的密碼,然後貼到「Welcome」(歡迎使用) 對話方塊。按一下「Next」(下一步)

    重要注意事項:請務必使用左側面板中的憑證,而非 Google Cloud 技能重點加強的憑證。 注意事項:如果使用自己的 Google Cloud 帳戶來進行這個研究室,可能會產生額外費用。
  5. 按過後續的所有頁面:

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

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 的商標,其他公司和產品名稱則有可能是其關聯公司的商標。