在 Compute Engine 中,以全球為範圍自動調度網路服務的資源

本教學課程說明如何透過可依據容量需求自動調整資源配置的地區性 Compute Engine代管執行個體群組,設定全球通用的網路服務。 您可以使用本教學課程中顯示的技術,在 Compute Engine 上實作自己的全球分散式可擴充專案。

目標

  • 部署多個啟用自動調度資源的地區性 Compute Engine 代管執行個體群組。
  • 建立跨地區負載平衡器。
  • 從世界上各個不同地區產生測試流量。
  • 使用 Google Cloud 控制台,以視覺化方式呈現負載平衡器如何轉送要求,以及執行個體群組如何自動調度資源來滿足需求。

費用

本教學課程使用 Google Cloud 的計費元件,包括:

  • Compute Engine

事前準備

  1. 在 Google Cloud 控制台的專案選擇器頁面中,選取或建立 Google Cloud 專案。

    選取或建立專案所需的角色

    • 選取專案:選取專案時,不需要具備特定 IAM 角色,只要您在專案中獲派角色,即可選取該專案。
    • 建立專案:如要建立專案,您需要「專案建立者」角色 (roles/resourcemanager.projectCreator),其中包含 resourcemanager.projects.create 權限。瞭解如何授予角色。

    前往專案選取器

  2. 確認專案已啟用計費功能 Google Cloud 。

  3. 如果尚未啟用,請啟用 Compute Engine API。

    啟用 API 時所需的角色

    如要啟用 API,您必須具備 serviceusage.services.enable 權限。如果您建立了專案,可能已透過「擁有者」角色 (roles/owner) 取得這項權限。否則,您可以透過「服務使用情形管理員」角色 (roles/serviceusage.serviceUsageAdmin) 取得這項權限。瞭解如何授予角色。

    啟用 API

應用程式架構

應用程式包含以下 Compute Engine 元件:

  1. 執行個體範本:這類範本是用於在執行個體群組中建立各個執行個體。
  2. 執行個體群組:多個執行個體群組,會根據連入流量自動調度資源。
  3. 負載平衡器:HTTP 負載平衡器,會將流量分配至所有執行個體群組。
  4. 執行個體:多個測試執行個體,會從全球各地產生測試流量。

系統架構圖表,顯示內含多個地區性執行個體群組的負載平衡器

設定網路服務

建立執行個體群組

主控台

  1. 建立執行個體群組網路。

    1. 前往 Google Cloud 控制台的「VPC Networks」(虛擬私有雲網路) 頁面。

      前往「VPC networks」(虛擬私有雲網路)

    2. 按一下「建立虛擬私有雲網路」。

    3. 將「Name」(名稱) 設為 fortressnet。

    4. 將「Subnet creation mode」(子網路建立模式) 設為 [Automatic] (自動)。

    5. 按一下頁面底部的 [建立]。

  2. 建立網路防火牆規則。這項規則會允許所有傳送至執行個體的 HTTP 要求。

    1. 前往 Google Cloud 控制台的「Firewall rules」(防火牆規則) 頁面。

      前往「防火牆規則」

    2. 按一下「建立防火牆規則」。

    3. 將「Name」(名稱) 設為 fortressnet-allow-http。

    4. 在「網路」中選取 fortressnet。

    5. 在「目標」部分,選取 All instances in the network。

    6. 將「Source IPv4 ranges」(來源 IPv4 範圍) 設為 0.0.0.0/0。

    7. 在「Protocols and ports」(通訊協定和通訊埠) 中選擇「Specified protocols and ports」(指定的通訊協定和通訊埠),然後選取「tcp」核取方塊並輸入 80。

    8. 點選「建立」。

  3. 建立執行個體範本,並在其中加入開機指令碼,以便在每個執行個體上啟動簡易 Apache 網路伺服器。

    1. 前往 Google Cloud 控制台的「Instance templates」(執行個體範本) 頁面。

      前往「Instance templates」(執行個體範本)

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

    3. 將「Name」(名稱) 設為 fort-template。

    4. 在「機器設定」部分,選取 e2-micro (2 個 vCPU,1 GB 記憶體)。

    5. 在「Advanced options」(進階選項) 專區中,展開「Networking」(網路),然後執行下列操作:

      1. 在「網路介面」部分,展開要編輯的網路介面。
      2. 在「Network」(網路) 中選取 fortressnet。
    6. 在「管理」部分,為「自動化」輸入下列「開機指令碼」:

      apt update && apt -y install apache2
      

    7. 點選「建立」。

  4. 利用執行個體範本建立多個地區性代管執行個體群組,並對各個執行個體群組設定自動調度資源。

    1. 前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。

      前往「Instance groups」(執行個體群組)

    2. 按一下「建立執行個體群組」,建立新的代管執行個體群組。

    3. 選取「New managed instance group (stateless)」(新增代管執行個體群組 (無狀態))。

    4. 將「Name」(名稱) 設為 us-central1-pool。

    5. 在「Instance template」(執行個體範本) 中選取 fort-template。

    6. 在「位置」部分,選取「多個區域」。

    7. 在「區域」部分,選取 us-central1。在「可用區」部分,保留選取的預先定義值。

    8. 在「Autoscaling mode」(自動調度資源模式),選取「On: add and remove instances to the group」(開啟:在群組中新增和移除執行個體)。

    9. 將「Minimum number of instances」(執行個體數量下限) 設為 1。

    10. 將「Maximum number of instances」(執行個體數量上限) 設為 5。

    11. 在「自動調度資源信號」部分,編輯預設選取項目 (CPU 使用率),然後將「信號類型」設為「HTTP 負載平衡使用率」。

    12. 將「目標 HTTP 負載平衡使用率」設為 80。

    13. 按一下「完成」。

    14. 點選「建立」。對話方塊會顯示訊息,指出您還必須將執行個體群組指派至 HTTP 負載平衡器的後端服務。

    15. 在確認對話方塊中,按一下「確認」。建立所有執行個體群組後,即可設定負載平衡器。

    16. 重複上述步驟,再建立兩個執行個體群組,並進行下列變更:

      • 將另一個群組的「Name」(名稱) 設為 europe-west1-pool,且「Region」(地區) 設為 europe-west1。
      • 將其中一個群組的「Name」(名稱) 設為 asia-east1-pool,且「Region」(地區) 設為 asia-east1。
  5. (選用) 確認執行個體健康狀態良好,且正在處理 HTTP 流量。測試一或多個執行個體的外部 IP 位址。請稍候片刻,等待執行個體完成啟動程序。

    1. 前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面。

      前往 VM 執行個體

    2. 確認每個執行中的執行個體,在執行個體群組名稱旁的「狀態」欄中都有綠色勾號。

    3. 複製執行個體的「外部 IP」,並貼到網路瀏覽器中。

    瀏覽器應該會顯示「Apache2 Debian Default Page」(Apache2 Debian 預設頁面) 網頁。

    如果您並未看到上述內容,請稍等幾分鐘後再試一次。

gcloud

  1. 建立執行個體群組網路。

    gcloud compute networks create fortressnet --subnet-mode auto
    
  2. 建立網路防火牆規則。這項規則會允許所有傳送至執行個體的 HTTP 要求。

    gcloud compute firewall-rules create fortressnet-allow-http \
        --network fortressnet \
        --allow tcp:80
    
  3. 建立執行個體範本,並在其中加入開機指令碼,以便在每個執行個體上啟動簡易 Apache 網路伺服器。

    gcloud compute instance-templates create fort-template \
        --machine-type e2-micro \
        --network fortressnet \
        --metadata startup-script='apt update && apt -y install apache2'
    
  4. 利用執行個體範本建立多個地區性代管執行個體群組,並對各個執行個體群組設定自動調度資源。

    gcloud compute instance-groups managed create us-central1-pool \
        --region us-central1 \
        --template fort-template \
        --size 1
    gcloud compute instance-groups managed set-autoscaling us-central1-pool \
        --region us-central1 \
        --min-num-replicas 1 \
        --max-num-replicas 5 \
        --scale-based-on-load-balancing \
        --target-load-balancing-utilization .8
    
    gcloud compute instance-groups managed create europe-west1-pool \
        --region europe-west1 \
        --template fort-template \
        --size 1
    gcloud compute instance-groups managed set-autoscaling europe-west1-pool \
        --region europe-west1 \
        --min-num-replicas 1 \
        --max-num-replicas 5 \
        --scale-based-on-load-balancing \
        --target-load-balancing-utilization .8
    
    gcloud compute instance-groups managed create asia-east1-pool \
        --region asia-east1 \
        --template fort-template \
        --size 1
    gcloud compute instance-groups managed set-autoscaling asia-east1-pool \
        --region asia-east1 \
        --min-num-replicas 1 \
        --max-num-replicas 5 \
        --scale-based-on-load-balancing \
        --target-load-balancing-utilization .8
    
  5. (選用) 確認執行個體健康狀態良好,且正在處理 HTTP 流量。 測試一或多個執行個體的外部 IP 位址。請稍候片刻,等待執行個體完成啟動程序。

    1. 列出執行個體。

      gcloud compute instances list
      

    2. 在 STATUS 一欄下方,確認執行個體處於 RUNNING 狀態。

    3. 如要檢查執行個體,請在 EXTERNAL_IP 欄下方查詢執行個體的 IP 位址。

      curl http://EXTERNAL_IP | head
      

    您應該會看到一些 HTML 文字,包括 <title>Apache2 Debian Default Page: It works</title> 這行。

    如果您並未看到上述內容,請稍等幾分鐘後再試一次。

