全部產品
Search
文件中心

Server Load Balancer:通過ALB慢啟動實現業務優雅上線

更新時間:Aug 15, 2024

應用型負載平衡ALB(Application Load Balancer)支援伺服器組開啟慢啟動功能。開啟慢啟動後,ALB的業務請求可以緩慢地增加至伺服器組內新增的後端伺服器,緩解後端伺服器在資源準備、緩衝預熱等情境下面臨的突增流量壓力。

情境樣本

在大流量情境下,部分客戶手動或者自動添加後端伺服器,健全狀態檢查正常後ALB的業務請求會按照配置的後端伺服器權重指向後端伺服器。後端伺服器面臨流量突增的壓力,可能會導致後端伺服器的CPU瞬間打滿或記憶體壓力增大,由此產生大量的訪問異常。

ALB支援伺服器組開啟慢啟動。開啟慢啟動後,ALB業務請求可以優雅地逐步引流到新增的後端伺服器上,緩解後端伺服器突增的流量壓力。

本文以下圖情境為例。某企業在阿里雲華東1(杭州)地區已購買了一個公網ALB執行個體,該執行個體已配置HTTP監聽並已添加後端伺服器ECS01。用戶端的請求通過ALB可以訪問後端伺服器ECS01上的服務。現想在後端再增加一台ECS02執行個體,通過開啟慢啟動功能,使ALB的業務請求能夠緩慢地增加至新增的ECS02執行個體,緩解ECS02執行個體的流量壓力。

注意事項

  • 僅標準版和WAF增強版的ALB執行個體支援慢啟動,基礎版ALB執行個體不支援。

  • Function Compute類型的伺服器組無需配置該參數。

  • 僅當選擇調度演算法加權輪詢演算法時,伺服器組支援開啟慢啟動。

  • 當您為伺服器組開啟慢啟動後,伺服器組內健全狀態檢查正常的後端伺服器不會自動進入慢啟動模式。

  • 當您為空白的伺服器組開啟慢啟動:

    • 首次添加的後端伺服器不會進入慢啟動模式。

    • 僅當至少有一個健全狀態檢查正常的後端伺服器未處於慢啟動狀態時,新添加的後端伺服器才會進入慢啟動模式。

  • 如果您在慢啟動模式下刪除後端伺服器,該後端伺服器將退出慢啟動模式。如果您再次添加同一後端,則當伺服器組認為該後端伺服器健全狀態檢查正常時,進入慢啟動模式。

  • 如果處於慢啟動模式的後端伺服器健全狀態檢查異常,則該後端伺服器退出慢啟動模式。當後端伺服器健全狀態檢查正常時,該伺服器將再次進入慢啟動模式。

  • 當開啟慢啟動後,在健全狀態檢查開啟時,後端伺服器健全狀態檢查正常後慢啟動生效;在健全狀態檢查關閉時,慢啟動立即生效。

前提條件

  • 您已建立標準版ALB執行個體並為該ALB執行個體建立了伺服器組。具體操作,請參見建立應用型負載平衡建立和管理伺服器組

  • 您已為該ALB執行個體配置了監聽並關聯該伺服器組。具體操作,請參見添加HTTP監聽

  • 您已建立ALB的訪問日誌。具體操作,請參見建立訪問日誌

  • 本文操作過程中使用了2台ECS伺服器:

    承載業務應用的伺服器:ECS01和ECS02執行個體作為後端伺服器,且ECS01和ECS02執行個體中部署了2個不同的Nginx服務。具體操作,請參見自訂購買執行個體

    本文ECS01和ECS02部署測試應用樣本如下:

    ECS01服務部署命令

    yum install -y nginx
    systemctl start nginx.service
    cd /usr/share/nginx/html/
    echo "Hello World ! This is ECS01." > index.html

    ECS02服務部署命令

    yum install -y nginx
    systemctl start nginx.service
    cd /usr/share/nginx/html/
    echo "Hello World ! This is ECS02." > index.html
  • 您已在伺服器組中添加了ECS01執行個體,且登入用戶端可以訪問後端伺服器ECS01中的服務。具體操作,請參見ALB快速實現IPv4服務的負載平衡ALB快速實現IPv6服務的負載平衡

    單擊查看本文ALB執行個體的配置

    配置

    ALB執行個體配置

    網路類型

    公網

    DNS網域名稱:alb-1o44v******.cn-hangzhou.alb.aliyuncs.com

    監聽協議

    HTTP,監聽連接埠80。

    後端伺服器

    • ECS01執行個體

      • IP地址:10.0.2.50

      • 連接埠:80

      • 權重:100

    • ECS02執行個體

      • IP地址:10.0.2.51

      • 連接埠:80

      • 權重:100

