您好,登錄后才能下訂單哦!
什么是負載均衡?
負載均衡是由多臺服務器以對稱的方式組成一個服務器集合,每臺服務器都具有等價的地位,都可以單獨對外供應效力而無須其他服務器的輔助。經過某種負載分管技術,將外部發送來的央求均勻分配到對稱結構中的某一臺服務器上,而接收到央求的服務器獨登時回應客戶的央求。均衡負載可以平均分配客戶央求到服務器列陣,籍此供應快速獲取重要數據,解決很多并發訪問效力問題。這種群集技術可以用最少的出資取得接近于大型主機的性能。
負載均衡的類型
根據DNS的負載均衡
經過DNS效力中的隨機姓名解析來完結負載均衡,在DNS服務器中,可認為多個不同的地址配置同一個姓名,而最終查詢這個姓名的客戶機將在解析這個姓名時得到其中一個地址。因此,關于同一個姓名,不同的客戶時機得到不同的地址,他們也就訪問不同地址上的Web服務器,然后達到負載均衡的目的。
反向署理負載均衡
運用署理服務器可以將央求轉發給內部的Web服務器,讓署理服務器將央求均勻地轉發給多臺內部Web服務器之一上,然后達到負載均衡的目的。這種署理方式與一般的署理方式有所不同,標準署理方式是客戶運用署理訪問多個外部Web服務器,而這種署理方式是多個客戶運用它訪問內部Web服務器,因此也被稱為反向署理模式。Apusic負載均衡器就歸于這種類型的。
根據NAT的負載均衡技術
網絡地址變換為在內部地址和外部地址之間進行變換,以便具備內部地址的計算機能訪問外部網絡,而當外部網絡中的計算機訪問地址變換網關擁有的某一外部地址時,地址變換網關能將其轉發到一個映射的內部地址上。因此如果地址變換網關能將每個銜接均勻變換為不同的內部服務器地址,爾后外部網絡中的計算機就各自與自己變換得到的地址上服務器進行通訊,然后達到負載分管的目的。
負載均衡服務器的好處
由于網民數量激增,網絡訪問路徑過長,用戶的訪問質量簡略遭到嚴重影響,尤其是當用戶與網站之間的鏈路被出人意料的流量擁塞時。而這種情況經常發生在異地互聯網用戶急速增加的運用上。這時候,如果在效力端運用負載均衡(GSLB)技術,就可以合理分管系統負載、提高系統可靠性、支持網站內容的虛擬化。在實際運用中,許多IDC,如互聯通更是選用GSLB與Cache、Mirror相結合的方法來供應網絡加速效力。負載均衡效力具有如下特點:
高智能化
運用虛擬IP(VIP)地址代表方針服務器和運用,將會話分配到最高可用性的服務器,全程監控每個會話,效力恢復后自動重新掛號,并轉發客戶機和服務器信息包時供應全地址變換。簡略有用的負載均衡算法可以配置包括循環法、最少銜接法、散列法或最少失誤法等多種不同的負載均衡方法,也可以對個別服務器配置最大銜接數量閾值和加權值,以防止服務器超載。
高可靠性
架構在專用的高速骨干網之上,該骨干網絡供應延遲極小的網絡連通性,然后保障GSLB的功能正常發揮和高性能,遠遠優于根據公網的GSLB。并且,當主站點機房的Internet 出口呈現毛病時,還能將用戶自動、透明地從其他分站點Internet入口導向主站點服務器。
高可用性
選用熱備份方法,在極短時間內對服務器鏈路、交換端口和交換機進行檢測和毛病轉移,使運用免受毛病影響;任何一個服務器或服務器群發生毛病或阻塞,用戶將被自動引導到下一個最佳備份服務器或站點,然后更進一步提高了效力和內容的可用性。
服務器負載均衡
網絡的負載均衡是一種動態均衡技術,經過一些東西實時地分析數據包,掌握網絡中的數據流量狀況,把任務合理均衡地分配出去。
計算集中型的運用,比如電子商務網站,服務器計算負荷會很大;讀寫頻繁的運用,比如網絡數據庫,存儲系統則面臨著檢測;傳輸量大的運用,比如視頻效力,數據總是無法快速傳送,無法完結最好的效果;訪問量大的運用,路由器與防火墻簡略成為瓶頸。想要合理解決這些問題,晉級設備、改動拓撲是”笨辦法”,相對巧妙的方法是選用負載均衡技術,用多個設備一起完結任務。
負載均衡技術根據現有網絡結構,供應了一種擴展服務器帶寬和增加服務器吞吐量的廉價有用的方法,加強了網絡數據處理能力,提高了網絡的靈活性和可用性。負載均衡的運用,可以有用地解決網絡擁塞問題,可以就近供應效力,完結地理位置無關性(異地負載均衡)。同時,這項技術還能提高服務器的響應速度,提高服務器及其他資源的利用效率,防止網絡關鍵部位呈現單點失效,然后為用戶供應更好的訪問質量。
本文介紹了負載均衡的基本功能和實現原理,看起來并不難,但負載均衡涉及的知識其實非常的廣泛,根據各個用戶系統的不同,我們要熟悉不同的協議和應用流程,甚至涉及到某些開發語言和軟件平臺,否則在出現故障的時候,我們可能沒有能力做出有效的判斷,從這個意義上來說,一個負載均衡設備的工程師要掌握網絡,應用和系統等各方面的知識,這些都要當作基礎來積累。
負載均衡設備作為縱跨網絡2-7層協議的設備,往往放置在網絡設備和應用設備的連接處,對工程師在網絡和應用基本知識方面的要求遠高于其他設備,所以我們要在基本功能的理解上下更多的功夫。負載均衡設備還有另外一個稱呼:4/7層交換機,但它首先是個2-3層交換機,這要求我們首先掌握2-3層的基本知識,然后才是本文介紹的內容。
服務器負載均衡有三大基本Feature:負載均衡算法,健康檢查和會話保持,這三個Feature是保證負載均衡正常工作的基本要素。其他一些功能都是在這三個功能之上的一些深化。下面我們具體介紹一下各個功能的作用和原理。
在沒有部署負載均衡設備之前,用戶直接訪問服務器地址(中間或許有在防火墻上將服務器地址映射成別的地址,但本質上還是一對一的訪問)。當單臺服務器由于性能不足無法處理眾多用戶的訪問時,就要考慮用多臺服務器來提供服務,實現的方式就是負載均衡。負載均衡設備的實現原理是把多臺服務器的地址映射成一個對外的服務IP(我們通常稱之為VIP,關于服務器的映射可以直接將服務器IP映射成VIP地址,也可以將服務器IP:Port映射成VIP:Port,不同的映射方式會采取相應的健康檢查,在端口映射時,服務器端口與VIP端口可以不相同),這個過程對用戶端是透明的,用戶實際上不知道服務器是做了負載均衡的,因為他們訪問的還是一個目的IP,那么用戶的訪問到達負載均衡設備后,如何把用戶的訪問分發到合適的服務器就是負載均衡設備要做的工作了,具體來說用到的就是上述的三大Feature。
我們來做一個詳細的訪問流程分析:
用戶(IP:207.17.117.20)訪問域名www.a10networks.com,首先會通過DNS查詢解析出這個域名的公網地址:199.237.202.124,接下來用戶207.17.117.20會訪問199.237.202.124這個地址,因此數據包會到達負載均衡設備,接下來負載均衡設備會把數據包分發到合適的服務器,看下圖:
負載均衡設備在將數據包發給服務器時,數據包是做了一些變化的,如上圖所示,數據包到達負載均衡設備之前,源地址是:207.17.117.20,目的地址是:199.237.202.124, 當負載均衡設備將數據包轉發給選中的服務器時,源地址還是:207.17.117.20,目的地址變為172.16.20.1,我們稱這種方式為目的地址NAT(DNAT)。一般來說,在服務器負載均衡中DNAT是一定要做的(還有另一種模式叫做服務器直接返回-DSR,是不做DNAT的,我們將另行討論),而源地址根據部署模式的不同,有時候也需要轉換成別的地址,我們稱之為:源地址NAT(SNAT),一般來說,旁路模式需要做SNAT,而串接模式不需要,本示意圖為串接模式,所以源地址沒做NAT。
我們再看服務器的返回包,如下圖所示,也經過了IP地址的轉換過程,不過應答包中源/目的地址與請求包正好對調,從服務器回來的包源地址為172.16.20.1,目的地址為207.17.117.20,到達負載均衡設備后,負載均衡設備將源地址改為199.237.202.124,然后轉發給用戶,保證了訪問的一致性。
以上是單個數據包的處理流程。那么負載均衡設備是怎么選擇服務器的呢? 這就是我們要介紹的第一個Feature:
負載均衡算法
一般來說負載均衡設備都會默認支持多種負載均衡分發策略,例如:
Ø 輪詢(RoundRobin)將請求順序循環地發到每個服務器。當其中某個服務器發生故障,AX就把其從順序循環隊列中拿出,不參加下一次的輪詢,直到其恢復正常。
Ø 比率(Ratio):給每個服務器分配一個加權值為比例,根椐這個比例,把用戶的請求分配到每個服務器。當其中某個服務器發生故障,AX就把其從服務器隊列中拿出,不參加下一次的用戶請求的分配,直到其恢復正常。
Ø 優先權(Priority):給所有服務器分組,給每個組定義優先權,將用戶的請求分配給優先級最高的服務器組(在同一組內,采用預先設定的輪詢或比率算法,分配用戶的請求);當最高優先級中所有服務器或者指定數量的服務器出現故障,AX將把請求送給次優先級的服務器組。這種方式,實際為用戶提供一種熱備份的方式。
Ø 最少連接數(LeastConnection):AX會記錄當前每臺服務器或者服務端口上的連接數,新的連接將傳遞給連接數最少的服務器。當其中某個服務器發生故障,AX就把其從服務器隊列中拿出,不參加下一次的用戶請求的分配,直到其恢復正常。
Ø 最快響應時間(Fast Reponse time):新的連接傳遞給那些響應最快的服務器。當其中某個服務器發生故障,AX就把其從服務器隊列中拿出,不參加下一次的用戶請求的分配,直到其恢復正常。
以上為通用的負載均衡算法,還有一些算法根據不同的需求也可能會用到,例如:
Ø 哈希算法( hash): 將客戶端的源地址,端口進行哈希運算,根據運算的結果轉發給一臺服務器進行處理,當其中某個服務器發生故障,就把其從服務器隊列中拿出,不參加下一次的用戶請求的分配,直到其恢復正常。
Ø 基于策略的負載均衡:針對不同的數據流設置導向規則,用戶可自行編輯流量分配策略,利用這些策略對通過的數據流實施導向控制。
Ø 基于數據包的內容分發:例如判斷HTTP的URL,如果URL中帶有.jpg的擴展名,就把數據包轉發到指定的服務器。
繼續看圖分析,第二個用戶207.17.117.21也訪問www.a10networks.com,負載均衡設備根據負載均衡算法將第二個用戶的請求轉發到第二臺服務器來處理。
假設在工作過程中,突然有一臺服務器出現問題怎么辦? 這就涉及到我們要介紹的第二個Feature:
健康檢查
健康檢查用于檢查服務器開放的各種服務的可用狀態。負載均衡設備一般會配置各種健康檢查方法,例如Ping,TCP,UDP,HTTP,FTP,DNS等。Ping屬于第三層的健康檢查,用于檢查服務器IP的連通性,而TCP/UDP屬于第四層的健康檢查,用于檢查服務端口的UP/DOWN,如果要檢查的更準確,就要用到基于7層的健康檢查,例如創建一個HTTP健康檢查,Get一個頁面回來,并且檢查頁面內容是否包含一個指定的字符串,如果包含,則服務是UP的,如果不包含或者取不回頁面,就認為該服務器的Web服務是不可用(DOWN)的。如下圖所示,負載均衡設備檢查到172.16.20.3這臺服務器的80端口是DOWN的,負載均衡設備將不把后面的連接轉發到這臺服務器,而是根據算法將數據包轉發到別的服務器。創建健康檢查時可以設定檢查的間隔時間和嘗試次數,例如設定間隔時間為5秒,嘗試次數為3,那么負載均衡設備每隔5秒發起一次健康檢查,如果檢查失敗,則嘗試3次,如果3次都檢查失敗,則把該服務標記為DOWN,然后服務器仍然會每隔5秒對DOWN的服務器進行檢查,當某個時刻發現該服務器健康檢查又成功了,則把該服務器重新標記為UP。健康檢查的間隔時間和嘗試次數要根據綜合情況來設置,原則是既不會對業務產生影響,又不會對負載均衡設備造成較大負擔。
假設是同一個用戶繼續訪問,后續的連接會怎么處理呢? 看下圖:
用戶207.17.117.25之前發起的第一個連接是207.17.117.25:4003-〉199.237.202.127:80,負載均衡設備將該連接轉發到了172.16.20.4,接著發起第二個連接207.17.117.25:4004-〉199.237.202.127:80,我們看到該連接還是轉發到了服務器172.16.20.4,為什么呢?因為負載均衡設備配置了會話保持。
會話保持
會話保持用于保持會話的連續性和一致性,由于服務器之間很難做到實時同步用戶訪問信息,這就要求把用戶的前后訪問會話保持到一臺服務器上來處理。舉個例子,用戶訪問一個電子商務網站,如果用戶登錄時是由第一臺服務器來處理的,但用戶購買商品的動作卻由第二臺服務器來處理,第二臺服務器由于不知道用戶信息,所以本次購買就不會成功。這種情況就需要會話保持,把用戶的操作都通過第一臺服務器來處理才能成功。當然并不是所有的訪問都需要會話保持,例如服務器提供的是靜態頁面比如網站的新聞頻道,各臺服務器都有相同的內容,這種訪問就不需要會話保持。
負載均衡設備一般會默認配置一些會話保持的選項,例如源地址的會話保持,Cookie會話保持等,基于不同的應用要配置不同的會話保持,否則會引起負載的不均衡甚至訪問異常。具體可參考本人的另一篇拙作:《不同應用環境下會話保持方式的選擇》。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。