Web負載均衡的幾種實現方式


負載均衡(Load Balance)是集群技術(Cluster)的一種應用。負載均衡可以將工作任務分攤到多個處理單元,從而提高並發處理能力。目前最常見的負載均衡應用是Web負載均衡。根據實現的原理不同,常見的web負載均衡技術包括:DNS輪詢、IP負載均衡和CDN。其中IP負載均衡可以使用硬件設備或軟件方式來實現。

什么是web負載均衡

 

服務器集群(Cluster)使得多個服務器節點能夠協同工作,根據目的的不同,服務器集群可以分為:

  • 高性能集群:將單個重負載的請求分散到多個節點進行處理,最后再將處理結果進行匯總
  • 高可用集群:提高冗余單元,避免單點故障
  • 負載均衡集群:將大量的並發請求分擔到多個處理節點。由於單個處理節點的故障不影響整個服務,負載均衡集群同時也實現了高可用性。

一般提到的負載均衡(Load Balance),是指實現負載均衡集群。負載均衡實現了橫向擴展(Scale Out),避免縱向的升級(Scale Up)換代。

本文中的web負載均衡,特指能夠分擔web請求(http,https等)的負載均衡技術。

基本原理

 

任何的負載均衡技術都要想辦法建立某種一對多的映射機制:一個請求的入口映射到多個處理請求的節點,從而實現分而治之(Divide and Conquer)。

這種映射機制使得多個物理存在對外體現為一個虛擬的整體,對服務的請求者屏蔽了內部的結構。

采用不同的機制建立映射關系,可以形成不同的負載均衡技術,常見的包括:

  • DNS輪詢
  • CDN
  • IP負載均衡

DNS

 

DNS輪詢是最簡單的負載均衡方式。以域名作為訪問入口,通過配置多條DNS A記錄使得請求可以分配到不同的服務器。

DNS輪詢沒有快速的健康檢查機制,而且只支持WRR的調度策略導致負載很難“均衡”,通常用於要求不高的場景。並且DNS輪詢方式直接將服務器的真實地址暴露給用戶,不利於服務器安全。

CDN

CDN(Content Delivery Network,內容分發網絡)。通過發布機制將內容同步到大量的緩存節點,並在DNS服務器上進行擴展,找到里用戶最近的緩存節點作為服務提供節點。

因為很難自建大量的緩存節點,所以通常使用CDN運營商的服務。目前國內的服務商很少,而且按流量計費,價格也比較昂貴。

 

IP負載均衡

 

IP負載均衡是基於特定的TCP/IP技術實現的負載均衡。比如NAT、DR、Turning等。是最經常使用的方式。關於其原理,可以參考下面另一篇文章:lvs中的負載均衡方式

IP負載均衡可以使用硬件設備,也可以使用軟件實現。硬件設備的主要產品是F5-BIG-IP-GTM(簡稱F5),軟件產品主要有LVS、HAProxy、NginX。其中LVS、HAProxy可以工作在4-7層,NginX工作在7層。關於三者的簡單對比,可以參考這里

硬件負載均衡設備可以將核心部分做成芯片,性能和穩定性更好,而且商用產品的可管理性、文檔和服務都比較好。唯一的問題就是價格。

軟件負載均衡通常是開源軟件。自由度較高,但學習成本和管理成本會比較大。

 

F5

F5的全稱是F5-BIG-IP-GTM,是最流行的硬件負載均衡設備,其並發能力達到百萬級

F5的主要特性包括:

  1. 多鏈路的負載均衡和冗余

    可以接入多條ISP鏈路,在鏈路之間實現負載均衡和高可用。

  2. 防火牆負載均衡

    F5具有異構防火牆的負載均衡與故障自動排除能力。

  3. 服務器負載均衡

    這是F5最主要的功能,F5可以配置針對所有的對外提供服務的服務器配置Virtual Server實現負載均衡、健康檢查、回話保持等。

  4. 高可用

    F5設備自身的冗余設計能夠保證99.999%的正常運行時間,雙機F5的故障切換時間為毫秒級。

    使用F5可以配置整個集群的鏈路冗余和服務器冗余,提高可靠的健康檢查機制,以保證高可用。

  5. 安全性

    與防火牆類似,F5采用缺省拒絕策略,可以為任何站點增加額外的安全保護,防御普通網絡攻擊,包括DDoS、IP欺騙、SYN攻擊、teartop和land攻擊、ICMP攻擊等。

  6. 易於管理

    F5提供HTTPS、SSH、Telnet、SNMP等多種管理方式,包含詳盡的實時報告和歷史紀錄報告。同時還提供二次開發包(i-Control)。

  7. 其他

    F5還提供了SSL加速、軟件升級、IP地址過濾、帶寬控制等輔助功能。

 

為了提高服務器的性能和工作負載能力,企業通常會使用DNS服務器、網絡地址轉換等技術來實現多服務器負載均衡,特別是目前企業對外的互聯網Web網站,許多都是通過幾台服務器來完成服務器訪問的負載均衡。

 

目前企業使用的所謂“負載均衡服務器”,實際上它是應用系統的一種控制服務器,所有用戶的請求都首先到此服務器,然后由此服務器根據各個實際處理服務器狀態將請求具體分配到某個實際處理服務器中,對外公開的域名與IP地址都是這台服務器。負載均衡控制與管理軟件安裝在這台服務器上,這台服務器一般只做負載均衡任務分配,但不是實際對網絡請求進行處理的服務器。

 

 

在互聯網高速發展的時代,大數據量、高並發等是互聯網網站提及最多的。如何處理高並發帶來的系統性能問題,最終大家都會使用負載均衡機制。它是根據某種負載策略把請求分發到集群中的每一台服務器上,讓整個服務器群來處理網站的請求。
公司比較有錢的,可以購買專門負責負載均衡的硬件(如:F5),效果肯定會很好。對於大部分公司,會選擇廉價有效的方法擴展整個系統的架構,來增加服務器的吞吐量和處理能力,以及承載能力。

2.2、集群(Cluster)

 用N台服務器構成一個松耦合的多處理器系統(對外來說,他們就是一個服務器),它們之間通過網絡實現通信。讓N台服務器之間相互協作,共同承載一個網站的請求壓力。

2.3、高可用(HA)

 在集群服務器架構中,當主服務器故障時,備份服務器能夠自動接管主服務器的工作,並及時切換過去,以實現對用戶的不間斷服務。

2.4、session復制/共享

 在訪問系統的會話過程中,用戶登錄系統后,不管訪問系統的任何資源地址都不需要重復登錄,這里面servlet容易保存了該用戶的會話(session)。如果兩個tomcat(A、B)提供集群服務時候,用戶在A-tomcat上登錄,接下來的請求web服務器根據策略分發到B-tomcat,因為B-tomcat沒有保存用戶的會話(session)信息,不知道其登錄,會跳轉到登錄界面。
這時候我們需要讓B-tomcat也保存有A-tomcat的會話,我們可以使用tomcat的session復制實現或者通過其他手段讓session共享。

 

3、常用web集群
3.1、tomcat集群方案
 apache+tomcat;ngnix+tomcat;lvs+nginx+tomcat;大家比較熟悉的是前兩種。(lvs負責集群調度,nginx負責靜態文件處理,tomcat負責動態文件處理[最優選擇])。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM