負載均衡調度算法追溯

標題索引


  • 追溯原因

  • 出口結構

  • 調度算法

  • 問題處理


追溯原因

    根據同事信息反饋:教育雲平臺服務器對外提供服務請求不均衡,其中一臺服務器對外提供服務數量遠大於其他服務器,鎖定出現問題原因在於出口負載均衡調度器的調度算法,針對此現象組織運維小團隊進行再次入學習負載均衡調度算法,解決負載不均衡情況。

出口結構

    出口採用兩臺深信服應用交付做負載均衡,下聯DP8000安全防火牆做透明傳輸,核心採用兩臺h3c10508做交換,出口網絡拓撲結構如下圖:

8ab6e395db06da732d01b5b3c19ad34d.jpg

圖1-1 出口網絡拓撲圖

    兩臺負載均衡做主被模式,防火牆和核心交換機採用虛擬機技術分別虛擬爲1臺邏輯防火牆和1臺邏輯交換機,且爲雙主模式,以備出口負載均衡隨時業務切換。

調度算法

    考慮到國內多數產品基於開源軟件進行二次開發,因此決定追根溯源從開源產品LVS的調度算法爲基礎進行深度學習,並將學習方法及解決問題案例記錄知識庫。

    從動靜角度劃分,LVS的調度算法主要分爲4種靜態調度算法和6種動態調度算法,靜態調度算法相對較爲簡單,不依賴服務器的性能及連接數進行調度,動態算法根據在線訪提供服務連接數及性能等進行動態調度,只要指標參數爲通過對應的調度算法公式計算出Overhead=value的值,value值越小說明服務器負載越小,因此會優先調度。

    靜態調度算法如下:

    1.輪詢調度算法

    輪詢調度算法不考慮服務器性能和在線連接數,傻瓜式的進行輪詢調度。

    2.權重輪詢算法

    基於權重進行輪詢調度,性能好的服務器可以基於權重進行加權輪詢調度。

    3.源IP hash算法

    根據源IP地址進行hash計算,對於相同源IP地址的請求或已建立的連接調度到同一臺服務器,可實現會話綁定,但基於國內網絡現狀,N多用戶共用同一公網IP地址上網請求調度到同一服務器,有可能導致服務器負載嚴重不均衡。

    4.目的IP hash算法

    基於目的IP地進行hash計算,對於同一目的IP地址的請求或已建立的連接調度到同一目的服務器,考慮到國內網絡現狀,多數用戶運營商或CDN內容發佈商,利用緩存機制,爲用戶請求加速提供服務。

    動態調度算法如下:

    在動態調度算法中,提前知曉幾個概念:

    Activeconns:指活動連接數,即處於ESTABLISH狀態已經建立的連接。

    Inactiveconns:指非活躍連接數,即處於TCP ESTABLISH 狀態以外的連接,如SYN_RECV、TIME_WAIT 等。

    5.最少連接調度算法

    最少連接調度算法,簡稱LC,Least Connections,其計算公式爲:Overhead=Activeconns*256+Inactiveconnns,由計算公式可知,在服務器集羣節點數中已建立連接數較少的Overhead值也較小,因此會被優先調度。由此可知調度算可以被理解爲“不考慮集羣服務器的節點性能,僅根據服務器連接數進行提供服務,連接數越少,優先會被調度”。

    6.加權最少連接調度算法

    簡稱:WLC,Weighted Least Connections,在LVS中爲默認策略,其具體調度算法和調度含義如下解釋:

    在最少連接調度算法的基礎之上加權重,其計算公式爲:Overhead=(Activeconns*256+Inactiveconnns)/weight,由公式可知,在服務器集羣節點數中權重越大Overhead的值越小。由此可知調度算法可以被理解爲“考慮服務器的節點性能,根據服務器連接數進行提供服務,連接數越少,權重越大,優先會被調度”。

    7.初始連接高權重優先

    簡稱:SED,Shortest Expection Delay,其計算公式爲:Overhead=(activeconns+1)*256/weight,由公式可知在負載均衡調度時,權重優先級越高Overhead值越小,越是優先被調用。問題是當連接數量規模相對較小的情況下,有可能出現僅有高權重服務器對外提供服務,其他服務器空閒。

    8.無隊列調度算法

    簡稱:NQ,Never Queue,在第一輪調度時均衡調度,後續採用SED調度算法,防止僅有一臺高性能服務器提供服務,而其他服務器處於空閒狀態。

    9.動態DH算法

    簡稱:LBLC:Locality-Based LC,動態基於目的IP進行負載均衡,可用於根據負載狀態實現正向代理,目前大多用在cache集羣,當LVS接收到請求時,該算法根據最近調動情況調動到就近服務器,若該服務器是可用的且沒有超載,將請求發送到該服務器;若服務器不存在,或者該服務器超載且有服務器處於一半的工作負載,則用“最少鏈接”的原則選出一個可用的服務器,將請求發送到該服務器

    10.動態DH算法+複製功能

    簡稱:LBLCR:LBLC with Replication,在動態DH算法的基礎之上,它與LBLC算法的不同之處是它要維護從一個目標IP地址到一組服務器的映射,而LBLC算法維護從一個目標IP地址到一臺服務器的映射該算法根據請求的目標IP地址找出該目標IP地址對應的服務器組,按”最小連接”原則從服務器組中選出一臺服務器,若服務器沒有超載,將請求發送到該服務器;若服務器超載,則按“最小連接”原則從這個集羣中選出一臺服務器,將該服務器加入到服務器組中,將請求發送到該服務器同時,當該服務器組有一段時間沒有被修改,將最忙的服務器從服務器組中刪除,以降低複製的程度。

問題處理

    綜合調動算法原理和會話管理的因素,估計當時實施工程師考慮到會話綁定的問題,因此將調度算法策略設定位靜態源IP hash算法,而平臺訪問量多數來自幾個固定的源IP地址,所以導致服務器對外提供服務不均衡。

    溝通聯繫雲平臺開發商,雲平臺早已支持會話同步(會話同步:會話綁定、會話同步、會話統一管理),因此只需將負載均衡調度算法更改爲默認wlc策略即可實現服務器負載均衡。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章