分析負載均衡方案的總體規(guī)劃
負載均衡的常用應(yīng)用之一就是做網(wǎng)站的流量訪問控制。那么我們就可以設(shè)計一個負載均衡方案解決這個問題?,F(xiàn)在我們就以一個實際應(yīng)用的例子,來分析下負載均衡方案建立的過程。
某網(wǎng)站隨著知名度的提高,用戶訪問量日漸增多,近段時間以來,由于訪問量的激增,服務(wù)不可用的情況時有發(fā)生。在業(yè)務(wù)邏輯上,服務(wù)器之間還存在一些比較緊密地耦合性,一旦某個服務(wù)不可用,就會造成與之關(guān)聯(lián)的其他服務(wù)也不可用(如數(shù)據(jù)庫停止,bbs,blog等皆不可用)。針對這種狀況,我結(jié)合該網(wǎng)站的實際情況,為他們設(shè)計了一個高可用可擴展的負載均衡方案。
負載均衡方案基本需求:
1、高可用性:將停止服務(wù)時間降低到***甚至是不間斷服務(wù)
2、可擴展性:隨著訪問的增加,系統(tǒng)具備良好的伸縮能力
3、可視性:系統(tǒng)、服務(wù)的狀態(tài)處于一個實時的監(jiān)控之下
4、高性能高可靠性:經(jīng)過優(yōu)化的體系結(jié)構(gòu)及合理的備份策略
5、安全性:結(jié)構(gòu)上的安全及主機的安全策略
負載均衡方案基本思路
1、對于訪問頻繁,用戶量大的對象(bbs,blog)采用某種合理的方式負載到多個服務(wù)器上。把數(shù)據(jù)庫獨立出來,準備2套mysql數(shù)據(jù)庫,以實現(xiàn)主從復(fù)制,即減輕負載,又提高了可靠性。更近一步,使用mysqlproxy技術(shù),實現(xiàn)主從服務(wù)器的讀寫分離,大大提高這個系統(tǒng)的性能和負載能力。
2、數(shù)據(jù)庫與外部網(wǎng)絡(luò)隔離,只允許web服務(wù)器(bbs,blog等)通過私有地址方式訪問。這樣就提高了數(shù)據(jù)庫的安全性,同時也節(jié)省了寶貴的帶寬。
3、部署監(jiān)控系統(tǒng),通過監(jiān)控主機存活、服務(wù)、主機資源,實時把系統(tǒng)的健康狀態(tài)置于可視狀態(tài),對系統(tǒng)的運營狀態(tài)心中有數(shù)。
4、備份是想都不用想的事情,使用單獨的服務(wù)器集中備份,是一個比較不錯的主意。
負載均衡方案系統(tǒng)拓撲結(jié)構(gòu)
#p#
負載均衡方案業(yè)務(wù)邏輯
負載均衡方案技術(shù)實現(xiàn)
1、負載均衡。2臺同樣配置的linux服務(wù)器,內(nèi)核支持lvs,配置keepalived工具,即可實現(xiàn)負載轉(zhuǎn)發(fā)。一旦其后的真實服務(wù)器出現(xiàn)故障,keepalived會自動把故障機器從轉(zhuǎn)發(fā)隊列刪除掉,等到故障修復(fù),它又會自動把真實服務(wù)器的地址加入轉(zhuǎn)發(fā)列表。由于lvs支持會話保持,因此對于bbs這樣的應(yīng)用,一點也不用擔(dān)心其登錄丟失。
2、mysql主從復(fù)制。即保證數(shù)據(jù)的安全,又提高了訪問性能。我們在前端的每個web服務(wù)器上加入mysqlproxy這個工具,即可期待實現(xiàn)讀寫的自動分離,讓寫的操作發(fā)生在主數(shù)據(jù)庫,讓查詢這類讀操作發(fā)生在從數(shù)據(jù)庫。
3、nagios是一個開源的,受廣泛歡迎的監(jiān)控平臺。它可對主機的存活、系統(tǒng)資源(磁盤空間、負載等)、網(wǎng)絡(luò)服務(wù)進行實時監(jiān)控。一旦探測到故障,將自動發(fā)送郵件(短信)通知故障。
4、備份。包括web數(shù)據(jù)和數(shù)據(jù)庫服務(wù)器的備份。對于web服務(wù)而言,GNUtar即可實現(xiàn)備份的一切愿望。簡單的設(shè)置一下crontab就可以讓系統(tǒng)在我們做夢的時刻老老實實的幫我們備份了。但是,由于空間的限制,不可能一直備份下去,所以要做一個合適的策略,以不斷的用新的備份去替換陳舊的備份數(shù)據(jù);多少天合適?看磁盤容量吧。對于數(shù)據(jù)庫,先mysqldump一下,再tar.完成這些工作后把備份文件傳輸?shù)絺浞莘?wù)器集中。一個比較省事的方法是把備份服務(wù)器以NFS方式掛接到web服務(wù)器及數(shù)據(jù)庫服務(wù)器。
5、web服務(wù)器。至少包括apache和mysqlproxy這兩個組件。Apache做bbs和blog的容器,以虛擬機方式把用戶的請求轉(zhuǎn)發(fā)到bbs目錄或blog目錄。
6、安全措施。包含兩層安全,一層是主機本身,另一層是結(jié)構(gòu)(mysql從外部網(wǎng)絡(luò)隔離)。實踐證明,iptables是一個非常值得信賴的防火墻工具。在實際應(yīng)用中,采取先關(guān)門后開窗的策略,大大增強系統(tǒng)的安全性。
負載均衡方案系統(tǒng)組件
1、硬件:負載均衡2臺(dell1950),web服務(wù)器2-3臺(dell1950),數(shù)據(jù)庫2臺(dell2950),存儲NAS(5T格式化后容量),備份4u服務(wù)器(帶磁盤陣列5T容量),監(jiān)控服務(wù)器1臺(dell1850).
2、軟件:操作系統(tǒng)centos5(定制安裝),負載均衡ipvsadm、keepalived,監(jiān)控nagios,web服務(wù)apachephp等,數(shù)據(jù)庫mysql,數(shù)據(jù)庫代理mysqlproxy.