需求描述:
1.可伸縮性:當服務的負載增長時,系統能被擴展來滿足需求,且不降低服務質量。
2.高可用性:儘管部分硬件和軟件會發生故障,整個系統的服務必須是7*24可用。
3.可管理性:整個系統可能在物理上很大,但應該容易管理。
4.價格有效性:整個系統實現應該是經濟的、易支付的。
集羣系統在成本消息上的高度可擴展性正是實現需求的有效思路。
負載均衡是由多臺服務器以對稱的方式組成一個服務器集合,每臺服務器都具有等價的地位,都可以單獨對外提供服務而無須其他服務器的輔助。
負載均衡設備的任務就是作爲應用服務器流量的入口,挑選最合適的一臺服務器,將客戶端的請求轉發給它處理,實現客戶端到真實服務端的透明轉發。在客戶端看來,就好像它面對的是一個擁有近乎無限能力的服務器,而本質上,真正提供服務的是後端的集羣。
負載均衡的分類:
負載均衡可以使用硬件設備實現,也可以使用軟件來實現。
常見的硬件有比較昂貴的F5和Array等商用的負載均衡器,它的優點就是有專業的維護團隊來對這些服務進行維護、缺點就是貴。
軟件的費用比較低廉,一般對軟件負載均衡的使用是隨着網站規模的不同來使用的。具體的應用需求還得具體分析,如果是中小型的Web應用,比如日PV(page view)小於1000萬,用Nginx就完全可以了;如果機器少,可以用DNS輪詢,LVS所耗費的機器還是比較多的;大型網站或重要的服務,可以考慮用LVS。
Nginx
http://network.51cto.com/art/201005/198212_all.htm
1.Nginx對網絡的依賴非常小,理論上能ping通就就能進行負載功能,這個也是它的優勢所在;
2.Nginx安裝和配置比較簡單,測試起來比較方便;
3.可以承擔高的負載壓力且穩定,一般能支撐超過幾萬次的併發量;
4.Nginx可以通過端口檢測到服務器內部的故障,比如根據服務器處理網頁返回的狀態碼、超時等等,並且會把返回錯誤的請求重新提交到另一個節點,不過其中缺點就是不支持url來檢測;
5.實現了可彈性化的架構,在壓力增大時可以臨時添加tomcat服務器到架構中。
Nginx負載均衡設置:
IP地址
Nginx(主負載均衡器):192.168.1.106
Nginx(從負載均衡器):192.168.1.107
VIP地址:192.168.1.108
Tomcat1的IP:192.168.1.102
Tomcat2的IP:192.168.1.103
Tomcat3的IP:192.168.1.105
①首先分別在3臺tomcat主機上佈置java環境,安裝tomcat。
②分別在二臺nginx負載均衡器上安裝nginx及配置。
③在二臺Nginx機上安裝及配置keepalived,做雙機互備。
keepalived的作用是檢測服務器的狀態,如果有一臺web服務器宕機,或工作出現故障,Keepalived將檢測到,並將有故障的服務器從系統中剔除,同時使用其他服務器代替該服務器的工作,當服務器工作正常後Keepalived自動將服務器加入到服務器羣中,這些工作全部自動完成,不需要人工干涉,需要人工做的只是修復故障的服務器。
LVS(Linux Virtual Server)
http://network.51cto.com/art/201110/298992.htm
LVS採用IP負載均衡技術和基於內容請求分發技術。調度器具有很好的吞吐率,將請求均衡地轉移到不同的服務器上執行,且調度器自動屏蔽掉服務器的故障,從而將一組服務器構成一個高性能的、高可用的虛擬服務器。整個服務器集羣的結構對客戶是透明的,而且無需修改客戶端和服務器端的程序。
特點:
1.負載能力強,在負載均衡軟件裏性能最強;
2.配置性比較低,這是一個缺點也是一個優點,因爲沒有可太多配置的東西,所以並不需要太多接觸,大大減少了人爲出錯的機率;
3.工作穩定,自身有完整的雙機熱備方案,如LVS+Keepalived和LVS+Heartbeat,不過我們在項目實施中用得最多的還是LVS/DR+Keepalived;
4.無流量,保證了均衡器IO的性能不會收到大流量的影響;
5.應用範圍比較廣,可以對所有應用做負載均衡;
6.如果是網站應用比較龐大的話,實施LVS/DR+Keepalived起來就比較複雜了,特別後面有Windows Server應用的機器的話,如果實施及配置還有維護過程就比較複雜了,相對而言,Nginx/HAProxy+Keepalived就簡單多了。
LVS集羣結構
LVS主要組成部分:
1.負載調度器,它是整個集羣對外面的前端機,負責將客戶的請求發送到一組服務器上執行,而客戶認爲服務是來自一個IP地址(我們可稱之爲虛擬IP地址)上的。
2.服務器池,是一組真正執行客戶請求的服務器,執行的服務器一般有WEB、MAIL、FTP和DNS等。
3.共享存儲,它爲服務器池提供一個共享的存儲區,這樣易使得服務器池擁有相同的內容,提供相同的服務。
LVS負載均衡方式:
1.Virtual Server via Network Address Translation NAT(VS/NAT)
2.Virtual Server via IP Tunneling(VS/TUN)
3.Virtual Server via Direct Routing(VS/DR)