1.背景介紹 隨著 Internet 的快速發展和業務量的不斷提高,基於網路的數據訪問流量迅速增長,特別是對數據 中心、大型企業以及門戶網站等的訪問,其訪問流量甚至達到了 10Gb/s 的級別;同時,伺服器網 站藉助 HTTP、FTP、SMTP 等應用程式,為訪問者提供了越來越豐富的內容和信息,服務 ...
1.背景介紹
隨著 Internet 的快速發展和業務量的不斷提高,基於網路的數據訪問流量迅速增長,特別是對數據 中心、大型企業以及門戶網站等的訪問,其訪問流量甚至達到了 10Gb/s 的級別;同時,伺服器網 站藉助 HTTP、FTP、SMTP 等應用程式,為訪問者提供了越來越豐富的內容和信息,伺服器逐漸 被數據淹沒;另外,大部分網站(尤其電子商務等網站)都需要提供不間斷 24 小時服務,任何服 務中斷或通信中的關鍵數據丟失都會造成直接的商業損失。所有這些都對應用服務提出了高性能和 高可靠性的需求。 但是,相對於網路技術的發展,伺服器處理速度和記憶體訪問速度的增長卻遠遠低於網路帶寬和應用 服務的增長,網路帶寬增長的同時帶來的用戶數量的增長,也使得伺服器資源消耗嚴重,因而服務 器成為了網路瓶頸。傳統的單機模式,也往往成為網路故障點。
針對以上情況的解決方案:
(1) 伺服器進行硬體升級:採用高性能伺服器替換現有低性能伺服器。 該方案的弊端:
高成本:高性能伺服器價格昂貴,需要高額成本投入,而原有低性能伺服器被閑置,造成資 源浪費。
可擴展性差:每一次業務量的提升,都將導致再一次硬體升級的高額成本投入,性能再卓越 的設備也無法滿足當前業務量的發展趨勢。
無法完全解決現在網路中面臨的問題:如單點故障問題,伺服器資源不夠用問題等。
(2) 組建伺服器集群,利用負載均衡技術在伺服器集群間進行業務均衡。
該方案的優勢: 低成本
可擴展性:當業務量增長時,系統可通過增加伺服器來滿足需求,且不影響已有業務,不降 低服務質量
高可靠性:單台伺服器故障時,由負載均衡設備將後續業務轉向其他伺服器,不影響後續業 務提供,保證業務不中斷。
2.知識剖析
負載均衡原理
系統的擴展可分為縱向(垂直)擴展和橫向(水平)擴展。縱向擴展,是從單機的角度通過增加硬體處理能力,比如CPU處理能力,記憶體容量,磁碟等方面,實現伺服器處理能力的提升,不能滿足大型分散式系統(網站),大流量,高併發,海量數據的問題。因此需要採用橫向擴展的方式,通過添加機器來滿足大型網站服務的處理能力。比如:一臺機器不能滿足,則增加兩台或者多台機器,共同承擔訪問壓力。這就是典型的集群和負載均衡架構:如下圖:
應用集群:將同一應用部署到多台機器上,組成處理集群,接收負載均衡設備分發的請求,進行處理,並返回相應數據。
負載均衡設備:將用戶訪問的請求,根據負載均衡演算法,分發到集群中的一臺處理伺服器。(一種把網路請求分散到一個伺服器集群中的可用伺服器上去的設備)
負載均衡的作用:
1.解決併發壓力,提高應用處理性能(增加吞吐量,加強網路處理能力);
2.提供故障轉移,實現高可用;
3.通過添加或減少伺服器數量,提供網站伸縮性(擴展性);
4.安全防護;(負載均衡設備上做一些過濾,黑白名單等處理)
負載均衡分類:
根據實現技術不同,可分為DNS負載均衡,HTTP負載均衡,IP負載均衡,反向代理負載均衡、鏈路層負載均衡等。
負載均衡演算法:
輪詢、 隨機、最少鏈接、Hash(源地址散列)、加權
硬體負載均衡:
採用硬體的方式實現負載均衡,一般是單獨的負載均衡伺服器,價格昂貴,一般土豪級公司可以考慮,業界領先的有兩款,F5和A10。
價格:F5, 15w~55w不等;A10, 55w-100w不等。
優點:功能全面支持各層級的負載均衡,支持全面的負載均衡演算法,支持全局負載均衡。一般軟體負載均衡支持到5萬級併發已經很困難了,硬體負載均衡可以支持。商用硬體負載均衡穩定性高,具備防火牆,防DDOS攻擊等安全功能,提供售後支持。
3.常見問題
怎麼配置負載均衡?
4.解決方案
1.部署至少兩台伺服器,我選擇在本地部署一臺jetty、一臺tomcat。
2.在nginx.conf配置文件中http括弧內添加如下配置:
upstream local_tomcat {
server localhost:8088;
server localhost:8089;}
server{
location / {
proxy_pass http://local_tomcat;}}
3.在hosts文件中添加解析功能變數名稱
127.0.0.1 local_tomcat
5.擴展思考
什麼是反向代理負載均衡?
反向代理(Reverse Proxy)方式是指以代理伺服器來接受internet上的連接請求,然後將請求轉發給內部網路上的伺服器,並將從伺服器上得到的結果返回給internet上請求連接的客戶端,此時代理伺服器對外就表現為一個伺服器,該伺服器就可稱之為代理伺服器。由於代理伺服器處在最終處理請求訪問的伺服器之前,因此可以在代理伺服器上做負載均衡。