LVS(linux virtual machine) 的簡寫,是一個虛擬的服務器集群系統,主要用于4層負載均衡。
宗旨:
使用集群技術和Linux操作系統實現一個高性能、高可用的服務器.
很好的可伸縮性(Scalability)
很好的可靠性(Reliability),應該還是高可用吧
很好的可管理性(Manageability)。很容易使用,很好學。
lvs自身應該不能實現高可用,需要結合其它軟件實現。
可伸縮性:
1、可伸縮性,簡單來說,是以更大的規模來做你現在所做的事。伸展一個Web應用的規模在于讓更多的人使用你的程序。如果你沒法找出方法在伸展規模的同時提高性能,沒關系。而且只要你可以伸展規模來處理更大數量的用戶,那么有幾個單點故障(single point of failure)也沒關系。
LVS的幾個術語:
VIP:Director用來向外部提供服務的IP地址,也就是DNS通過域名解析到的IP
RIP:集群節點(后臺真正提供服務的服務器)所使用的IP地址
DIP:Director用來和RIP進行交互的IP地址
CIP:客戶端使用的IP或公網IP
R S :集群節點服務器Real server
lvs內核模型:
LVS的三種負載均衡技術:
NAT
優點:服務器可以運行任何支持TCP/IP的操作系統,它只需要一個IP地址配置在LVS主機上,服務器組可以用私有的IP地址。
缺點:擴充能力有限,當服務器結點數目很多時,LVS主機本身有可能成為系統的新瓶頸,因為在VS/NAT中請求和響應封包都需要通過負載平衡LVS主機。
特點:
1、RIP要使用使用地址,網關指向DIP
2、請求報文和響應報文都需經過Director:所以Director可能成為系統性能瓶頸。
3、支不支持端口映射,支持
4、RS可以使用任意操作系統。
請求流程:
DR
VS/DR LVS主機只處理客戶到服務器端的連接,響應資料可以直接從獨立的網絡路由返回給客戶。這可以極大地提高LVS集群系統的伸縮性。
同 VS/TUN相比,這種方法沒有IP隧道的開銷,但是要求負載平衡LVS主機與實際服務器都有一塊網卡連在同一物理網段上,服務器網絡設備或者設備別名不 作 ARP 響應。
特點:
1、保證前端路由將VIP的報文通通發往Directory,而不是RS
解決方案:
(1)、靜態地址綁定,在前端路由器上操作
問題:未必有路由操作權限
(2)、在real server上配置iptables不讓響應
(3)、修改RS上的內核參數,將RS上的VIP配置在lo接口的別名上,并且限制其不能響應對VIP地址解析請求。
2、RS可以使用私有地址,也可以使用公網地址,此時可以通過互聯網對其直接進行訪問。
3、RS和Directory必須在同一物理網絡中。
4、所有的請求報文經由Director,但是響應報文必須不能經過Director
5、不支持端口映射。
6、RS可以是大多數常見的OS。
7、RS網關不指向DIP
請求流程
TUN
在VS/TUN 的集群系統中,負載平衡LVS主機只將請求分配到不同的實際服務器,實際服務器將應答的資料直接返回給用戶。這樣,負載平衡LVS主機就可以處理巨量的請 求,而不會成為系統的瓶頸。即使負載平衡LVS主機只有100Mbps的全雙工網卡,虛擬服務器的最大吞吐量可以達到幾Gbps。所以,VS/TUN可以 極大地增加負載平衡LVS主機分配的服務器數量,它可以用來構建高性能超級服務器。VS/TUN技術對服務器的要求是所有的服務器必須支持"IP Tunneling"或者"IP Encapsulation"協議。目前,VS/TUN 的后端服務器主要運行Linux操作系統。因為"IP Tunneling"正成為各個操作系統的標準協議,所以VS/TUN也會適用運行其它操作系統的后端服務器。
特點:
1、RIP、VIP、DIP全部是公網地址
2、RS的網關不會也不可能指向DIP
3、請求報文經由Director,但響應報文必須不能經過Director
4、不支持端口映射
5、支持隧道類型
請求流程
LVS的常見調度算法:
rr(round robin):將工作平均的分配到服務器 (用于實際服務主機性能一致)
lc:(least-connections )
向較少連接的服務器分配較多的工作(tcp計時器判斷后端連接數量。用于實際服務主機性能一致。)
overhead值,表示當前負載狀況 。
overhead = active*256 + innactive
wrr(weighted round robin):
加權輪詢,能者多勞。誰性能好分給誰的請求多。 (用于實際服務主機性能不一致時)
wlc(weighted least-connections):
考慮它們的容量向較少連接的服務器分配較多的工作。容量通過用戶指定的砝碼來說明,可以根據裝載信息動態的向上或向下調整。(用于實際服務主機性能不一致時)
overhead = (active*256 + inactive) /weight
sh:(source hashing):
源地址hash,為了session持久的功能,在IPv4的代碼中自行位置一個hash表,把CIPhash存儲,任何一個客戶端在來,先查hash表。這就是來自同一個IP的主機將始終定向至同一個real server.
dh:(destination hashing),目標地址hash,real server訪問外部時,
還有一些調度算法,用的比較少,就不再列舉了。
參考:
http://www.infoq.com/cn/news/2007/10/whatisscalability 你真的明白什么是可伸縮性嗎?
http://os.51cto.com/art/201202/319979.htm 專題:LVS負載均衡手冊
總結:
1、網上已經有很多lvs的資料了,這篇博客也沒有什么新意,edraw軟件在電腦上沒反應,沒有好的畫圖工具,三種lvs 調度模型,描述的就不夠詳細,而且是摘抄的別人的圖。
2、感覺概念一般是死的,寫來寫去好像也就是這么多東西,不過總結一下對自己有些幫助吧。
3、如果布局太差,那么在編輯的時候,文字間距離看起來還行啊,預覽的時候行間距就很大,這下次編輯的時候在看看是不是還是這種情況。
最后就是,接著這篇博客,會寫一下lvs調度模型的具體實現。
原創文章,作者:艾賀,如若轉載,請注明出處:http://www.www58058.com/8096
總結的內容到位,只是樣式上的亂了些,很容易看到一半就放棄了
下次我要注意布局