[LVS] 負載均衡的方式和選擇

開篇:最近在研究LVS來實現TCP的負載均衡,本文介紹了負載均衡的方式。

集羣方式:

1 DNS實現負載均衡
DNS負載均衡是最簡單的建立網絡服務集羣方式。通過把域名解析到不同的服務器IP地址上,實現服務的集羣。一個DNS請求到達DNS服務器,DNS基於調度算法(如:循環調度)返回一個IP地址,客戶端接收到IP後,會緩存IP與域名的關係,在一定的TTL(Time to Live)中,使用這個映射。

Client查詢DNS的流程:

Client--> hosts文件--> DNS LocalCache(本地DNS緩存)-->DNS服務器(遞歸請求),每個DNS服務器也有緩存。

Client先查找本地的hosts文件,如果有就使用,如果沒有,再查詢本地的DNS緩存,有就使用,沒有再查DNS服務器。

缺點:
  1)由於Client緩存和DNS系統的繼承結構,非常容易出現負載不均衡的情況。
  2)不能提供好的可靠性,一個服務器節點失敗, 使用這個服務器的Clinet會一直報錯。

2 基於負載均衡的分發器

分發器,也叫做負載均衡器,能夠分發請求到集羣中的各個服務器,整個集羣在一個IP地址上,組成一個虛擬的服務。Client不知道集羣的存在,只知道是一個單個服務器。

優點:比DNS負載均衡提供了更細粒度的控制,可以基於每個連接來負載均衡。如果一個服務器失敗,Client可以馬上恢復。管理員可以隨時向集羣添加機器。

負載均衡可以在兩個層面(level)上完成:應用層和IP層. 例如,反向代理和pWEB是在應用層實現web服務器的負載均衡方法。譯註:nginx,haproxy等也是。他們傳遞HTTP請求給集羣中不同的Web服務器,得到返回結果,再把結果返回給Client。由於應用層是在ISO模型上層,當集羣中的服務器到達5臺以上時,應用層負載均衡器可能會是系統的瓶頸。IP層的負載均衡器的代價小(在ISO模型的下層),所有效率會更高。集羣中的服務器數量可以支持25到100臺。LVS就是爲這個目標實現的。


譯者注:其實,上面談論的是軟件實現負載均衡的方式,還可以使用硬件做負載均衡,如F5。F5也可以配置應用層和IP層的負載均衡。

基於上面討論的,實現TCP負載均衡有一下幾個方式:

1 DNS方法,缺點已經在上面提了。

2 LVS方法,目前看可以考慮,阿里的LBS就是使用LVS的。阿里的文檔中描述,LVS-DR模式可以支持20多臺業務服務器。如果這還不夠,可以考慮使用LVS-FullNAT模式,能支持100臺服務器。再不夠,可以考慮結合DNS。再不夠,你瘋了吧。

3 F5 硬件負載均衡,首先F5比較貴,再者TCP長連接會一直佔有F5的資源,所以一般沒有使用F5的。

4 Nginx,Haproxy:當使用它們代理TCP協議的負載均衡時,少量的代理可以,多的長連接不適合。

5 自己實現負載均衡


翻譯原文:http://www.linuxvirtualserver.org/why.html

發佈了165 篇原創文章 · 獲贊 38 · 訪問量 49萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章