步驟一:開啟慢啟動

本文前提條件中已建立過伺服器組,本步驟僅以編輯服務器組並開啟慢啟動為例進行配置說明。如果您未建立伺服器組,您也可以在建立伺服器組時開啟慢啟動功能。

  1. 登入應用型負載平衡ALB控制台
  2. 在頂部功能表列處,選擇後端伺服器所屬的地區。本文選擇華東1(杭州)

  3. 在左側導覽列,選擇應用型負載平衡ALB > 伺服器組

  4. 伺服器組頁面,找到目標伺服器組,單擊伺服器組ID。

  5. 詳細資料頁簽的基本資料地區,單擊編輯基本資料

  6. 編輯基本資料對話方塊中,單擊進階配置,然後開啟慢啟動

  7. 設定慢啟動期間30秒,然後單擊儲存

    說明

    慢啟動期間設定為30秒錶示ALB的業務請求會在30秒內緩慢地增加到新增的後端伺服器。

步驟二:通過wrk工具類比用戶端訪問

本文的用戶端以Alibaba Cloud Linux 3.2104 64位作業系統為例。不同類型的作業系統安裝wrk工具會有差異,具體安裝方式請參見您的作業系統手冊。

  1. 登入用戶端,開啟命令列視窗。依次執行以下命令,安裝wrk工具。

    yum -y install git make gcc
    git clone https://github.com/wg/wrk.git
    yum install unzip
    cd wrk
    make
  2. 執行以下命令對ALB後端伺服器中的服務進行壓力測試。

    ./wrk -c 1000 -d 6000s -t 3 -H “Connection:Close” http://<ALB網域名稱>

    其中:

    • -c:connections,每個線程保持的並發串連數。

    • -d:duration,測試的持續時間長度,s表示單位為秒。

    • -t:threads,指定要使用的線程數,即類比的並發使用者數量。

    • -H:header,添加到請求中的HTTP標題。例如,-H “Connection:Close”表示在每個請求中添加短串連的標題。

步驟三:添加ECS02後端伺服器至伺服器組

重要

添加後端伺服器至伺服器組需要在壓測設定的測試持續時間長度結束前添加。

  1. 登入應用型負載平衡ALB控制台
  2. 在頂部功能表列,選擇ALB執行個體的所屬地區。

  3. 在左側導覽列,選擇應用型負載平衡ALB > 伺服器組

  4. 伺服器組頁面,找到目標伺服器組,然後在操作列單擊編輯後端伺服器

  5. 後端伺服器頁簽,單擊添加後端伺服器

  6. 添加後端伺服器面板,選中後端伺服器ECS02,然後單擊下一步

  7. 配置連接埠和權重設定精靈中,將ECS02的連接埠設定為80,權重保持預設值100,然後單擊確定

步驟四:結果驗證

  1. 登入應用型負載平衡ALB控制台
  2. 在頂部功能表列,選擇ALB執行個體的所屬地區。

  3. 執行個體頁面,單擊目標執行個體ID。

  4. 單擊訪問日誌頁簽,然後在基本資料地區單擊SLS日誌儲存右側的連結,前往Log Service中心並根據下圖樣本的順序,查看新增的後端伺服器ECS02上的流量。

    根據下圖可以觀察到在開啟慢啟動時間內流量逐步地分配到新增的後端伺服器ECS02上。

    測試結果-cn (2).png

    序號

    步驟描述

    輸入以下命令查詢目標ALB發送至新增的後端伺服器ECS02上的流量。

    alb-80ri6****** and upstream_addr : "10.0.2.51:80"

    其中各個欄位的含義如下:

    • alb-80ri6******:表示ALB的執行個體ID。

    • upstream_addr:表示後端伺服器的IP地址和連接埠,本文輸入ECS02的私網IP地址和連接埠。

    選擇要查看流日誌的時間。本文選擇1分鐘

    單擊查詢/分析,即可查看新增的後端伺服器ECS02上的流量。

相關文檔