Web負載均衡的幾種實現方式
摘要:
負載均衡(Load Balance)是集群技術(Cluster)的一種應用。負載均衡可以將工作任務分攤到多個處理單元,從而提高並發處理能力。目前最常見的負載均衡應用是Web負載均衡。根據實現的原理不同,常見的web負載均衡技術包括:DNS輪詢、IP負載均衡和CDN。其中IP負載均衡可以使用硬件設備或軟件方式來實現。
什么是web負載均衡
服務器集群(Cluster)使得多個服務器節點能夠協同工作,根據目的的不同,服務器集群可以分為:
高性能集群:將單個重負載的請求分散到多個節點進行處理,最后再將處理結果進行匯總
高可用集群:提高冗余單元,避免單點故障
負載均衡集群:將大量的並發請求分擔到多個處理節點。由於單個處理節點的故障不影響整個服務,負載均衡集群同時也實現了高可用性。
一般提到的負載均衡(Load Balance),是指實現負載均衡集群。負載均衡實現了橫向擴展,避免縱向的升級換代。
本文中的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的主要特性包括:
多鏈路的負載均衡和冗余
可以接入多條ISP鏈路,在鏈路之間實現負載均衡和高可用。
防火牆負載均衡
F5具有異構防火牆的負載均衡與故障自動排除能力。
服務器負載均衡
這是F5最主要的功能,F5可以配置針對所有的對外提供服務的服務器配置Virtual Server實現負載均衡、健康檢查、回話保持等。
高可用
F5設備自身的冗余設計能夠保證99.999%的正常運行時間,雙機F5的故障切換時間為毫秒級。
使用F5可以配置整個集群的鏈路冗余和服務器冗余,提高可靠的健康檢查機制,以保證高可用。
安全性
與防火牆類似,F5采用缺省拒絕策略,可以為任何站點增加額外的安全保護,防御普通網絡攻擊,包括DDoS、IP欺騙、SYN攻擊、teartop和land攻擊、ICMP攻擊等。
易於管理
F5提供HTTPS、SSH、Telnet、SNMP等多種管理方式,包含詳盡的實時報告和歷史紀錄報告。同時還提供二次開發包(i-Control)。
其他技能
F5還提供了SSL加速、軟件升級、IP地址過濾、帶寬控制等輔助功能。