LVS(Linux Virtual Server)三种负载均衡模型和十种调度的简单介绍
?
?
LVS?(Linux?Virtual?Server)
LVS(Linux?Virtual?Server)其實就是針對高可伸縮、高可用網絡服務的需求,給出了基于IP層和基于內容請求分發的負載平衡調度解決方法,并在Linux內核中實現了這些方法,將一組服務器構成一個實現可伸縮的、高可用網絡服務的虛擬服務器。所以,lvs需要內核有ipvs支持,確保你的內核支持ipvs后,只需安裝ipvsadm就可以把一臺服務器配置成負載調度器(Load?Balancer)。對外提供服務的IP,也就是我們訪問的IP稱做VIP。調度器LB的任務主要是分發請求,真正處理的是真實服務器(Real?Server)。
LVS的三種負載均衡模型:
為了區別這三種模型,我們可以先做一下對比
| ? | NAT模型 | DR模型 | TUN模型 |
| 集群節點(rip和dip) | 需要在同一個子網當中 | 必須在同一個物理網絡當中 | 不需要在一個物理網絡當中 |
| rip要求 | 私有地址,僅用于節點之間 | 可以使用公網地址 | 一定不能是私有地址 |
| Director處理的請求 | 處理入站和出站 | 僅處理入站 | 僅處理入站 |
| Real-server的網關 | 要指向dip | 不能指向dip,而是路由器 | 不能指向dip,而是路由器 |
| 端口映射 | 可以實現 | 不能實現 | 不能實現 |
| Real-server服務器要求 | 任意操作系統 | 支持大多數操作系統 | 必須是支持隧道功能的操作系統 |
注:rip為real-server的IP地址,dip為director的IP地址
?
?
LVS-NAT?的數據轉發流程是:Director機器收到外界請求,改寫數據包的目標地址,按相應的調度算法將其發送到相應Real?Server上,Real?Server處理完該請求后,將結果數據包返回到其默認網關,即Director機器上,Director機器再改寫數據包的源地址,最后將其返回給外界。這樣就完成一次負載調度。
LVS-NAT方式負載均衡集群(圖?1)
?
?
注:LVS-NAT集群中Real?Server可以是任何的操作系統,而且無需做任何特殊的設定,惟一要做的就是將其默認網關指向Director機器。Real?Server可以使用局域網?的?內?部?IP(192.168.0.0/24)。Director要有兩塊網卡,一塊網卡綁定一個外部IP地址(10.0.0.1),另一塊網卡綁定局域網的內部IP(192.168.0.254),作為Real?Server的默認網關。
?
?
LVS-DR的數據轉發流程是:Director機器收到外界請求,按相應的調度算法將其直接發送到相應Real?Server,Real?Server處理完該請求后,將結果數據包直接返回給客戶,完成一次負載調度。
LVS-DR?方式負載均衡集群(圖?2)
?
?
LVS-DR集群中注意Real?Server的內核也必須打上修正ARP問題的內核補丁
?
?
LVS-TUN的數據轉發流程是:Director機器收到外界請求,按相應的調度算法將其通過IP隧道發送到相應Real?Server,Real?Server處理完該請求后,將結果數據包直接返回給客戶。至此完成一次負載調度。
LVS-TUN方式負載均衡集群(圖?3)
?
?
LVS-TUN集群中注意Real?Server的內核必須打上修正ARP問題的內核補丁。該方式中?Director將客戶請求分配到不同的Real?Server,Real?Server處理請求后直接回應給用戶,這樣Director就只處理客戶機與服務器的一半連接,極大地提高了Director的調度處理能力,?使集群系統能容納更多的節點數。另外TUN方式中的Real?Server可以在任何LAN或WAN?上運行,這樣可以構筑跨地域的集群,其應對災難的能力也更強,但是服務器需要為IP封裝付出一定的資源開銷,而且后端的Real?Server必須是支持IP?Tunneling的操作系統。
?
?
LVS的十種調度方法
輪調(RR)調度器將外部請求按順序輪流分配到集群中的真實服務器上,它均等地對待每一臺服務器,而不管服務器上實際的連接數和系統負載,每個服務器都一樣多。
加權輪調(WRR)?調度器根據真實服務器的不同處理能力來調度訪問請求。這樣可以保證處理能力強的服務器處理更多的訪問流量。調度器可以自動問詢真實服務器的負載情況,并動態地調整其權值。
目標地址Hash?根據請求的目標IP地址,作為散列鍵(Hash?Key)從靜態分配的散列表找出對應的服務器,若該服務器是可用的且未超載,將請求發送到該服務器,否則返回空。?
源地址Hashing根據請求的源IP地址,作為散列鍵(Hash?Key)從靜態分配的散列表找出對應的服務器,若該服務器是可用的且未超載,將請求發送到該服務器,否則返回空。
最少鏈接(LC)根據RS算法將請求調度到已建立的鏈接數最少的服務器上。
RS=active*256+inactive=overhead??active活動連接數,inactive非活動連接數,overhead值越小則連接到誰上邊
加權最少鏈接(WLC)?在集群系統中的服務器性能差異較大的情況下,既要根據RS算法,還要考慮服務器的性能,具有較高權值的服務器將承受較大比例的活動連接負載。
最短的期望的延遲(SED)?基于WLC,但卻有所改變,依據(active+1)*256/weight=overhead,值越小,則連接到哪個服務器上。
最少隊列調度(NQ)無需隊列。如果有臺realserver的連接數=0就直接分配過去,不需要在進行sed運算
基于局部性的最少鏈接(LBLC)針對目標IP地址的負載均衡,目前主要用于Cache集群系統。該算法根據請求的目標IP地址找出該目標IP地址最近使用的服務器,若該服務器是可用的且沒有超載,將請求發送到該服務器;若服務器不存在,或者該服務器超載且有服務器處于一半的工作負載,則用"最少鏈接"的原則選出一個可用的服務器,將請求發送到該服務器。
帶復制的基于局部性最少鏈接(LBLCR)也是針對目標IP地址的負載均衡,目前主要用于?Cache集群系統。它與LBLC算法的不同之處是它要維護從一個目標IP地址到一組服務器的映射,LBLC算法維護從一個目標IP地址到一臺服務器的映而射。該算法根據請求的目標IP地址找出該目標IP地址對應的服務器組,按"最小連接"原則從服務器組中選出一臺服務器,若服務器沒有超載,將請求發送到該服務器,若服務器超載;則按"最小連接"原則從這個集群中選出一臺服務器,將該服務器加入到服務器組中,將請求發送到該服務器。同時,當該服務器組有一段時間沒有被修改,將最忙的服務器從服務器組中刪除,以降低復制的程度。??
本文出自 “譕淚らづ寳唄” 博客,請務必保留此出處http://fengjunfei.blog.51cto.com/4356100/834800
posted on 2012-07-07 11:33 冰雨戰士 閱讀(...) 評論(...) 編輯 收藏轉載于:https://www.cnblogs.com/zfying/archive/2012/07/07/2580494.html
總結
以上是生活随笔為你收集整理的LVS(Linux Virtual Server)三种负载均衡模型和十种调度的简单介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 求往事难忘歌词。
- 下一篇: 求一个宝贝个性签名!