不少文檔都是一些操做相關的,對於具體的原理出現的仍是比較少,要想往更高的方向去的話,必需要懂得其原理,出現問題,才能快速找到問題所在。算法
分享一個經典對話:後端
問:你是怎麼處理網絡故障的?
答:有經驗走經驗,沒經驗走原理
問:若是走原理仍是解決不了呢?
答:由於你對原理理解的還不夠深刻^_^
今天分享一個LVS的原理:服務器
LVS 有三種負載均衡的模式,分別是VS/NAT(nat 模式) VS/DR(路由模式) VS/TUN(隧道模式)網絡
LVS 有十種調度算法:併發
1.輪詢調度
2.加權輪詢調度
3.最小鏈接調度
4.加權最小鏈接調度
5.基於局部的最少鏈接
6.帶複製的基於局部性的最少鏈接
7.目標地址散列調度
8.源地址散列調度U
9.最短的指望的延遲
10.最少隊列調度負載均衡
1、NAT模式(VS-NAT)spa
原理:就是把客戶端發來的數據包的IP頭的目的地址,在負載均衡器上換成其中一臺RS的IP地址操作系統
併發至此RS來處理,RS處理完後把數據交給負載均衡器,負載均衡器再把數據包原IP地址改成本身的IPcode
將目的地址改成客戶端IP地址便可期間,不管是進來的流量,仍是出去的流量,都必須通過負載均衡器blog
優勢:集羣中的物理服務器可使用任何支持TCP/IP操做系統,只有負載均衡器須要一個合法的IP地址
缺點:擴展性有限。當服務器節點(普通PC服務器)增加過多時,負載均衡器將成爲整個系統的瓶頸
由於全部的請求包和應答包的流向都通過負載均衡器。當服務器節點過多時
大量的數據包都交匯在負載均衡器那,速度就會變慢!
2、IP隧道模式(VS-TUN)
原理:首先要知道,互聯網上的大多Internet服務的請求包很短小,而應答包一般很大
那麼隧道模式就是,把客戶端發來的數據包,封裝一個新的IP頭標記(僅目的IP)發給RS
RS收到後,先把數據包的頭解開,還原數據包,處理後,直接返回給客戶端,不須要再通過
負載均衡器。注意,因爲RS須要對負載均衡器發過來的數據包進行還原,因此說必須支持
IPTUNNEL協議,因此,在RS的內核中,必須編譯支持IPTUNNEL這個選項
優勢:負載均衡器只負責將請求包分發給後端節點服務器,而RS將應答包直接發給用戶
因此,減小了負載均衡器的大量數據流動,負載均衡器再也不是系統的瓶頸,就能處理很巨大的請求量
這種方式,一臺負載均衡器可以爲不少RS進行分發。並且跑在公網上就能進行不一樣地域的分發。
缺點:隧道模式的RS節點須要合法IP,這種方式須要全部的服務器支持」IP Tunneling」
(IP Encapsulation)協議,服務器可能只侷限在部分Linux系統上
3、直接路由模式(VS-DR)
原理:負載均衡器和RS都使用同一個IP對外服務但只有DR對ARP請求進行響應
全部RS對自己這個IP的ARP請求保持靜默也就是說,網關會把對這個服務IP的請求所有定向給DR
而DR收到數據包後根據調度算法,找出對應的RS,把目的MAC地址改成RS的MAC(由於IP一致)
並將請求分發給這臺RS這時RS收到這個數據包,處理完成以後,因爲IP一致,能夠直接將數據返給客戶
則等於直接從客戶端收到這個數據包無異,處理後直接返回給客戶端
因爲負載均衡器要對二層包頭進行改換,因此負載均衡器和RS之間必須在一個廣播域
也能夠簡單的理解爲在同一臺交換機上
優勢:和TUN(隧道模式)同樣,負載均衡器也只是分發請求,應答包經過單獨的路由方法返回給客戶端
與VS-TUN相比,VS-DR這種實現方式不須要隧道結構,所以可使用大多數操做系統作爲物理服務器。
缺點:(不能說缺點,只能說是不足)要求負載均衡器的網卡必須與物理網卡在一個物理段上。