天天看點

【雲中沙箱】如何使用SLB實作持續性高并發通路?

<b>雲中沙箱,</b><b>阿裡雲</b><b>官方實驗平台。網址:http://lab.aliyunedu.net </b> 

<b>一、基本概念</b> 

<b>阿裡雲負載均衡</b> 

簡介 

負載均衡(server load balancer)是将通路流量根據轉發政策分發到後端多台 ecs 的流量分發控制服務。負載均衡可以通過流量分發擴充應用系統對外的服務能力,通過消除單點故障提升應用系統的可用性。 

架構

負載均衡服務主要有三個核心概念: 

1)loadbalancer:負載均衡執行個體。 

2)listener:使用者定制,定義了負載均衡政策和轉發規則。 

3)backendserver:後端的一組ecs。 

【雲中沙箱】如何使用SLB實作持續性高并發通路?

<b></b><b>特點</b>

1)負載均衡服務通過設定虛拟服務位址(ip),将位于同一地域(region)的多台雲伺服器(elastic compute service,簡稱ecs)資源虛拟成一個高性能、高可用的應用服務池;根據應用指定的方式,将來自用戶端的網絡請求分發到雲伺服器池中。 

2)負載均衡服務會檢查雲伺服器池中ecs的健康狀态,自動隔離異常狀态的ecs,進而解決了單台ecs的單點問題,同時提高了應用的整體服務能力。在标準的負載均衡功能之外,負載均衡服務還具備tcp與http抗ddos攻擊的特性,增強了應用伺服器的防護能力。 

3)負載均衡服務是ecs面向多機方案的一個配套服務,需要同ecs結合使用。 

<b>阿裡雲負載均衡健康檢查</b> 

<b></b><b>簡介</b>

    負載均衡通過健康檢查來判斷後端 ecs 上的業務可用性。使用者開啟健康檢查功能後,當後端某台 ecs 健康檢查出現異常時,負載均衡會自動将新的請求分發到其它健康檢查正常的 ecs 上;而當該 ecs 恢複正常運作時,負載均衡會将其自動恢複到對外或對内的服務中。    負載均衡健康檢查機制提高了前端業務整體可用性,避免了後端 ecs 異常對總體服務的影響。    如果使用者業務對負載有高敏感性,高頻率的健康檢查探測可能會對使用者正常業務通路造成影響。使用者可以結合業務情況,通過降低健康檢查頻率、增大健康檢查間隔、7層檢查修改為4層檢查等方式,來降低對業務的影響。但為了保障業務的持續可用,不建議關閉健康檢查。 

<b></b><b>處理原理</b>

負載均衡通過健康檢查來探測後端 ecs 的可用性。開啟健康檢查功能後,當後端某個 ecs 健康檢查出現異常時,來自 client 的新請求将不會再被轉發到該 ecs,直到健康檢查檢測到該 ecs 上業務恢複正常。 

【雲中沙箱】如何使用SLB實作持續性高并發通路?

lvs 叢集或 tengine 叢集内的相關節點伺服器同時承載了資料轉發及健康檢查職責。 

目前叢集伺服器 ip 段為負載均衡系統ip位址段包括:10.159.0.0/16,10.158.0.0/16,10.49.0.0/16、100.109.0.0/16和100.97.0.0/16。如果後端 ecs 啟用了 iptables 等通路控制,需要在内網網卡上針對上述 ip 段做通路放行。 

根據負載均衡轉發政策,用戶端相關通路請求被均分到 lvs 叢集内不同伺服器(如果是 7 層服務,則如前述說明所述,相關請求被進一步轉發到 tengine 叢集)。 

lvs 叢集内不同伺服器分别【獨立、并行的】根據負載均衡政策進行資料轉發和健康檢查操作。 

如果某一台 lvs 節點伺服器對後端某一台 ecs 健康檢查失敗,則該 lvs 節點伺服器将不會再将新的用戶端請求分發給相應的異常 ecs 伺服器;lvs 叢集内所有伺服器同步進行該操作,互相之間沒有關聯及影響。 

<b></b><b>7層服務健康檢查機制(http或https協定)</b>

