應用型負載平衡ALB支援跨AZ負載平衡以避免單可用性區域資源瓶頸。但在金融量化交易、即時通訊等對時延高度敏感的情境,跨AZ負載平衡可能帶來一定的延時。為此,您可以關閉跨AZ負載平衡,使ALB在同地區同可用性區域內分配流量,發送到後端伺服器組的流量不進行跨可用性區域分發,從而提升業務訪問速度。
功能簡介
ALB預設開啟跨AZ負載平衡,即ALB在同地區跨可用性區域的後端服務之間分配流量。當ALB掛載的伺服器組關閉跨AZ負載平衡時,ALB僅在同地區同可用性區域的後端服務之間分配流量。
如果您需要關閉跨AZ負載平衡,請確保在ALB內每個可用性區域都有可用的後端伺服器,並確保這些伺服器資源充足。為避免對您的實際業務造成影響,請謹慎操作。
關鍵特性
降低時延:在同地區同可用性區域進行流量分配,可以減少資料跨可用性區域傳輸時延,提升業務的訪問速度。
使用情境
主要適用於對時延要求較高的情境:
金融交易情境:在高頻量化交易情境下,低時延確保交易的快速處理,減少交易失敗或逾時風險。
即時通訊情境:在視頻會議、立即訊息等情境下,低時延確保無縫、流暢的使用者體驗。
物聯網情境:在即時資料採集等情境下,低時延確保及時的資料分析和響應,提升系統整體的效率和準確性。
使用限制
僅標準版、WAF增強版ALB執行個體支援關閉跨AZ負載平衡,基礎版ALB不支援。
關閉跨AZ負載平衡時,不支援開啟會話保持。
開啟遠端IP的IP類型伺服器組,不支援關閉跨AZ負載平衡。
Function Compute類型的伺服器組無需配置該參數。
情境樣本
企業在阿里雲杭州地區部署了高可用的業務,預設開啟了跨AZ負載平衡。由於業務轉型,該企業對時延提出了更高的要求。
為了滿足此訴求,該企業決定關閉跨AZ負載平衡,使ALB僅向同地區同可用性區域的後端服務分配流量。通過這種方式,企業成功降低了時延,提升了業務的訪問速度。
前提條件
您已在杭州地區建立了標準版的ALB執行個體,並在建立過程中選擇了多個可用性區域(以可用性區域H和可用性區域K為例)。請參見建立和管理ALB執行個體。
您已建立伺服器組。
您已在伺服器組中分別添加ECS01和ECS02執行個體,其中ECS01屬於可用性區域H,ECS02屬於可用性區域K,並且這兩台執行個體上均部署了應用服務。
您已註冊網域名稱並完成備案,且通過自有網域名稱為ALB配置CNAME解析。
操作步驟
步驟一:關閉跨AZ負載平衡
本文前提條件中已建立過伺服器組,本步驟僅以編輯服務器組並關閉跨AZ負載平衡為例進行配置說明。如果您未建立伺服器組,您也可以在建立伺服器組時關閉跨AZ負載平衡功能。
在伺服器組頁面,找到目標伺服器組,單擊目標ID。
在詳細資料頁面,基本資料地區,單擊編輯基本資料。
在編輯基本資料對話方塊,單擊進階配置,關閉跨AZ負載平衡開關,然後單擊儲存完成關閉操作。
(可選)步驟二:驗證關閉跨AZ負載平衡
此步驟僅用來驗證關閉跨AZ負載平衡是否生效。實際業務情境中,建議您通過網域名稱方式訪問服務,並在步驟三中測試時延效果。
在目標執行個體詳情頁面,可用性區域地區,分別複製可用性區域H和可用性區域K的Elastic IP Address。
通過瀏覽器訪問可用性區域H的Elastic IP Address,例如
http://<Elastic IP Address>
,多次重新整理瀏覽器,只能訪問到可用性區域H對應的後端伺服器ECS01。通過瀏覽器訪問可用性區域K的Elastic IP Address,例如
http://<Elastic IP Address>
,多次重新整理瀏覽器,只能訪問到可用性區域K對應的後端伺服器ECS02。
步驟三:時延效果測試
測試結果可能因地區和可用性區域的不同有所差異,請以實際業務測試結果為準。本樣本的驗證測試以查看資料包延遲效果為例進行說明。
在德國(法蘭克福)地區建立一台公網ECS03執行個體,作為測試用戶端。如果您已有測試伺服器,則無需建立。
登入測試用戶端ECS03,執行以下命令,測試訪問時延。
curl http://www.example.com -s -w "time_connect: %{time_connect}\ntime_starttransfer: %{time_starttransfer}\ntime_total: %{time_total}\n"
參數說明:
time_connect:連線時間。從開始到建立TCP串連完成所用的時間,單位:秒。
time_starttransfer:開始傳輸時間。在用戶端發出請求後,到後端伺服器響應第一個位元組所用的時間,單位:秒。
time_total:串連總時間。用戶端發出請求後,到後端伺服器響應會話所用的時間,單位:秒。
開啟跨AZ負載平衡請求響應時間長度:
關閉跨AZ負載平衡請求響應時間長度:
測試結果表明,關閉跨AZ負載平衡後,連線時間、傳輸時間以及串連總時間均有所縮短。
常見問題
為什麼關閉跨AZ負載平衡後,請求會返回503?
可能是由於在關閉跨AZ負載平衡的伺服器組中,ALB執行個體所在的某個可用性區域內不存在可用的後端伺服器,導致ALB無法將請求轉寄到後端伺服器,從而返回503錯誤碼。
關閉跨AZ負載平衡後,為什麼不支援會話保持功能?
開啟會話保持功能時,ALB執行個體可用性區域A的請求可能會持續轉寄至可用性區域B的後端伺服器,當關閉跨AZ負載平衡後,將無法繼續會話保持。
關閉跨AZ負載平衡後,若ALB執行個體所在可用性區域和伺服器組裡後端伺服器的可用性區域不完全相同時,健全狀態檢查狀態是怎樣?
關閉跨AZ負載平衡後,與ALB執行個體不在相同可用性區域的後端伺服器健全狀態檢查狀態是未使用(Unused)。
相關文檔
關於ALB支援的地區和可用性區域,請參考ALB支援的地區與可用性區域。
如果配置過程中遇到問題,您可參考ALB常見問題進行定位處理。
如果遇到健全狀態檢查異常問題,您可參考ALB健全狀態檢查異常排查方法。
CreateServerGroup:建立伺服器組。
UpdateServerGroupServersAttribute:更新後端伺服器配置。
ListServerGroups:查詢服務器組。
GetListenerHealthStatus:查詢健全狀態檢查。