服務器集羣負載均衡(F5,LVS,DNS,CDN)區別以及選型

http://www.taocms.org/922.html

下面是“黑夜路人”的《大型網站架構優化(PHP)與相關開源軟件使用建議》

=======================================

F5全稱: F5-BIG-IP-GTM 全球流量管理器.

是一家叫F5 Networks的公司開發的四~七層交換機,軟硬件捆綁.

據說最初用BSD系統,現在是LINUX;硬件是Intel的PC架構,再加周邊的網絡和專用加速設備.

當然要提提售價, 都是幾十萬RMB的身價.

這寶貝是用於對流量和內容進行管理分配的設備,也就是負載均衡.

從名字就能看出來:BIG-IP.

外部看來是一個IP,內部可卻是幾十臺應用服務器.表現爲一個虛擬的大服務器.

所以我才說: 好大一個IP.

LVS = Linux Virtual Server

是俺們中國人,一個叫章文嵩的博士推創開發出來的,

他的web:http://zh.linuxvirtualserver.org/

IBM網站的資料:集羣的可擴展性及其分佈式體系結構(4)

博士關於LVS和F5的對比:

關於和F5的差別,很難一句話說明白,都是做負載均衡的設備。

F5雖然也是基於BSD系統修改的(據說最新的基於Linux了),但重要的交換部分,則是通過專門的交換芯片實現的(類似有了專門的圖像處理芯片,就可以省去大量的CPU對圖像處理的運算),這樣他的性能就不會很依賴於主機的操作系統的處理能力。

F5上負載均衡大多是基於NAT/SNAT,也可以實現Proxy,但用的較少,做爲一個上市公司,F5自然在產品化程度上做的很好,無論配置管理方便性、靈活性,性能和穩定性上都比較好。

LVS在NAT模式下,和F5的功能基本上是一樣的,但畢竟LVS是純粹的軟件,性能是依賴於主機的運算能力的。

而且,LVS是開源的項目,不應該和一個商業產品來比較,人家那是賣錢的,有很多人來維護和開發,而LVS一直是章博士義務來維護開發的,想要更好的功能,就需要有更多的人蔘與進來才行。

說的相當透徹了.

DNS輪詢是做負載均衡最簡單有效的實現方法,各方面代價都極低.貨好便宜量又足.

缺點就是由於沒有檢測機制, 不夠均衡,容錯反應時間長.

國內門戶用這個技術的很多,配合squid有很好的效果.

當然,不做負載均衡, 直接從多個ISP拉幾根線,分別提供服務是最原始的方法.

CDN = Content Delivery Network,內容分發網絡。

細究起來上面的都是cdn的實現方式.

國內開放的服務很少(chinacache),國外卻非常流行.

就是提供緩存節點,把目標網絡內容的訪問轉化爲臨近節點的訪問.

響應速度/安全/透明/擴展,特別是中國這種還沒解放臺灣就南北分裂的網絡格局下,更爲偉大.

不過也是貴族的服務,建設成本很高.

ADSL + DDNS + CDN 也算是另一個建小站的途徑了.

把空間的租用費用投資在流量上, 直接有效. 不過電費和穩定性上不容樂觀.

其實CDN不只是做網站服務的, 比如在韓國,多數的CND流量都是被網絡遊戲佔用了.

試想,如果能大範圍鋪開CDN節點, 那還有必要一個遊戲分那麼多區,佔用那麼多服務器麼?

結論是還有必要 雖然確實訪問連接和響應速度對現在的網絡遊戲有很大影響,但開發瓶頸更在於計算能力和數據存儲訪問.

又一個試想, 把CDN和P2P結合, 上網的個人PC只要提供CDN服務, 就可以每月獲的xx美金的佣金.由資訊和應用提供商買單.

怎麼看這都是個良性發展的產業鏈, 就像google明年要推出免費手機,讓廣告商買單一樣.

不過唯一不高興的就應該是ISP們了,現在bt這樣的共享都被封殺.

除非這個業務被他們自己壟斷,不然也是殭屍的下場.

用戶也不是百利無害的, 數據安全和資訊及時有挑戰.

GV們也不是看戲的,現在還有網站可以封,寫個blog都要100萬註冊資金;

如果一堆SSL加密的數據四處流竄,神龍無首無尾,怎麼屏蔽過濾,怎麼防川啊~

回望眼,越看越像網摘,索性就再摘段完整的

F5功能介紹:

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

與互聯網絡相關的關鍵業務都需要安排和配置多條ISP接入鏈路以保證網絡服務的質量,消除單點故障,減少停機時間。多條ISP接入的方案並不是簡單的多條不同的廣域網絡的路由問題,因爲不同的ISP有不同自治域,所以必須考慮到兩種情況下如何實現多條鏈路的負載均衡:

more…

less…

內部的應用系統和網絡工作站在訪問互聯網絡的服務和網站時如何能夠在多條不同的鏈路中動態分配和負載均衡,這也被稱爲OUTBOUND流量的負載均衡。

互聯網絡的外部用戶如何在外部訪問內部的網站和應用系統時也能夠動態的在多條鏈路上平衡分配,並在一條鏈路中斷的時候能夠智能地自動切換到另外一條鏈路到達服務器和應用系統,這也被稱作爲INBOUND流量的負載均衡。

F5 的BIG-IP LC可以智能的解決以上兩個問題:

對於OUTBOUND流量,BIG-IP LC接收到流量以後,可以智能的將OUTBOUND流量分配到不同的INTERNET接口,並做源地址的NAT,可以指定某一合法IP地址進行源地址的 NAT,也可以用BIG-IP LC的接口地址自動映射,保證數據包返回時能夠正確接收。

對於INBOUND流量,BIG-IP LC分別綁定兩個ISP 服務商的公網地址,解析來自兩個ISP服務商的DNS解析請求。BIG-IP LC不僅可以根據服務器的健康狀況和響應速度迴應LDNS相應的IP地址,還可以通過兩條鏈路分別與LDNS建立連接,根據RTT時間判斷鏈路的好壞,並且綜合以上兩個參數迴應LDNS相應的IP地址。

2.防火牆負載均衡

考慮到絕大多數的防火牆只能達到線速的30%吞吐能力,故要使系統達到設計要求的線速處理能力,必須添加多臺防火牆,以滿足系統要求。然而,防火牆必須要求數據同進同出,否則連接將被拒絕。如何解決防火牆的負載均衡問題,是關係到整個系統的穩定性的關鍵問題。

F5的防火牆負載均衡方案,能夠爲用戶提供異構防火牆的負載均衡與故障自動排除能力。典型的提高防火牆處理能力的方法是採用“防火牆三明治”的方法,以實現透明設備的持續性。這可滿足某些要求客戶爲成功安全完成交易必須通過同一防火牆的應用程序的要求,也能夠維護原來的網絡安全隔離的要求。F5標準防火牆解決方案如圖所示:

防火牆負載均衡連接示意圖

3.服務器負載均衡

對於所有的對外提供服務的服務器,均可以在BIG-IP上配置Virtual Server實現負載均衡,同時BIG-IP可持續檢查服務器的健康狀態,一旦發現故障服務器,則將其從負載均衡組中摘除。

BIG-IP利用虛擬IP地址(VIP由IP地址和TCP/UDP應用的端口組成,它是一個地址)來爲用戶的一個或多個目標服務器(稱爲節點:目標服務器的IP地址和TCP/UDP應用的端口組成,它可以是internet的私網地址)提供服務。因此,它能夠爲大量的基於TCP/IP的網絡應用提供服務器負載均衡服務。根據服務類型不同分別定義服務器羣組,可以根據不同服務端口將流量導向到相應的服務器。BIG-IP連續地對目標服務器進行L4到 L7合理性檢查,當用戶通過VIP請求目標服務器服務時,BIG-IP根椐目標服務器之間性能和網絡健康情況,選擇性能最佳的服務器響應用戶的請求。如果能夠充分利用所有的服務器資源,將所有流量均衡的分配到各個服務器,我們就可以有效地避免“不平衡”現象的發生。

利用UIE+iRules可以將TCP/UDP數據包打開,並搜索其中的特徵數據,之後根據搜索到的特徵數據作相應的規則處理。因此可以根據用戶訪問內容的不同將流量導向到相應的服務器,例如:根據用戶訪問請求的URL將流量導向到相應的服務器。

4.系統高可用性

系統高可用性主要可以從以下幾個方面考慮:

4.1.設備自身的高可用性:F5 BIG-IP專門優化的體系結構和卓越的處理能力保證99.999%的正常運行時間,在雙機冗餘模式下工作時可以實現毫秒級切換,保證系統穩定運行,另外還有冗餘電源模塊可選。在採用雙機備份方式時,備機切換時間最快會在200ms之內進行切換。BIG-IP 產品是業界唯一的可以達到毫秒級切換的產品, 而且設計極爲合理,所有會話通過Active 的BIG-IP 的同時,會把會話信息通過同步數據線同步到Backup的BIG-IP,保證在Backup BIG-IP內也有所有的用戶訪問會話信息;另外每臺設備中的watchdog芯片通過心跳線監控對方設備的電頻,當Active BIG-IP故障時,watchdog會首先發現,並通知Backup BIG-IP接管Shared IP,VIP等,完成切換過程,因爲Backup BIG-IP中有事先同步好的會話信息,所以可以保證訪問的暢通無阻。

4.2.鏈路冗餘:BIG-IP可以檢測每條鏈路的運行狀態和可用性,做到鏈路和ISP故障的實時檢測。一旦出現故障,流量將被透明動態的引導至其它可用鏈路。通過監控和管理出入數據中心的雙向流量,內部和外部用戶均可保持網絡的全時連接。

4.3.服務器冗餘,多臺服務器同時提供服務,當某一臺服務器故障不能提供服務時,用戶的訪問不會中斷。BIG-IP可以在OSI七層模型中的不同層面上對服務器進行健康檢查,實時監測服務器健康狀況,如果某臺服務器出現故障,BIG-IP確定它無法提供服務後,就會將其在服務隊列中清除,保證用戶正常的訪問應用,確保迴應內容的正確性。

5.高度的安全性

BIG-IP採用防火牆的設計原理,是缺省拒絕設備,它可以爲任何站點增加額外的安全保護,防禦普通網絡攻擊。可以通過支持命令行的SSH或支持瀏覽器管理的SSL方便、安全的進行遠程管理,提高設備自身的安全性;能夠拆除空閒連接防止拒絕服務攻擊;能夠執行源路由跟蹤防止IP欺騙;拒絕沒有ACK 緩衝確認的SYN防止SYN攻擊;拒絕teartop和land攻擊;保護自己和服務器免受ICMP攻擊;不運行SMTP、FTP、TELNET或其它易受攻擊的後臺程序。

BIG-IP的Dynamic Reaping特性可以高效刪除各類網絡DoS攻擊中的空閒連接,這可以保護BIG-IP不會因流量過多而癱瘓。BIG-IP可以隨着攻擊量的增加而加快連接切斷速率,從而提供一種具有極強適應能力、能夠防禦最大攻擊量的解決方案。

BIG-IP的Delay Binding技術可以爲部署在BIG-IP後面的服務器提供全面地SYN Flood保護。此時,BIG-IP設備作爲安全代理來有效保護整個網絡。

BIG-IP可以和其它安全設備配合,構建動態安全防禦體系。BIG-IP可以根據用戶單位時間內的連接數生成控制訪問列表,將該列表加載到其它安全設備上,有效控制攻擊流量。

6.SSL加速

在每臺BIG-IP上,都具有SSL硬件加速芯片,並且自帶100個TPS的License,用戶可以不通過單獨付費,就可以擁有100個TPS的 SSL 加速功能,節約了用戶的投資。在將來系統擴展時,可以簡單的通過License升級的方式,獲得更高的SSL加速性能。

7.系統管理

BIG-IP提供HTTPS、SSH、Telnet、SNMP等多種管理方式,用戶客戶端只需操作系統自帶的瀏覽器軟件即可,不需安裝其它軟件。可以通過支持命令行的SSH或支持瀏覽器管理的SSL方便、安全的進行遠程管理。直觀易用的Web圖形用戶界面大服務降低了多歸屬基礎設施的實施成本和日常維護費用。

BIG-IP包含詳盡的實時報告和歷史紀錄報告,可供評測站點流量、相關ISP性能和預計帶寬計費週期。管理員可以通過全面地報告功能充分掌握帶寬資源的利用狀況。

另外,通過F5 的i-Control 開發包,目前國內已有基於i-Control開發的網管軟件x-control, 可以定製針對系統服務特點的監控系統,比如服務的流量情況、各種服務連接數、訪問情況、節點的健康狀況等等,進行可視化顯示。

