前言:在涉及到對外專案,經手許多小中型**的架構,f5、lvs及nginx都比較多,我想一種比較通俗易懂的語氣跟大家說明下何謂負載均衡,何謂linux集群,幫助大家走出這個誤區,真正意義上來理解它們。
一、目前**架構一般分成負載均衡層、web層和資料庫層,我其實一般還會多加一層,即檔案伺服器層,因為現在隨著**的pv越來越多,檔案伺服器的壓力也越來越大;不過隨著moosefs、drdb+heartbeat+nfs的日趨成熟,這問題也不大了.**最前端的負載均衡層稱之為director,它起的是分攤請求的作用,最常見的就是輪詢。
二、f5是通過硬體的方式來實現負載均衡,它較多應用於cdn系統,用於squid反向加速集群的負載均衡,是專業的硬體負載均衡裝置,尤其適用於每秒新建連線數和併發連線數要求高的場景;lvs和nginx是通過軟體的方式來實現的,但穩定性也相當強悍,在處理高併發的情況也有相當不俗的表現。
三、nginx對網路的依賴較小,理論上只要ping得通,網頁訪問正常,nginx就能連得通,nginx同時還能區分內外網,如果是同時擁有內外網的節點,就相當於單機擁有了備份線路;lvs就比較依賴於網路環境,目前來看伺服器在同一網段內並且lvs使用 direct方式分流,效果較能得到保證。
五、集群是指負載均衡後面的web集群或tomcat集群等,但現在的集群意義泛指了整個系統架構,它包括了負載均衡器以及後端的應用伺服器集群等,現在許多人都喜歡把linux集群指為lvs,但我覺得嚴格意義上應該區分開。
六、負載均衡高可用中的高可用指的是實現負載均衡器的ha,即一台負載均衡器壞掉後另一台可以在<1s秒內切換,最常用的軟體就是keepalived和heatbeat,成熟的生產環境下的負載均衡器方案有lvs+keepalived、 nginx+keepalived;如果能保證heartbeat的心跳線的穩定的話,heartbeat+drbd也是成熟的應用,適用於nfs檔案伺服器或mysql。
七、lvs的優勢非常多:①抗負載能力強;②工作穩定(因為有成熟的ha方案);③無流量;④基本上能支援所有的應用,基於以上的優點,lvs擁有不少的粉絲;但世事無絕對,lvs對網路的依賴性太大了,在網路環境相對複雜的應用場景中,我不得不放棄它而選用nginx。
八、nginx對網路的依賴性小,而且它的正則強大而靈活,強悍的特點吸引了不少人,而且配置也是相當的方便和簡約,小中型專案實施中我基本是考慮它的;當然,如果資金充足,f5是不二的選擇;我到過許多cdn機房,經常能發現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+keepalived的純公網的這種架構,呵呵,那就最好是購買乙個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共享的好辦法,當然這個也會加重資料庫的負擔,這個看系統架構師的取捨了。
十六、現在受張宴的影響,大家都去玩nginx了(尤其是作web),其實在伺服器效能優異,記憶體足夠的情況下,apache的抗併發能力並不弱(16g記憶體下apache過6000問題也不大),整個**的瓶頸應該還是在資料庫方面;我建議可以雙方面了解apache和nginx,前端用nginx作負載均衡,後端用apache作web,效果也是相當的好。
十八、無論設計的方案是多麼的成熟,還是建議要配置nagios監控機來實時監控我們的伺服器情況;郵件和簡訊報警都可以開啟,畢竟手機可以隨身攜帶嘛;有條件的還可以購買專門的商業掃瞄**服務,它會每隔一分鐘掃瞄你的**,如果發現沒有alive會向你的郵件發警告資訊或直接**聯絡。
十九、至少**的安全性問題,我建議用硬體防火牆,比較推薦的是華賽三層防火牆+天泰web防火牆(或單台juniper防火牆),ddos的安全防護一定要到位(國內的ddos攻擊讓人煩躁);linux伺服器本身的iptables和selinux均可關閉,當然,埠開放越少越好。
二十、測試**的響應時間,發現上了lvs+keepalived、nginx+keepalived後並不影響速度,這一點大家就不要多慮了,nginx現在作反向加速也日趨成熟了,大家也可嘗試下用nginx來取代squid。
來自為知筆記(wiz)
專案實踐中Linux集群的總結和思考
前言 作為一名linux unix系統工程師 專案實施工程師,這幾年一直在涉及到對外專案,經手過許多小中型 的架構,f5 lvs及nginx接觸的都比較多,我想一種比較通俗易懂的語氣跟大家說明下何謂負載均衡,何謂linux集群,幫助大家走出這個誤區,真正意義上來理解它們,具體專案施工案例請參考我在n...
養成思考和總結的習慣
今天回顧去年半年組內比較有影響力的tester,發現他確實是乙個善於總結的人,測試mac版本的產品的時候就分享單元測試和介面測試在mac端配置環境的操作步驟,mac版本開發過程中在瀏覽器外掛程式開發進行了小小總結,瀏覽器的特點和各自瀏覽器上外掛程式開發的注意點,都是一些很小的分享但是很體現總結的能力...
遊戲工具開發的思考和總結
在功能機時代,gameloft的遊戲產品和開發模式一直是業界標桿,其歐羅拉編輯器也被當時gameloft跳過來的策劃津津樂道。當時我們也看過歐羅拉工具,功能和適用範圍都相當強大,猜想應該會有一支不小的團隊在維護這套工具和配套引擎。有這樣一套工具,好處當然是很明顯的,可以工業化批量生產遊戲,大大提高遊...