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