設定負載平衡器

負載平衡器會將用戶端要求分配至多個後端。

控制台

選取負載平衡器類型

  1. 前往 Google Cloud 控制台的「Load balancing」(負載平衡) 頁面。

    前往「Load balancing」(負載平衡)

  2. 按一下「Create load balancer」(建立負載平衡器)。
  3. 將「Type of load balancer」(負載平衡器類型) 設為「Application Load Balancer (HTTP/HTTPS)」(應用程式負載平衡器 (HTTP/HTTPS)),然後按一下「Next」(下一步)。
  4. 將「Public facing or internal」(公開或內部) 設為「Public facing (external)」(公開 (外部)),然後按一下「Next」(下一步)。
  5. 將「Global or single region deployment」(全域或單一區域部署) 設為「Best for global workloads」(最適合全域工作負載),然後按一下「Next」(下一步)。
  6. 在「負載平衡器代別」部分,選取「全域外部應用程式負載平衡器」,然後點選「下一步」。
  7. 按一下 [設定]。

基本設定

  1. 將「Load balancer name」(負載平衡器名稱) 設為 fortressnet-balancer。

後端設定

  1. 在「建立全域外部應用程式負載平衡器」頁面,點選「後端設定」。
  2. 在「建立或選取後端服務和後端 bucket」下拉式選單中,依序選取「後端服務」和「建立後端服務」。 您應該會看到「建立後端服務」對話方塊。
  3. 將後端服務的「名稱」設為 fortressnet-backend-service。
  4. 在「New backend」(新增後端) 對話方塊下方,將「Instance group」(執行個體群組) 設為「asia-east1-pool」。
  5. 「Balancing mode」(平衡模式) 請選取 [Rate] (速率)。
  6. 將「每秒要求數上限」設為每個執行個體 100 RPS。
  7. 按一下「完成」。
  8. 點選「新增後端」。
  9. 在「New backend」(新增後端) 對話方塊下方,將「Instance group」(執行個體群組) 設為「europe-west1-pool」。
  10. 「Balancing mode」(平衡模式) 請選取 [Rate] (速率)。
  11. 將「每秒要求數上限」設為每個執行個體 100 RPS。
  12. 按一下「完成」。
  13. 點選「新增後端」。
  14. 在「New backend」(新增後端) 對話方塊下方,將「Instance group」(執行個體群組) 設為「us-central1-pool」。
  15. 「Balancing mode」(平衡模式) 請選取 [Rate] (速率)。
  16. 將「每秒要求數上限」設為每個執行個體 100 RPS。
  17. 按一下「完成」。
  18. 在「健康狀態檢查」下方,選取 [建立健康狀態檢查]。
  19. 將「Name」(名稱) 設為 http-basic-check。
  20. 在「Protocol」(通訊協定) 中選取 HTTP。
  21. 將「Port」(通訊埠) 設為 80。
  22. 按一下 [儲存並繼續]。
  23. 點選「建立」。

主機與路徑規則

  1. 在「建立全域外部應用程式負載平衡器」頁面的左側面板中,按一下「主機和路徑規則」。
    在這個範例中,由於所有流量都會套用預設規則,因此不需要設定任何主機或路徑規則。因此,我們可以接受預先填入的預設值。

