信息中心網(wǎng)絡(luò)組已經(jīng)對應用服務器所在的網(wǎng)絡(luò)進行劃分,應用系統(tǒng)的節(jié)點分別部署到網(wǎng)絡(luò)的接入層、應用層和數(shù)據(jù)層。這樣的劃分能夠提高應用系統(tǒng)和敏感數(shù)據(jù)的安全性,但是增加了應用系統(tǒng)部署的復雜性。
根據(jù)網(wǎng)絡(luò)規(guī)劃,接入層作為用戶(包括內(nèi)部用戶和外部用戶)與關(guān)鍵服務器的隔離層,直接接收用戶的請求,并轉(zhuǎn)發(fā)給應用服務器。作為一種嘗試,目前在接入層已經(jīng)開始使用nginx對應用服務器進行反向代理,并支持多個應用服務器的負載均衡。
但是從應用系統(tǒng)部署的角度來看,接入層尚缺少統(tǒng)一的技術(shù)方案和整體規(guī)劃。本文提出本證券公司應用系統(tǒng)接入層整體解決方案,以期達到如下的目的:
統(tǒng)一接入層技術(shù)方案主要考慮兩方面的問題:負載均衡和高可用。
采用一定的分配算法將網(wǎng)絡(luò)請求分發(fā)到后端的多個服務器,從而獲得更高的性能。實現(xiàn)負載均衡功能的軟/硬件稱為 負載均衡器 。 本文中的負載均衡特指將客戶的http請求分發(fā)到后端的web服務器或應用服務器。
為了避免負載調(diào)度器的單點故障,部署多個負載調(diào)度器節(jié)點,通過并行或主從的方式同時工作。
會話 服務器端維持的狀態(tài)信息,使得服務器能夠識別同一客戶的多次請求之間的關(guān)聯(lián)。會話保持是指負載均衡器上的一種機制,通過會話保持,負載均衡器能夠識別同一客戶端多次請求的關(guān)聯(lián)性,并能夠?qū)⑾嚓P(guān)聯(lián)的請求分配到同一臺后端服務器上。
因為需要整合各應用系統(tǒng)的URL,對于子域名、虛擬目錄等進行統(tǒng)一規(guī)劃和分配,需要考慮配置的靈活性和分流策略的多樣性。
統(tǒng)一接入層的總體架構(gòu)如下圖所示:
考慮到管理類系統(tǒng)都是內(nèi)部用戶,總的并發(fā)不高。按照峰值 3000員工*(10請求/秒)= 3萬請求/秒 進行估算,軟件負載均衡器就能夠滿足要求。
目前比較流行的軟件負載均衡器包括NginX、HAProxy 和 LVS(Linux Virtual Server) 。三者的對比如下:
LVS | HAProxy | Nginx | |
---|---|---|---|
網(wǎng)絡(luò)協(xié)議層 | 4 | 4,7 | 7 |
性能 | 最高 | 高 | 高 |
資源消耗 | 高 | 中 | 低 |
安裝配置 | 復雜 | 一般 | 簡單 |
支持的協(xié)議 | tcp之上 | tcp之上 | http,pop/smtp |
會話保持 | 不支持 | 支持 | 支持 |
虛擬主機 | 不支持 | 支持 | 支持 |
其他功能 | 支持廣域網(wǎng)負載均衡 | 支持URL方式檢查后端服務器狀態(tài) | 可以作為web服務器,支持web緩存,支持虛擬目錄 |
從上面簡單的對比可以看出,LVS性能最好,能夠適應多種網(wǎng)絡(luò)協(xié)議,可以用作大多數(shù)服務器的負載均衡,但是配置比較復雜,對http協(xié)議沒有額外的功 能;HAProxy性能比Nginx要好,對http協(xié)議提供了一些額外支持;Nginx的性能略差于HAProxy,對http協(xié)議的額外支持與 HAProxy各有千秋,但是NginX能夠針對域名、URL目錄結(jié)構(gòu)等配置分流策略,配置更加強大和靈活,同時NginX還可以作為web服務器并支持 web緩存。
綜合上述分析,對于本文要實現(xiàn)的“統(tǒng)一web應用接入層”,使用NginX更加合適。其主要優(yōu)勢在于配置策略的靈活性,能夠有效實現(xiàn)子域名、虛擬目錄、URL路徑的統(tǒng)一規(guī)劃和管理。 同時,相對其他兩款負載均衡器,NginX在公司內(nèi)部有一定的技術(shù)積累,所以本方案選擇NginX作為統(tǒng)一接入層的負載均衡器。
而HAProxy適合單個應用的負載均衡,尤其適合web服務器和mysql服務器的負載均衡;LVS更適合高并發(fā)網(wǎng)站的最前端負載均衡(作為硬件負載均衡的替代)。
目前服務器的高可用(HA,High Availability)主要通過服務器集群(Cluster)技術(shù)來實現(xiàn)。比較常見的集群軟件包括keepalived, heartbeat和NLB等。 對于NginX,最成熟的架構(gòu)是配合keepalived實現(xiàn)高可用。
Keepalived是Linux下實現(xiàn)VRRP備份路由的高可靠性運行件。能夠?qū)崿F(xiàn)主服務器和備份服務器故障時IP瞬間無縫交接。而NginX支持Master-Backup的部署方式。配合Keepalived,能夠通過兩臺NginX的集群實現(xiàn)高可用。
具體方案包括:
為簡單起見,本方案中不考慮會話同步/共享。但在NginX會采用ip-hash策略,保證同一客戶的請求會被轉(zhuǎn)發(fā)到相同的后端服務器,從而實現(xiàn)會話保持。 如果應用系統(tǒng)需要進行會話同步,需要自行考慮redis、memcached等方案。
盡量減少子域名的數(shù)量和變化頻度,可以考慮按照應用系統(tǒng)的類別劃分子域名,如:
類別 | 二級域名 |
---|---|
管理系統(tǒng) | coworks.mycompany.com |
移動辦公 | m.mycompany.com |
開發(fā)類 | dev.mycompany.com |
其他 | site.mycompany.com |
應用系統(tǒng)的變化相對頻繁,為了簡化應用系統(tǒng)部署,用二級域名的第一級目錄指定具體的應用系統(tǒng),如:
URL | 應用系統(tǒng) |
---|---|
dev.mycompany.com/svn | 版本管理 |
dev.mycompany.com/submin | svn web管理界面 |
dev.mycompany.com/jira | 缺陷管理 |
dev.mycompany.com/trac | 系統(tǒng)資料(wiki) |
dev.mycompany.com/software | 開發(fā)工具下載 |
dev.mycompany.com/mirrors | 內(nèi)部yum源 |
dev.mycompany.com/maven | maven私服 |
Author: Holbrook Wong<wanghaikuo@gmail.com>
Date: 2012-10-16 16:23:35 CST
HTML generated by org-mode 6.33x in emacs 23
聯(lián)系客服