告警方式可以提供syslog、snmp trap、mail等方式。

8.其它

內存擴充能力:F5 BIG-IP 1000以上設備單機最大可擴充到2G內存,此時可支持400萬併發回話。

升級能力:F5 所有設備均可通過軟件方式升級,在服務有效期內,升級軟件包由F5公司提供。F5 NETWORKS已經發布其系統的最新版本BIG-IP V9.0,主要有以下特性:虛擬 IPV4 / IPV6 應用、加速Web應用高達3倍、減少66%甚至更多的基礎架構成本、確保高優先級應用的性能、確保更高級別的可用性、大幅提高網絡和應用安全性、強大的性能,簡單的管理方式、無以匹敵的自適應能力和延展能力和突破的性能表現力。其強大的HTTP壓縮功能可以將用戶下載時間縮短50%,節省80%的帶寬。

IP地址過濾和帶寬控制:BIG-IP可以根據訪問控制列表對數據包進行過濾,並且針對某一關鍵應用進行帶寬控制,確保關鍵應用的穩定運行。

配置管理及系統報告:F5 BIG-IP提供WEB 界面配置方式和命令行方式進行配置管理,並在其中提供了豐富的系統報告,更可通過i-Control自行開發複雜的配置及報告生成。

作爲一名Linux/unix系統工程師,這幾年一直在涉及到對外項目,經手過許多小中型網站的架構,F5、LVS及Nginx接觸的都比較多,我想一種比較通俗易懂的語氣跟大家說明下何謂負載均衡,何謂Linux集羣,幫助大家走出這個誤區,真正意義上來理解它們,項目施工案例請參考我在network.51cto.com上的同類文章。

一、目前網站架構一般分成負載均衡層、web層和數據庫層,我其實一般還會多加一層,即文件服務器層,因爲現在隨着網站的PV越來越多,文件服務器的壓力也越來越大;不過隨着moosefs、DRDB+Heartbeat+NFS的日趨成熟,這問題也不大了.網站最前端的負載均衡層稱之爲Director,它起的是分攤請求的作用,最常見的就是輪詢。

二、F5是通過硬件的方式來實現負載均衡,它較多應用於CDN系統,用於squid反向加速集羣的負載均衡,是專業的硬件負載均衡設備,尤其適用於每秒新建連接數和併發連接數要求高的場景;LVS和Nginx是通過軟件的方式來實現的,但穩定性也相當強悍,在處理高併發的情況也有相當不俗的表現。

三、Nginx對網絡的依賴較小,理論上只要ping得通,網頁訪問正常,nginx就能連得通,nginx同時還能區分內外網,如果是同時擁有內外網的節點,就相當於單機擁有了備份線路;lvs就比較依賴於網絡環境,目前來看服務器在同一網段內並且lvs使用direct方式分流,效果較能得到保證。

四、目前較成熟的負載均衡高可用技術有LVS+Keepalived、Nginx+Keepalived,以前Nginx沒有成熟的雙機備份方案,但通過shell腳本監控是可以實現的,有興趣的可具體參考我在51cto上的項目實施方案;另外,如果考慮Nginx的負載均衡高可用,也可以通過DNS輪詢的方式來實現,有興趣的可以參考張宴的相關文章。

五、集羣是指負載均衡後面的web集羣或tomcat集羣等,但現在的集羣意義泛指了整個系統架構,它包括了負載均衡器以及後端的應用服務器集羣等,現在許多人都喜歡把Linux集羣指爲LVS,但我覺得嚴格意義上應該區分開。

六、負載均衡高可用中的高可用指的是實現負載均衡器的HA,即一臺負載均衡器壞掉後另一臺可以在<1s秒內切換,最常用的軟件就是Keepalived和Heatbeat,成熟的生產環境下的負載均衡器方案有Lvs+Keepalived、Nginx+Keepalived。

七、LVS的優勢非常多:①抗負載能力強;②工作穩定(因爲有成熟的HA方案);③無流量;④基本上能支持所有的應用,基於以上的優點,LVS擁有不少的粉絲;但世事無絕對,LVS對網絡的依賴性太大了,在網絡環境相對複雜的應用場景中,我不得不放棄它而選用Nginx。