前端設定

  1. 在「建立全域外部應用程式負載平衡器」頁面的左側面板中,按一下「前端設定」。
  2. 將「Name」(名稱) 設定為 fortressnet-http-rule。
  3. 針對「IP 版本」,選取 [IPv4]。
  4. 針對「IP 位址」,選取 [建立 IP 位址]。
  5. 在「Reserve a new static IP」(保留新的靜態 IP) 對話方塊中,將「Name」(名稱) 設為 fortressnet-ip。
  6. 按一下 [Reserve] (預約),然後稍等幾分鐘。
  7. 在「New Frontend IP and port」(新增的前端 IP 和通訊埠) 對話方塊底部,按一下 [Done] (完成)。
  8. 按一下 [Add frontend IP and port] (新增前端 IP 和通訊埠)。
  9. 將「Name」(名稱) 設定為 fortressnet-http-ipv6-rule。
  10. 針對「IP 版本」,選取 [IPv6]。
  11. 針對「IP 位址」,選取 [建立 IP 位址]。
  12. 在對話方塊中,將「Name」(名稱) 設為 fortressnet-ipv6。
  13. 按一下 [Reserve] (預約),然後稍等幾分鐘。
  14. 在「New Frontend IP and port」(新增的前端 IP 和通訊埠) 對話方塊底部,按一下 [Done] (完成)。

檢查並完成

  1. 在「建立全域外部應用程式負載平衡器」頁面的左側面板中,按一下「檢查並完成」。
  2. 將您的設定與您打算建立的內容比較。
  3. 如果設定正確無誤,請按一下左側面板底部的 [Create] (建立),系統會將您帶回「負載平衡」畫面。建立完成的負載平衡器如果正在運作中,它的旁邊會顯示綠色勾號。

gcloud

後端設定

  1. 建立基本的健康狀態檢查,以便確認負載平衡器後端是否正在回應 HTTP 要求。

    gcloud compute health-checks create http http-basic-check
    
  2. 建立全域後端服務,這項後端服務會接收負載平衡器傳送的 HTTP 流量。

    gcloud compute backend-services create fortressnet-backend-service \
        --protocol HTTP \
        --health-checks http-basic-check \
        --global
    
  3. 將執行個體群組新增至後端服務,做為區域後端。這項設定會根據每個執行個體的每秒要求數上限,將流量分配至所有後端。

    gcloud compute backend-services add-backend fortressnet-backend-service \
        --balancing-mode RATE \
        --max-rate-per-instance 100 \
        --instance-group us-central1-pool \
        --instance-group-region us-central1 \
        --global
    gcloud compute backend-services add-backend fortressnet-backend-service \
        --balancing-mode RATE \
        --max-rate-per-instance 100 \
        --instance-group europe-west1-pool \
        --instance-group-region europe-west1 \
        --global
    gcloud compute backend-services add-backend fortressnet-backend-service \
        --balancing-mode RATE \
        --max-rate-per-instance 100 \
        --instance-group asia-east1-pool \
        --instance-group-region asia-east1 \
        --global
    

主機與路徑規則

  1. 定義網址對應,網址對應會將不同網址轉送至不同的後端服務。由於我們只有一個後端服務,因此只要將該後端服務設為所有網址的預設服務即可。

    gcloud compute url-maps create fortressnet-balancer \
        --default-service fortressnet-backend-service
    
  2. 建立 HTTP Proxy 路徑。HTTP Proxy 路徑會接受 HTTP 要求,並根據網址對應加以轉送。在本範例中,HTTP Proxy 路徑會將所有要求傳送至您唯一的後端服務。

    gcloud compute target-http-proxies create fortressnet-http-proxy \
        --url-map fortressnet-balancer
    

