CLB伺服器組
監聽基於配置的轉寄策略,將業務請求路由至指定的伺服器組。伺服器組按照調度演算法,將業務流量分發至相應的後端伺服器。
工作原理
伺服器群組類型
|
伺服器群組類型 |
預設伺服器組 |
虛擬伺服器組 |
主備伺服器組 |
|
類型說明 |
每個CLB執行個體內建一個預設伺服器組 (有且僅有一個) |
使用者自行建立與管理 |
使用者自行建立與管理 |
|
後端伺服器數量 |
一個或多個 |
一個或多個 |
兩個(一主一備) |
|
特點 |
|
|
|
|
適用情境 |
簡單架構,所有請求轉寄到同一組後端伺服器 |
複雜架構,例如按照網域名稱/連接埠分發業務請求 |
資料庫、核心API 等固定主備模式的業務 |
|
支援監聽類型 |
TCP/UDP/HTTP/HTTPS |
TCP/UDP/HTTP/HTTPS |
僅TCP/UDP |
權重配置
調度演算法決定 CLB 如何將收到的請求分發到後端的多個伺服器。權重則是在支援加權的演算法中,控制每台伺服器流量分配比例的參數。
-
生效範圍:使用支援加權的調度演算法。輪詢演算法不生效。
-
取值範圍:0-100,預設值為100。
-
權重為0的行為:伺服器不再接收新的請求流量。但已建立的串連會繼續處理直至正常斷開,健全狀態檢查也會繼續進行。常用於伺服器的優雅下線。
-
權重變更的生效範圍:權重變更只對建立串連生效,不影響已建立的串連。在長串連情境下,調整權重後流量變化會比較緩慢。
服務高可用
開啟 CLB 健全狀態檢查,定期發送請求來確認伺服器的狀態。
-
健全狀態檢查成功:伺服器狀態正常,CLB 會將流量轉寄給該伺服器。
-
健全狀態檢查失敗:伺服器狀態異常,CLB 會停止向該伺服器轉寄任何新的請求流量,直至其恢複正常。
CLB 健全狀態檢查使用 100.64.0.0/10 網段,請確保後端伺服器的 iptables 或其他第三方安全軟體未屏蔽此網段,否則健全狀態檢查會失敗,導致業務中斷。
主備伺服器依賴健全狀態檢查進行主備切換:
-
主伺服器健全狀態檢查失敗後,流量將切換到備伺服器。由於備伺服器預設不做健全狀態檢查,需要使用者自行確保備伺服器的可用性,保證切換後可用。
-
主備伺服器的切換時間取決於設定的健全狀態檢查響應逾時時間,當主機健全狀態檢查恢複之後流量會自動切換至主機。
適用範圍
-
關聯關係:
-
監聽與伺服器組是 CLB 執行個體維度資源。不同 CLB 執行個體的監聽、伺服器組資訊不互連。
-
一個伺服器組能同時被多個監聽綁定,但是一個監聽只能同時綁定一個伺服器組。
-
CLB 四層監聽不支援ECS執行個體同時作為後端伺服器和用戶端。如有需求,可使用七層監聽。
-
-
掛載後端伺服器:
-
CLB 僅支援掛載同帳號、同地區的後端伺服器。
-
私網 CLB 執行個體:只能掛載 CLB 所屬 VPC 內的後端伺服器。
-
公網 CLB 執行個體:添加多個後端伺服器必須屬於同一個 VPC。
-
-
CLB 所有類型伺服器組均支援掛載如下資源:Elastic Compute Service、彈性網卡ENI、彈性容器ECI。
-
僅支援添加已經綁定至ECS的彈性網卡。彈性網卡的主私網IP及輔助私網IP均可以添加。
-
-
ECS 作為後端伺服器,進行熱遷移時,可能導致CLB長串連斷開,重新串連後即可恢複。需確保應用程式具備自動重連機制。
-
-
配置可修改性:
配置可修改性
增刪伺服器組
修改連接埠
修改權重
預設伺服器組
首次建立監聽並關聯後,連接埠不可修改
虛擬伺服器組
主備伺服器組
主備角色不支援修改
設定管理員組
控制台
預設伺服器組
-
無需建立,每個CLB執行個體內建一個預設伺服器組。
-
添加伺服器:
-
前往CLB - 執行個體管理頁面,單擊目標執行個體 ID,選擇預設伺服器組頁簽,單擊新增。
-
設定伺服器類型、資源群組,篩選可用資源。
-
如需添加彈性網卡 ENI,需先開啟進階模式,並單擊已綁定彈性網卡的ECS執行個體右側的加號表徵圖,找到目標彈性網卡。勾選需要綁定的彈性網卡,可選擇IP地址。
-
-
配置連接埠與權重:
-
配置連接埠:選擇監聽頁簽,單擊新增監聽。在後端伺服器嚮導介面,設定預設伺服器組的伺服器通信埠,同一監聽下預設伺服器組內的不同伺服器的連接埠必須相同。
僅支援添加監聽時指定連接埠,後續無法修改。
-
配置權重:設定已選伺服器的權數。
-
-
虛擬伺服器組
-
前往CLB - 執行個體管理頁面,單擊目標執行個體 ID,選擇虛擬伺服器組,單擊建立虛擬伺服器組。
-
添加伺服器:
-
設定伺服器類型、資源群組,篩選可用資源。
-
如需添加彈性網卡 ENI,需先開啟進階模式,並單擊已綁定彈性網卡的ECS執行個體右側的加號表徵圖,找到目標彈性網卡。勾選需要綁定的彈性網卡,可選擇IP地址。
-
-
配置已選伺服器的通信埠和權數。選擇添加連接埠,可以為同一個後端伺服器配置多個不同的連接埠。
主備伺服器組
-
前往CLB - 執行個體管理頁面,單擊目標執行個體 ID,選擇主備伺服器組,單擊建立主備伺服器組。
-
添加伺服器:
-
設定伺服器類型、資源群組,篩選可用資源。
-
如需添加彈性網卡 ENI,需先開啟進階模式,並單擊已綁定彈性網卡的ECS執行個體右側的加號表徵圖,找到目標彈性網卡。勾選需要綁定的彈性網卡,可選擇IP地址。
-
僅支援添加 2 台後端伺服器。
-
-
配置已選伺服器的通信埠,選擇添加連接埠,可以為同一個後端伺服器配置多個不同的連接埠。添加後,選擇主機,配置主備關係。
API
預設伺服器組
-
調用AddBackendServers添加後端伺服器。
-
調用SetBackendServers設定後端伺服器權重。
-
調用RemoveBackendServers移除後端伺服器。
虛擬伺服器組
-
調用CreateVServerGroup建立虛擬伺服器組並添加後端伺服器,配置連接埠和權重。
-
調用AddVServerGroupBackendServers/RemoveVServerGroupBackendServers,從指定的虛擬伺服器組中添加/移除後端伺服器。
-
調用DeleteVServerGroup刪除虛擬伺服器組。
主備伺服器組
-
調用CreateMasterSlaveServerGroup建立主備伺服器組。
-
調用DeleteMasterSlaveServerGroup刪除主備伺服器組。
常見問題
CLB執行個體處於運行中是否可調整ECS數量?
-
預設伺服器組、虛擬伺服器組:支援在任意時刻增加或減少負載平衡的後端ECS執行個體數量,且支援不同ECS執行個體之間的切換。為保障服務穩定,確保在執行操作前已開啟健全狀態檢查,且後端至少有一台正常啟動並執行ECS執行個體。
-
主備伺服器組:不支援調整。
後端ECS執行個體的作業系統是否可以不同?
可以不同。
CLB 不限制後端 ECS 執行個體的作業系統,只要確保應用服務部署相同且資料一致即可。建議使用相同的作業系統,以便於統一管理和維護。
可以使用不同地區的ECS執行個體作為後端伺服器嗎?
CLB 不支援直接掛載跨地區的後端伺服器。若需實現跨地區部署,可選擇以下方案:
-
結合全域流量管理產品,在CLB上層部署全域流量管理並且在各地區部署多個CLB,通過切換不同的CLB實現跨地區掛載。
-
使用支援跨地區掛載後端伺服器的應用型負載平衡ALB或網路型負載平衡 NLB。
為什麼有100開頭的IP在頻繁訪問ECS執行個體?
請求來自負載平衡系統的健全狀態檢查和可用性監控。
-
來源:阿里雲保留位址區段
100.64.0.0/10。 -
安全性:該網段由阿里雲保留,其他使用者無法分配,不存在安全風險。
-
配置建議:請確保後端伺服器的 iptables 或其他第三方安全軟體未屏蔽該網段,以確保服務可用性。
如健全狀態檢查異常,可參見 如何排查健全狀態檢查異常?
ECS執行個體上沒有配置壓縮,為什麼從CLB返回的HTTP響應卻被壓縮了?
-
原因:CLB 監聽配置中開啟了 Gzip 壓縮,且用戶端瀏覽器支援壓縮。
-
操作:如需關閉,請在 CLB 控制台的監聽配置中關閉 Gzip 壓縮功能,或改用 TCP 監聽。
ECS執行個體使用了HTTP 1.0是否支援chunked transfer傳輸編碼?
支援。
為什麼CLB後端ECS執行個體頻繁收到User-Agent為KeepAliveClient的請求?
-
現象:後端 ECS 收到大量來自內網 IP、User-Agent為
KeepAliveClient的 GET 請求。 -
原因:監聽協議為 TCP,但健全狀態檢查協議配置為 HTTP。TCP 監聽使用 HTTP 健全狀態檢查時,預設使用 GET 方法。
-
解決:將監聽協議和健全狀態檢查協議統一(如都使用 TCP 或都使用 HTTP)。
預設伺服器組下的伺服器連接埠支援修改嗎?
不支援直接修改。
-
限制:預設伺服器組的連接埠僅能在建立監聽時設定,且同一監聽下的所有後端伺服器連接埠必須一致。
-
解決:如需為同一監聽配置不同的後端連接埠,請使用虛擬伺服器組。
CLB四層監聽支援ECS執行個體同時作為後端伺服器和用戶端?
不支援,上述配置會導致訪問環路。
替代方案:
-
使用 CLB 七層監聽(HTTP/HTTPS)。
-
使用 NLB 執行個體並關閉伺服器組的用戶端地址保持功能。參考ECS如何在NLB中同時作為後端伺服器和用戶端。
為什麼CLB後端存在大量TIME-WAIT串連,而ALB後端只有少量?
傳統型負載平衡CLB和應用型負載平衡ALB在與後端伺服器互動時,採用的串連機制不同。
-
傳統型負載平衡CLB:預設使用HTTP短串連。CLB將請求轉寄給後端伺服器時,會在HTTP頭部插入
Connection: close欄位。當後端伺服器處理完該請求後,會根據此頭部主動發送FIN包中斷連線,每次中斷連線都會進入TIME-WAIT狀態(預設60秒),高並發情境下會快速積累大量TIME-WAIT串連。 -
應用型負載平衡ALB:預設支援HTTP長串連(keep-alive)。單個TCP串連可複用處理多個請求,長串連開啟情況下會減少串連斷開次數,因此減少了TIME-WAIT串連。
如需減少 TIME-WAIT 串連的積累,可選擇以下方案:
-
改用 CLB 四層(TCP)監聽。四層健全狀態檢查會在握手成功後主動發送 RST 資料包中斷連線,不會進入 TIME-WAIT 狀態。
-
遷移至應用型負載平衡 ALB,利用其預設的 HTTP 長串連複用機制。
為什麼後端伺服器之間的流量分配不均衡?
|
常見原因 |
說明 |
排查與解決方案 |
|
會話保持 |
開啟會話保持後,同一用戶端的請求會固定轉寄到同一台後端伺服器。當用戶端數量較少時(如使用少量用戶端進行壓測),流量容易集中在個別伺服器上。 |
檢查是否開啟了會話保持,評估業務是否確實需要。 |
|
長串連 |
已建立的長串連不會因權重調整而重新分配。長串連情境下,調整權重後流量變化會比較緩慢。 |
|
|
健全狀態檢查失敗或波動 |
個別後端伺服器健全狀態檢查失敗,無法接受請求;或健全狀態檢查狀態頻繁在正常與異常之間切換,造成流量分配不穩定。 |
|
|
總體請求數較少 |
查看CLB的監控資訊。如果總體的請求數較少,輕微的請求分配不均衡屬於正常現象。 |
請求量增大後觀察流量分配是否趨於均衡。如果在大量請求下仍不均衡,請排查其他原因。 |
|
權重配置不當 |
各伺服器的權重設定與其實際處理能力不匹配,導致部分伺服器過載而其他伺服器閑置。 |
|
如何安全地從 CLB 移除後端 ECS 執行個體?
直接移除 ECS 可能造成業務閃斷。建議先將該 ECS 的權重修改為 0,待已建立的串連處理完畢後再執行移除。權重為 0 的具體行為說明,請參見上文權重配置章節。
如果移除 ECS 後仍有持續的業務請求,可從以下方面排查:
-
該 ECS 是否同時加入了其他 CLB 執行個體。
-
該 ECS 自身是否對外提供其他服務,可使用
netstat命令查看連接埠監聽情況。
新增後端伺服器後為什麼沒有流量轉寄?
CLB 新增後端伺服器後沒有流量轉寄到該伺服器,可從以下幾個方面排查:
-
健全狀態檢查未通過:後端伺服器的連接埠不通或應用未監聽對應連接埠,會導致健全狀態檢查失敗,CLB 不會向該伺服器轉寄流量。請在 CLB 控制台確認該伺服器的健全狀態檢查狀態是否正常,並檢查後端伺服器上的連接埠監聽和應用運行情況。如健全狀態檢查異常,可參見 如何排查健全狀態檢查異常?
-
權重設定為 0:權重為 0 的伺服器不會接收新的請求流量。請檢查該伺服器在伺服器組中的權重配置,確認權重值大於 0。權重的詳細說明請參見上文權重配置章節。
-
添加到了錯誤的伺服器組:CLB 的每個監聽綁定了特定的伺服器組(預設伺服器組或虛擬伺服器組)。如果新增的伺服器被添加到了監聽未綁定的伺服器組中,則該伺服器不會收到對應監聽的流量。請確認目標監聽實際綁定的伺服器組,並將伺服器添加到正確的組中。
-
iptables 或第三方安全軟體屏蔽了健全狀態檢查網段:CLB 健全狀態檢查使用
100.64.0.0/10網段。如果後端伺服器上的 iptables 或其他第三方安全軟體屏蔽了該網段,健全狀態檢查會失敗,導致 CLB 認為伺服器異常而不轉寄流量。請確保相關規則未屏蔽此網段。 -
健全狀態檢查視窗期未到:新增後端伺服器後,CLB 需要等待健全狀態檢查通過後才會開始轉寄流量。請稍等片刻後再觀察流量是否正常轉寄。