對7層(http或https協定)服務,負載均衡的健康檢查通過 http head 探測來擷取狀态資訊。相關機制如下圖所示:注:使用 https 協定時,證書在負載均衡上完成處理後完結。負載均衡與後端ecs之間的資料互動(包括健康檢查資料和業務互動資料),不再通過 https 進行傳輸,以提高系統性能。 

【雲中沙箱】如何使用SLB實作持續性高并發通路?

使用說明如下: 

1)tengine 節點伺服器根據負載均衡執行個體健康檢查屬性設定,向後端 ecs 的内網 ip+【健康檢查端口】+【檢查路徑】發送 http head 請求(包含【域名】屬性)。 

2)後端 ecs 伺服器收到請求後,根據相應服務的運作情況,傳回 http 狀态碼。 

3)如果在【響應逾時時間】之内,tengine 節點伺服器沒有收到後端 ecs 傳回的上述資訊,則認為服務無響應,判定健康檢查失敗。 

4)如果在【響應逾時時間】之内,tengine 節點伺服器成功接收到後端 ecs 傳回的上述資訊,則将該傳回資訊與【正常狀态碼】屬性所勾選的狀态碼進行比對。如果比對則判定健康檢查成功,反之則判定健康檢查失敗。 

5)健康檢查間隔和重試次數根據相應負載均衡執行個體屬性設定進行相應設定。 

政策配置 

使用者可以通過控制台或 api 設定負載均衡服務監聽的健康檢查政策。目前健康檢查可選方式包括 tcp、udp 和 http(注:https協定采用 http 方式進行健康檢查),不同檢查方式下支援的政策屬性有所不同。通過管理控制台配置如下圖: 

【雲中沙箱】如何使用SLB實作持續性高并發通路?

1)域名:隻有 http 檢查方式時才有。非必填屬性。配置後,負載均衡會将相應值以 domain 屬性傳遞到後端伺服器,以便後端伺服器結合該值來配置域名通路控制。沒有填寫時,預設使用各後端伺服器的内網 ip 為域名進行傳遞。 

2)檢查端口:非必填屬性。健康檢查服務通路後端時的探測端口。預設值為服務監聽配置時的【後端協定 [端口]】。 

3)檢查路徑:隻有 http 檢查方式時才有。非必填屬性。用于手工指定健康檢查頁面檔案的 uri,建議對靜态頁面進行檢查。預設值為根目錄“/”。 

4)響應逾時時間: 必填屬性。健康檢查響應的最大逾時時間,輸入範圍 1-300 秒,預設為 5 秒。後端 ecs 在相應時間内沒有正确響應,則判定為健康檢查失敗。 

5)健康檢查間隔:必填屬性。進行健康檢查的時間間隔; 輸入範圍 1-50 秒,預設為 2 秒。、注:如前文所述,lvs 叢集内所有節點,都會獨立、并行的遵循該屬性去對後端 ecs 進行定期健康檢查。由于各 lvs 節點的檢查時間并不同步,是以,如果從後端某一 ecs 上進行單獨統計,會發現來自負載均衡的健康檢查請求在時間上并不會遵循上述時間間隔。 

6)不健康門檻值:必填屬性。表示同一 lvs 節點伺服器針對後端同一 ecs 伺服器,從成功到失敗的【連續】健康檢查失敗次數。可選值 2~10,預設為 3 次。 

7)健康門檻值:必填屬性。表示同一 lvs 節點伺服器針對後端同一 ecs 伺服器,從失敗到成功的【連續】健康檢查成功次數。可選值 2~10,預設為 3 次。 

8)正常狀态碼: 隻有 http 檢查方式時才有。非必填屬性。指定使用者判斷健康檢查正常的 http 狀态碼。可選值為 http_2xx、http_3xx、http_4xx、http_5xx,可多選。預設情況或不做任何選擇時,值置為 http_2xx。 

<b>二、更多實驗資訊</b> 

<b>網址:</b>https://edu.cloudcare.cn/courses/11bc5c2e31a3429082a2b012fe08034d/detail

繼續閱讀