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