19個心得 明明白白說Linux下的負載平衡

來源:互聯網
上載者:User

作為一名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現在作反向加速也日趨成熟了。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.