八、Nginx對網絡的依賴性小,而且它的正則強大而靈活,強悍的特點吸引了不少人,而且配置也是相當的方便和簡約,小中型項目實施中我基本是考慮它的;當然,如果資金充足,F5是不二的選擇。

九、大型網站架構中其實可以結合使用F5、LVS或Nginx,選擇它們中的二種或三種全部選擇;如果因爲預算的原因不選擇F5,那麼網站最前端的指向應該是LVS,也就是DNS的指向應爲lvs均衡器,lvs的優點令它非常適合做這個任務。重要的ip地址,最好交由lvs託管,比如數據庫的ip、webservice服務器的ip等等,這些ip地址隨着時間推移,使用面會越來越大,如果更換ip則故障會接踵而至。所以將這些重要ip交給lvs託管是最爲穩妥的。

十、VIP地址是Keepalived虛擬的一個IP,它是一個對外的公開IP,也是DNS指向的IP;所以在設計網站架構時,你必須向你的IDC多申請一個對外IP

十一、在實際項目實施過程中發現,Lvs和Nginx對https的支持都非常好,尤其是LVS,相對而言處理起來更爲簡便。

十二、在LVS+Keepalived及Nginx+Keepalived的故障處理中,這二者都是很方便的;如果發生了系統故障或服務器相關故障,即可將DNS指向由它們後端的某臺真實web,達到短期處理故障的效果,畢竟廣告網站和電子商務網站的PV就是金錢,這也是爲什麼要將負載均衡高可用設計於此的原因;大型的廣告網站我就建議直接上CDN系統了。

十三、現在Linux集羣都被大家神話了,其實這個也沒多少複雜;關鍵看你的應用場景,哪種適用就選用哪種,Nginx和LVS、F5都不是神話,哪種方便哪種適用就選用哪種。

十四、另外關於session共享的問題,這也是一個老生長談的問題了;Nginx可以用ip_hash機制來解決session的問題,而F5和LVS都有會話保持機制來解決這個問題,此外,還可以將session寫進數據庫,這也是一個解決session共享的好辦法,當然這個也會加重數據庫的負擔,這個看系統架構師的取捨了。

十五、我現在目前維護的電子商務網站併發大約是1000左右,以前的證券資訊類網站是100左右,大型網上廣告大約是3000,我感覺web層的併發越來越不是一個問題;現在由於服務器的強悍,再加上Nginx作web的高抗併發性,web層的併發並不是什麼大問題;相反而言,文件服務器層和數據庫層的壓力是越來越大了,單NFS不可能勝任目前的工作,現在好的方案是moosefs和DRDB+Heartbeat+NFS;而我喜歡的Mysql服務器,成熟的應用方案還是主從,如果壓力過大,我不得不選擇oracle的RAC雙機方案。

十六、現在受張宴的影響,大家都去玩Nginx了(尤其是作web),其實在服務器性能優異,內存足夠的情況下,Apache的抗併發能力並不弱,整個網站的瓶頸應該還是在數據庫方面;我建議可以雙方面瞭解Apache和Nginx,前端用Nginx作負載均衡,後端用Apache作web,效果也是相當的好。

十七、Heartbeat的腦裂問題沒有想象中那麼嚴重,在線上環境可以考慮使用;DRDB+Heartbeat算是成熟的應用了,建議掌握。我在相當多的場合用此組合來替代EMC共享存儲,畢竟30萬的價格並不是每個客戶都願意接受的。

十八、無論設計的方案是多麼的成熟,還是建議要配置Nagios監控機來實時監控我們的服務器情況;郵件和短信報警都可以開啓,畢竟手機可以隨身攜帶嘛;有條件的還可以購買專門的商業掃描網站服務,它會每隔一分鐘掃描你的網站,如果發現沒有alive會向你的郵件發警告信息或直接電話聯繫。

十九、至少網站的安全性問題,我建議用硬件防火牆,比較推薦的是華賽三層防火牆+天泰web防火牆,DDOS的安全防護一定要到位;Linux服務器本身的iptables和SElinux均可關閉,當然,端口開放越少越好。

補充說明:測試網站的響應時間是用http://tools.pingdom.com,發現上了LVS+Keepalived、Nginx+Keepalived後並不影響速度,這一點大家就不要多慮了,Nginx現在作反向加速也日趨成熟了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章