前端設定

  1. 建立兩個全域靜態外部 IP 位址:一個用於 IPv4,另一個用於 IPv6。這兩者將成為負載平衡器的全域外部 IP 位址。

    gcloud compute addresses create fortressnet-ip \
        --ip-version IPV4 \
        --network-tier=PREMIUM \
        --global
    gcloud compute addresses create fortressnet-ipv6 \
        --ip-version IPV6 \
        --network-tier=PREMIUM \
        --global
    
  2. 查詢負載平衡器的外部 IP 位址。

    gcloud compute addresses list
    
  3. 針對外部 IP 位址建立通用轉送規則,這樣一來,系統就會將 IPv4 和 IPv6 HTTP 要求轉送至 HTTP Proxy。

    gcloud compute forwarding-rules create fortressnet-http-rule \
        --load-balancing-scheme=EXTERNAL \
        --network-tier=PREMIUM \
        --global \
        --target-http-proxy fortressnet-http-proxy \
        --ports 80 \
        --address LOAD_BALANCER_IP_ADDRESS
    
    gcloud compute forwarding-rules create fortressnet-http-ipv6-rule \
        --load-balancing-scheme=EXTERNAL \
        --network-tier=PREMIUM \
        --global \
        --target-http-proxy fortressnet-http-proxy \
        --ports 80 \
        --address LOAD_BALANCER_IPV6_ADDRESS
    

(選用) 確認負載平衡器正在運作,過程中您可能會需要等待幾分鐘。

控制台

  1. 前往 Google Cloud 控制台的「Load balancing」(負載平衡) 頁面。

    前往「Load balancing」(負載平衡)

  2. 等待「後端」欄下方的 fortressnet-balancer 顯示綠色勾號。

  3. 按一下 fortressnet-balancer。

  4. 在「前端」的「IP:通訊埠」一欄下方,複製 IPv4 位址。 (IPv4 位址的格式應為 www.xxx.yyy.zzz,(不需要尾端連接埠號碼 :nn)。如果缺少「前端」部分,請稍候片刻,然後重新載入網頁。

  5. 在網路瀏覽器中輸入 IP 位址。

瀏覽器應該會顯示「Apache2 Debian Default Page」(Apache2 Debian 預設頁面) 網頁。

如果網頁顯示「404 錯誤 (找不到網頁)」,請試著再等幾分鐘。

gcloud

  1. 查詢負載平衡器的外部 IP 位址。

    gcloud compute addresses list
    
  2. 查詢 IPv4 位址。(IPv4 位址的格式應為 www.xxx.yyy.zzz)。

    curl http://LOAD_BALANCER_IP_ADDRESS | head
    

您應該會看到一些 HTML 文字,包括 <title>Apache2 Debian Default Page: It works</title> 這行。

如果看到 <title>Error 404 (Not Found)!!1</title>,請試著再等幾分鐘。

最佳做法:建立安全的防火牆,僅允許負載平衡器和健康狀態檢查傳送的內部流量。然後刪除允許任何 HTTP 要求的原始防火牆。這樣一來,外部用戶端就無法存取個別執行個體。

控制台

  1. 建立新的防火牆,僅允許負載平衡器和健康狀態檢查傳送的流量。

    1. 前往 Google Cloud 控制台的「Firewall rules」(防火牆規則) 頁面。

      前往「防火牆規則」

    2. 按一下「建立防火牆規則」。

    3. 將「Name」(名稱) 設為 fortressnet-allow-load-balancer。

    4. 在「網路」中選取 fortressnet。

    5. 在「目標」部分,選取 All instances in the network。

    6. 在「來源 IP 範圍」中輸入 130.211.0.0/22 並按下 Enter 鍵,然後輸入 35.191.0.0/16 並再次按下 Enter 鍵。

    7. 在「Protocols and ports」(通訊協定和通訊埠) 下方選取「tcp」,然後輸入 80。

    8. 點選「建立」。

  2. 將允許所有流量的原有防火牆刪除。

    1. 選取 fortressnet-allow-http 旁的勾號。
    2. 按一下頁面頂端的 [Delete] (刪除)。
    3. 在對話方塊中按一下 [刪除]。

gcloud

  1. 建立新的防火牆,僅允許負載平衡器和健康狀態檢查傳送的流量。

    gcloud compute firewall-rules create fortressnet-allow-load-balancer \
        --network fortressnet \
        --source-ranges 130.211.0.0/22,35.191.0.0/16 \
        --allow tcp:80
    
  2. 將允許所有流量的原有防火牆刪除。

    gcloud compute firewall-rules delete fortressnet-allow-http -q
    

(選用) 確認自動調度資源和負載平衡正常運作

產生一些測試流量

假設歐洲現在是早上,而您的網路服務突然在網路上爆紅。以下步驟會根據這個假設,從歐洲瞬間產生大量的用戶端要求。

主控台

  1. 建立透過 Siege 負載測試工具安裝的執行個體。

    1. 前往 Google Cloud 控制台的「Create an instance」(建立執行個體) 頁面。

      前往「建立執行個體」

    2. 將「Name」(名稱) 設為 europe-loadtest。

    3. 在「區域」部分,選取「europe-west1」。

    4. 如要進行進階設定,請展開「Advanced options」(進階選項) 區段,然後執行下列操作:

      1. 展開「管理」部分。
      2. 在「自動化」欄位中,輸入下列開機指令碼:
        apt -y install siege
        
    5. 按一下「Create」(建立),即可建立 VM。

  2. 取得負載平衡器的 IPv4 位址。

    1. 前往 Google Cloud 控制台的「Load balancing」(負載平衡) 頁面。

      前往「Load balancing」(負載平衡)

    2. 按一下「fortressnet-balancer」。

    3. 在「前端」的「IP:通訊埠」一欄下方,複製 IPv4 位址。 (IPv4 位址的格式應為 www.xxx.yyy.zzz)。

  3. 透過 SSH 登入用於測試負載的執行個體。

    1. 前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面。

      前往 VM 執行個體

    2. 等待 europe-loadtest 執行個體在「Name」欄下方顯示綠色勾號。

    3. 在「連線」欄下方的 europe-loadtest 上,按一下「SSH」。

  4. 啟動 Siege,以負載平衡器的 IPv4 位址為目標。

    siege -c150 http://LOAD_BALANCER_IP_ADDRESS
    

gcloud

  1. 建立透過 Siege 負載測試工具安裝的執行個體。

    gcloud compute instances create europe-loadtest \
        --network default \
        --zone europe-west1-c \
        --metadata startup-script='apt -y install siege'
    
  2. 取得負載平衡器的 IPv4 位址。

    gcloud compute addresses list
    
  3. 開啟新的殼層工作階段,其中提供 gcloud 指令。

    1. 在新的殼層工作階段中,透過 SSH 登入用於測試負載的執行個體。

      gcloud compute ssh --zone europe-west1-c europe-loadtest
      
    2. 啟動 Siege,以負載平衡器的 IPv4 位址為目標。

      siege -c150 http://LOAD_BALANCER_IP_ADDRESS
      

執行 siege 指令後,您應該會看到宣告 The server is now under siege... 的輸出內容。

[alert] Zip encoding disabled; siege requires zlib support to enable it
** SIEGE 4.0.2
** Preparing 150 concurrent users for battle.
The server is now under siege...

監控負載平衡和自動調度資源

  1. 前往 Google Cloud 控制台的「Load balancing」(負載平衡) 頁面。

    前往「Load balancing」(負載平衡)

  2. 按一下名為 fortressnet-balancer 的負載平衡器。

  3. 按一下「Monitoring」(監控) 分頁標籤。

  4. 在「Backend」(後端) 下拉式選單中,選取 fortressnet-backend-service。

系統最多可能需要 10 分鐘才能顯示足夠的資料,您應該很快就會看到類似下圖的畫面:

Google Cloud 控制台監控畫面,顯示來自歐洲的要求平均分配到所有三個後端。

情況說明:

  1. 負載測試瞬間開始傳送龐大流量。起初,負載平衡器將要求平均分配至三個後端。要求數量很快就超出您設定的自動調度資源限制,這可能會導致伺服器傳回 Backend 5xx errors 並顯示於監控畫面上。自動配置器開始依需求啟動額外的執行個體。

  2. 系統會透過自動調度資源滿足容量需求。為了儘量縮短要求的延遲時間,Compute Engine 負載平衡器會嘗試將要求轉送至最接近用戶端的後端。在本例中,由於負載測試流量來自歐洲,負載平衡器會優先將更多要求轉送至歐洲後端。因此,自動調度資源程序可能會啟動更多歐洲後端中的執行個體,藉此處理較大部分的要求。

從其他地區產生測試流量

假設您的網路服務在亞洲也開始流行,吸引了下午上網的群眾。以下步驟會根據這個假設,從亞洲產生大量要求。

控制台

  1. 如要建立另一個安裝 Siege 負載測試工具的執行個體,請按照下列步驟操作:

    1. 前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面。

      前往 VM 執行個體

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

    3. 將「Name」(名稱) 設為 asia-loadtest。

    4. 在「區域」部分,選取「asia-east1」。

    5. 展開「Advanced options」(進階選項) 區段。

    6. 展開「管理」部分。

    7. 在「自動化」部分,輸入下列開機指令碼:

      apt -y install siege
      

    8. 點選「建立」。

  2. 如要取得負載平衡器的 IP 位址,請執行下列操作:

    1. 前往 Google Cloud 控制台的「Load balancing」(負載平衡) 頁面。

      前往「Load balancing」(負載平衡)

    2. 按一下「fortressnet-balancer」。

    3. 在「前端」的「IP:通訊埠」一欄下方,複製 IPv4 位址 (IPv4 位址的格式應為 www.xxx.yyy.zzz)。

  3. 透過 SSH 登入用於測試負載的執行個體。

    1. 等待 asia-loadtest 執行個體在「Name」欄下方顯示綠色勾號。
    2. 在「連線」欄下方,按一下 asia-loadtest 上的「SSH」。
  4. 啟動 Siege,以負載平衡器的 IPv4 位址為目標。

    siege -c150 http://LOAD_BALANCER_IP_ADDRESS
    

gcloud

  1. 在原有的殼層工作階段中,建立另一個透過 Siege 負載測試工具安裝的執行個體。

    gcloud compute instances create asia-loadtest \
        --network default \
        --zone asia-east1-c \
        --metadata startup-script='apt -y install siege'
    
  2. 取得負載平衡器的 IPv4 位址。

    gcloud compute addresses list
    
  3. 開啟新的殼層工作階段,其中提供 gcloud 指令。

    1. 在新的殼層工作階段中,透過 SSH 登入用於測試負載的執行個體。

      gcloud compute ssh --zone asia-east1-c asia-loadtest
      
    2. 啟動 Siege,以負載平衡器的 IPv4 位址為目標。

      siege -c150 http://LOAD_BALANCER_IP_ADDRESS
      

您應該會再次看到宣告 The server is now under siege... 的輸出內容

[alert] Zip encoding disabled; siege requires zlib support to enable it
** SIEGE 4.0.2
** Preparing 150 concurrent users for battle.
The server is now under siege...

監控負載平衡和自動調度資源

返回前文提到過的負載平衡監控畫面。系統最多可能需要 10 分鐘才能顯示足夠的新資料,您應該很快就會看到類似下圖的畫面:

Google Cloud 控制台監控畫面,顯示來自歐洲和亞洲的要求分配到所有三個後端

情況說明:

  1. 與先前的情況相似,負載測試瞬間開始傳送另一波龐大流量。起初,負載平衡器將要求平均分配至現有的三個後端。隨著要求數量超出您設定的自動調度資源限制,自動配置器開始依需求啟動額外的執行個體。

  2. 系統會透過自動調度資源滿足新的容量需求。負載平衡器仍會優先將要求轉送至最近的可用後端。因此,亞洲後端會接收大部分源自亞洲的要求,歐洲後端會接收大部分源自歐洲的要求,而美國後端則會接收其餘的所有要求。

清除所用資源

完成教學課程後,您可以清除所建立的資源,這樣資源就不會繼續使用配額,也不會產生費用。下列各節將說明如何刪除或關閉這些資源。

刪除專案

如要避免付費,最簡單的方法就是刪除您為了本教學課程所建立的專案。

刪除專案的方法如下:

  1. 前往 Google Cloud 控制台的「Manage resources」(管理資源) 頁面。

    前往「Manage resources」(管理資源)

  2. 在專案清單中選取要刪除的專案,然後點選「Delete」(刪除)。
  3. 在對話方塊中輸入專案 ID,然後按一下 [Shut down] (關閉) 以刪除專案。

刪除執行個體

如要刪除 Compute Engine 執行個體:

  1. 前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面。

    前往 VM 執行個體

  2. 勾選要刪除的執行個體核取方塊。
  3. 如要刪除執行個體,請依序點選 「More actions」(更多動作) 和「Delete」(刪除),然後按照指示操作。

後續步驟