




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、個(gè)項(xiàng)目中實(shí)施過(guò),參考了一些資料,結(jié)合自己的一些使用經(jīng)驗(yàn),總結(jié)一下。一般對(duì)負(fù)載均衡的使用是隨著網(wǎng)站規(guī)模的提升根據(jù)不同的階段來(lái)使用不同的技術(shù)。具體的應(yīng)用需求還得具體分析,如果是中小型的 Web 應(yīng)用,比如日 PV 小于 1000萬(wàn),用 Nginx 就完全可以了;如果機(jī)器不少,可以用 DNS 輪詢,LVS 所耗費(fèi)的機(jī)器還是比較多的;大型網(wǎng)站或重要的服務(wù),且服務(wù)器比較多時(shí),可以考慮用 LVS。一種是通過(guò)硬件來(lái)進(jìn)行進(jìn)行,常見的硬件有比較昂貴的 F5 和 Array 等商用的負(fù)載均衡器,它的優(yōu)點(diǎn)就是有專業(yè)的維護(hù)團(tuán)隊(duì)來(lái)對(duì)這些服務(wù)進(jìn)行維護(hù)、缺點(diǎn)就是花銷太大,所以對(duì)于規(guī)模較小的網(wǎng)絡(luò)服務(wù)來(lái)說(shuō)暫時(shí)還沒(méi)有需要使用;另
2、外一種就是類似于Nginx/LVS/HAProxy 的基于 Linux 的開源免費(fèi)的負(fù)載均衡軟件,這些都是通過(guò)軟件級(jí)別來(lái)實(shí)現(xiàn),所以費(fèi)用非常低廉。目前關(guān)于網(wǎng)站架構(gòu)一般比較合理流行的架構(gòu)方案:Web 前端采用Nginx/HAProxy+Keepalived 作負(fù)載均衡器;后端采用 MySQL 數(shù)據(jù)庫(kù)一主多從和讀寫分離,采用 LVS+Keepalived 的架構(gòu)。當(dāng)然要根據(jù)項(xiàng)目具體需求制定方案。下面說(shuō)說(shuō)各自的特點(diǎn)和適用場(chǎng)合。一、NginxNginx 的優(yōu)點(diǎn)是:1、工作在網(wǎng)絡(luò)的 7 層之上,可以針對(duì) httpj 應(yīng)用做一些分流的策略,比如針對(duì)域名、目錄結(jié)構(gòu),它的正則規(guī)則比 HAProxy 更為強(qiáng)大和靈
3、活,這也是它目前廣泛流行的主要原因之一,Nginx 單憑這點(diǎn)可利用的場(chǎng)合就遠(yuǎn)多于 LVS 了。2、Nginx 對(duì)網(wǎng)絡(luò)穩(wěn)定性的依賴非常小,理論上能 ping 通就就能進(jìn)行負(fù)載功能,這個(gè)也是它的優(yōu)勢(shì)之一;相反 LVS 對(duì)網(wǎng)絡(luò)穩(wěn)定性依賴比較大,這點(diǎn)本人深有體會(huì);3、Nginx 安裝和配置比較簡(jiǎn)單,測(cè)試起來(lái)比較方便,它基本能把錯(cuò)誤用日志打印出來(lái)。LVS 的配置、測(cè)試就要花比較長(zhǎng)的時(shí)間了,LVS 對(duì)網(wǎng)絡(luò)依賴比較大。3、可以承擔(dān)高負(fù)載壓力且穩(wěn)定,在硬件不差的情況下一般能支撐幾萬(wàn)次的并發(fā)量,負(fù)載度比 LVS 相對(duì)小些。4、Nginx 可以通過(guò)端口檢測(cè)到服務(wù)器內(nèi)部的故障,比如根據(jù)服務(wù)器處理網(wǎng)頁(yè)返回的狀態(tài)碼、超
4、時(shí)等等,并且會(huì)把返回錯(cuò)誤的請(qǐng)求重新提交到另一個(gè)節(jié)點(diǎn),不過(guò)其中缺點(diǎn)就是不支持 url 來(lái)檢測(cè)。比如用戶正在上傳一個(gè)文件,而處理該上傳的節(jié)點(diǎn)剛好在上傳過(guò)程中出現(xiàn)故障,Nginx 會(huì)把上傳切到另一臺(tái)服務(wù)器重新處理,而 LVS 就直接斷掉了,如果是上傳一個(gè)很大的文件或者很重要的文件的話,用戶可能會(huì)因此而不滿。5、Nginx 不僅僅是一款優(yōu)秀的負(fù)載均衡器/反向代理軟件,它同時(shí)也是功能強(qiáng)大的 Web 應(yīng)用服務(wù)器。LNMP 也是近幾年非常流行的 web 架構(gòu),在高流量的環(huán)境中穩(wěn)定性也很好。6、Nginx 現(xiàn)在作為 Web 反向加速緩存越來(lái)越成熟了,速度比傳統(tǒng)的 Squid 服務(wù)器更快,可以考慮用其作為反向代
5、理加速器。7、Nginx 可作為中層反向代理使用,這一層面 Nginx 基本上無(wú)對(duì)手,唯一可以對(duì)比 Nginx的就只有 lighttpd 了,不過(guò) lighttpd 目前還沒(méi)有做到 Nginx 完全的功能,配置也不那么清晰易讀,社區(qū)資料也遠(yuǎn)遠(yuǎn)沒(méi) Nginx 活躍。8、Nginx 也可作為靜態(tài)網(wǎng)頁(yè)和圖片服務(wù)器,這方面的性能也無(wú)對(duì)手。還有 Nginx 社區(qū)非常活躍,第三方模塊也很多。淘寶的前端使用的 Tengine 就是基于 nginx 做的二次開發(fā)定制版。Nginx 常規(guī)的 HTTP 請(qǐng)求和響應(yīng)流程圖:Nginx 的缺點(diǎn)是:1、Nginx 僅能支持 http、https 和 Email 協(xié)議,這
6、樣就在適用范圍上面小些,這個(gè)是它的缺點(diǎn)。2、對(duì)后端服務(wù)器的健康檢查,只支持通過(guò)端口來(lái)檢測(cè),不支持通過(guò) url 來(lái)檢測(cè)不支持Session 的直接保持,但能通過(guò) ip_hash 來(lái)解決。二、LVSLVS:使用 Linux 內(nèi)核集群實(shí)現(xiàn)一個(gè)高性能、高可用的負(fù)載均衡服務(wù)器,它具有很好的可伸縮性(Scalability)、可靠性(Reliability)和可管理性(Manageability)LVS 的優(yōu)點(diǎn)是:1 抗負(fù)載能力強(qiáng)、是工作在網(wǎng)絡(luò) 4 層之上僅作分發(fā)之用,沒(méi)有流量的產(chǎn)生,這個(gè)特點(diǎn)也決定了它在負(fù)載均衡軟件里的性能最強(qiáng)的,對(duì)內(nèi)存和 cpu 資源消耗比較低。2、配置性比較低,這是一個(gè)缺點(diǎn)也是一個(gè)優(yōu)
7、點(diǎn),因?yàn)闆](méi)有可太多配置的東西,所以并不需要太多接觸,大大減少了人為出錯(cuò)的幾率。3、工作穩(wěn)定,因?yàn)槠浔旧砜关?fù)載能力很強(qiáng),自身有完整的雙機(jī)熱備方案,如LVS+Keepalived,不過(guò)我們?cè)陧?xiàng)目實(shí)施中用得最多的還是 LVS/DR+Keepalived。4、無(wú)流量,LVS 只分發(fā)請(qǐng)求,而流量并不從它本身出去,這點(diǎn)保證了均衡器 10 的性能不會(huì)收到大流量的影響。5、應(yīng)用范圍比較廣,因?yàn)?LVS 工作在 4 層,所以它幾乎可以對(duì)所有應(yīng)用做負(fù)載均衡,包括 http、數(shù)據(jù)庫(kù)、在線聊天室等等。LVS 的缺點(diǎn)是:1、軟件本身不支持正則表達(dá)式處理,不能做動(dòng)靜分離;而現(xiàn)在許多網(wǎng)站在這方面都有較強(qiáng)的需求,這個(gè)是 Ng
8、inx/HAProxy+Keepalived 的優(yōu)勢(shì)所在。2、如果是網(wǎng)站應(yīng)用比較龐大的話,LVS/DR+Keepalived 實(shí)施起來(lái)就比較復(fù)雜了,特別后面有 WindowsServer 的機(jī)器的話,如果實(shí)施及配置還有維護(hù)過(guò)程就比較復(fù)雜了,相對(duì)而言,Nginx/HAProxy+Keepalived 就簡(jiǎn)單多了。三、HAProxyHAProxy 的特點(diǎn)是:1、HAProxy 也是支持虛擬主機(jī)的。2、HAProxy 的優(yōu)點(diǎn)能夠補(bǔ)充 Nginx 的一些缺點(diǎn),比如支持 Session 的保持,Cookie 的引導(dǎo);同時(shí)支持通過(guò)獲取指定的 url 來(lái)檢測(cè)后端服務(wù)器的狀態(tài)。3、HAProxy 跟 LVS
9、類似,本身就只是一款負(fù)載均衡軟件;單純從效率上來(lái)講HAProxy 會(huì)比 Nginx 有更出色的負(fù)載均衡速度,在并發(fā)處理上也是優(yōu)于 Nginx 的。4、HAProxy 支持 TCP 協(xié)議的負(fù)載均衡轉(zhuǎn)發(fā),可以對(duì) MySQL 讀進(jìn)行負(fù)載均衡,對(duì)后端的MySQL 節(jié)點(diǎn)進(jìn)行檢測(cè)和負(fù)載均衡,大家可以用 LVS+Keepalived 對(duì) MySQL 主從做負(fù)載均衡。5、HAProxy 負(fù)載均衡策略非常多,HAProxy 的負(fù)載均衡算法現(xiàn)在具體有如下 8 種:1roundrobin,表示簡(jiǎn)單的輪詢,這個(gè)不多說(shuō),這個(gè)是負(fù)載均衡基本都具備的;2static-rr,表示根據(jù)權(quán)重,建議關(guān)注;3leastconn,表示
10、最少連接者先處理,建議關(guān)注;4source,表示根據(jù)請(qǐng)求源 IP,這個(gè)跟 Nginx 的 IP_hash 機(jī)制類似,我們用其作為解決session 問(wèn)題的一種方法,建議關(guān)注;5ri,表示根據(jù)請(qǐng)求的 URI;6rl_param,表示根據(jù)請(qǐng)求的 URl 參數(shù)balaneeurl_paramrequiresanURLparametername;7hdr(name),表示根據(jù) HTTP 請(qǐng)求頭來(lái)鎖定每一次 HTTP 請(qǐng)求;8rdp-eookie(name),表示根據(jù)據(jù) cookie(name)來(lái)鎖定并哈希每一次 TCP 請(qǐng)求。四、總結(jié)Nginx 禾口 LVS 對(duì)比的總結(jié):1、Nginx 工作在網(wǎng)絡(luò)的
11、7 層,所以它可以針對(duì) http 應(yīng)用本身來(lái)做分流策略,比如針對(duì)域名、目錄結(jié)構(gòu)等,相比之下 LVS 并不具備這樣的功能,所以 Nginx 單憑這點(diǎn)可利用的場(chǎng)合就遠(yuǎn)多于 LVS 了;但 Nginx 有用的這些功能使其可調(diào)整度要高于 LVS,所以經(jīng)常要去觸碰觸碰,觸碰多了,人為出問(wèn)題的幾率也就會(huì)大。2、Nginx 對(duì)網(wǎng)絡(luò)穩(wěn)定性的依賴較小,理論上只要 ping 得通,網(wǎng)頁(yè)訪問(wèn)正常,Nginx就能連得通,這是 Nginx 的一大優(yōu)勢(shì)!Nginx 同時(shí)還能區(qū)分內(nèi)外網(wǎng),如果是同時(shí)擁有內(nèi)外網(wǎng)的節(jié)點(diǎn),就相當(dāng)于單機(jī)擁有了備份線路;LVS 就比較依賴于網(wǎng)絡(luò)環(huán)境,目前來(lái)看服務(wù)器在同一網(wǎng)段內(nèi)并且 LVS 使用 dir
12、ect 方式分流,效果較能得到保證。另外注意,LVS 需要向托管商至少申請(qǐng)多一個(gè) ip 來(lái)做 VisualIP,貌似是不能用本身的 IP 來(lái)做 VIP 的。要做好LVS 管理員,確實(shí)得跟進(jìn)學(xué)習(xí)很多有關(guān)網(wǎng)絡(luò)通信方面的知識(shí),就不再是一個(gè) HTTP 那么簡(jiǎn)單了。3、Nginx 安裝和配置比較簡(jiǎn)單,測(cè)試起來(lái)也很方便,因?yàn)樗灸馨彦e(cuò)誤用日志打印出來(lái)。LVS 的安裝和配置、測(cè)試就要花比較長(zhǎng)的時(shí)間了;LVS 對(duì)網(wǎng)絡(luò)依賴比較大,很多時(shí)候不能配置成功都是因?yàn)榫W(wǎng)絡(luò)問(wèn)題而不是配置問(wèn)題,出了問(wèn)題要解決也相應(yīng)的會(huì)麻煩得多。4、Nginx 也同樣能承受很高負(fù)載且穩(wěn)定,但負(fù)載度和穩(wěn)定度差 LVS 還有幾個(gè)等級(jí):Nginx
13、 處理所有流量所以受限于機(jī)器 IO 和配置;本身的 bug 也還是難以避免的。5、Nginx 可以檢測(cè)到服務(wù)器內(nèi)部的故障,比如根據(jù)服務(wù)器處理網(wǎng)頁(yè)返回的狀態(tài)碼、超時(shí)等等,并且會(huì)把返回錯(cuò)誤的請(qǐng)求重新提交到另一個(gè)節(jié)點(diǎn)。目前 LVS 中 ldirectd也能支持針對(duì)服務(wù)器內(nèi)部的情況來(lái)監(jiān)控,但 LVS 的原理使其不能重發(fā)請(qǐng)求。比如用戶正在上傳一個(gè)文件,而處理該上傳的節(jié)點(diǎn)剛好在上傳過(guò)程中出現(xiàn)故障,Nginx 會(huì)把上傳切到另一臺(tái)服務(wù)器重新處理,而 LVS 就直接斷掉了,如果是上傳一個(gè)很大的文件或者很重要的文件的話,用戶可能會(huì)因此而惱火。6、Nginx 對(duì)請(qǐng)求的異步處理可以幫助節(jié)點(diǎn)服務(wù)器減輕負(fù)載,假如使用 a
14、pache 直接對(duì)外服務(wù),那么出現(xiàn)很多的窄帶鏈接時(shí) apache 服務(wù)器將會(huì)占用大量?jī)?nèi)存而不能釋放,使用多一個(gè) Nginx 做 apache 代理的話,這些窄帶鏈接會(huì)被 Nginx 擋住,apache 上就不會(huì)堆積過(guò)多的請(qǐng)求,這樣就減少了相當(dāng)多的資源占用。這點(diǎn)使用 squid 也有相同的作用,即使 squid 本身配置為不緩存,對(duì) apache 還是有很大幫助的。7、Nginx 能支持 http、https 和 email(email 的功能比較少用),LVS 所支持的應(yīng)用在這點(diǎn)上會(huì)比 Nginx 更多。在使用上,一般最前端所采取的策略應(yīng)是 LVS,也就是 DNS 的指向應(yīng)為 LVS 均衡器,
15、LVS 的優(yōu)點(diǎn)令它非常適合做這個(gè)任務(wù)。重要的 ip 地址,最好交由 LVS 托管,比如數(shù)據(jù)庫(kù)的 ip、webservice 服務(wù)器的 ip 等等,這些 ip 地址隨著時(shí)間推移,使用面會(huì)越來(lái)越大,如果更換 ip 則故障會(huì)接踵而至。所以將這些重要 ip 交給LVS 托管是最為穩(wěn)妥的,這樣做的唯一缺點(diǎn)是需要的 VIP 數(shù)量會(huì)比較多。Nginx 可作為 LVS 節(jié)點(diǎn)機(jī)器使用,一是可以利用 Nginx 的功能,二是可以利用Nginx 的性能。當(dāng)然這一層面也可以直接使用 squid,squid 的功能方面就比Nginx 弱不少了,性能上也有所遜色于 Nginx。Nginx 也可作為中層代理使用,這一層面N
16、ginx 基本上無(wú)對(duì)手,唯一可以撼動(dòng) Nginx 的就只有 lighttpd 了,不過(guò)lighttpd 目前還沒(méi)有能做到 Nginx 完全的功能,配置也不那么清晰易讀。另外,中層代理的 IP 也是重要的,所以中層代理也擁有一個(gè) VIP 和 LVS 是最完美的方案了。具體的應(yīng)用還得具體分析,如果是比較小的網(wǎng)站(日 PV 小于 1000 萬(wàn)),用 Nginx 就完全可以了,如果機(jī)器也不少,可以用 DNS 輪詢,LVS 所耗費(fèi)的機(jī)器還是比較多的;大型網(wǎng)站或者重要的服務(wù),機(jī)器不發(fā)愁的時(shí)候,要多多考慮利用 LVS?,F(xiàn)在對(duì)網(wǎng)絡(luò)負(fù)載均衡的使用是隨著網(wǎng)站規(guī)模的提升根據(jù)不同的階段來(lái)使用不同的技術(shù):第一階段:利用 Nginx 或 HAProxy 進(jìn)行單點(diǎn)的負(fù)載均衡,這一階段服務(wù)器規(guī)模剛脫離開單服務(wù)器、單數(shù)據(jù)庫(kù)的模式,需要一定的負(fù)載均衡,但是仍然規(guī)模較小沒(méi)有專業(yè)的維護(hù)團(tuán)隊(duì)來(lái)進(jìn)行維護(hù),也沒(méi)有需要進(jìn)行大規(guī)模的網(wǎng)站部署。這樣利用 Nginx或 HAproxy 就是第一選擇,此時(shí)這些東西上手快,配置容易,在七層之上利用 HTTP 協(xié)議就可以。這時(shí)是第一選擇。第二階段:隨著網(wǎng)絡(luò)服務(wù)進(jìn)一步擴(kuò)大,這時(shí)單點(diǎn)的 Nginx 已經(jīng)不能滿足,這時(shí)使用LVS 或者商用 Array 就是首要選擇,Nginx 此時(shí)就作為 LVS 或者 Array 的節(jié)點(diǎn)來(lái)使用,具體LVS 或 Array 的是選擇
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 協(xié)定存款合同范本
- 醫(yī)美借臺(tái)合同范本
- 春節(jié)疫情防控指南
- 商品推廣合同范本
- 春節(jié)家的呼喚
- 別墅租賃服務(wù)合同范本
- 內(nèi)墻無(wú)機(jī)涂料施工合同范本
- 國(guó)有林場(chǎng)流轉(zhuǎn)合同范本
- 辦低保申請(qǐng)書咋寫呀
- 品牌推廣合同范本
- GB/T 7588.2-2020電梯制造與安裝安全規(guī)范第2部分:電梯部件的設(shè)計(jì)原則、計(jì)算和檢驗(yàn)
- 部編版二年級(jí)語(yǔ)文下冊(cè)第一單元口語(yǔ)交際一語(yǔ)文園地一課件
- 近代早期的歐洲-人教版課件
- 高中彎道跑教案
- 音樂(lè)劇悲慘世界歌詞
- 大狗巴布課件教學(xué)
- 湖南非稅在線繳費(fèi)操作步驟
- 精品殘疾兒童教育送教上門語(yǔ)文教案課程
- 《法院執(zhí)行實(shí)務(wù)》單元三(上)(課堂PPT)課件
- 幼兒園一日生活中的保教結(jié)合(課堂PPT)
- 有害物質(zhì)培訓(xùn)教材(ROHS2.0及REACH)
評(píng)論
0/150
提交評(píng)論