文/姜鵬
部署多鏈路機(jī)房出口分流系統(tǒng)
文/姜鵬
現(xiàn)有學(xué)校采用多出口鏈路提升校園網(wǎng)用戶訪問(wèn)外網(wǎng)的速度,同時(shí)還構(gòu)筑了自己的數(shù)據(jù)中心機(jī)房。但是數(shù)據(jù)中心機(jī)房往往采用單鏈路教育網(wǎng)出口,而不同區(qū)域的訪問(wèn)者來(lái)自不同運(yùn)營(yíng)商,造成用戶訪問(wèn)同一數(shù)據(jù)資源速度差異較大。本文探討在不改變現(xiàn)有的數(shù)據(jù)中心架構(gòu)情況下,采用開(kāi)源軟件在數(shù)據(jù)中心外層部署數(shù)據(jù)分流系統(tǒng)。
首先部署用戶分流部分,在Linux的機(jī)器上安裝bind進(jìn)行解析,使用DNS的智能解析把不同運(yùn)營(yíng)商的用戶進(jìn)行分流。首先在bind的配置文件中構(gòu)筑幾個(gè)地址列表,這里只列舉了2個(gè)例子,可根據(jù)多鏈路的需求添加,核心配置如下:
//掩碼方式表示的地址列表,形成第一個(gè)地址池。
acl "LIST1" {
192.168.1.0/24;
192.168.2.0/26;
};
//掩碼方式表示的地址列表,形成第二個(gè)地址池。
acl "LIST2" {
10.0.0.0/16;
10.1.0.0/32;
};
//用view功能根據(jù)來(lái)源地址調(diào)用不同的zone配置文件進(jìn)行解析
view "view_list1" {
match-clients { LIST1; };
zone "test.edu.cn" {
type master;
file "test.edu.cn.zone";
};
};
view "view_list2" {
match-clients { LIST2; };
zone "test.edu.cn" {
type master;
file "test.edu.cn.zone2";
};
};
//一般來(lái)說(shuō)我們列舉的地址段做不到包含所有來(lái)客的地址,防止遺漏需要加一個(gè)針對(duì)
//“any”地址的配置。
view "view_list3" {
match-clients { any; };
zone "test.edu.cn" {
type master;
file "test.edu.cn.zone3";
};
};
在開(kāi)通測(cè)試網(wǎng)站(www.test.edu.cn)多鏈路均衡的時(shí)候,需要分別修改“test.edu. cn.zone”、“test.edu.cn.zone2”、“test. edu.cn.zone3”三個(gè)文件,分別添加“www. test.edu.cn”的域名,指向不同鏈路的轉(zhuǎn)發(fā)服務(wù)器IP,后重新載入bind。實(shí)現(xiàn)針對(duì)相應(yīng)鏈路的域名解析。
構(gòu)筑好分流部分后,使用Apache軟件進(jìn)行轉(zhuǎn)發(fā)和緩沖。在不同的鏈路上分別放置一臺(tái)轉(zhuǎn)發(fā)服務(wù)器。安裝Linux系統(tǒng),采用兩個(gè)網(wǎng)卡,一個(gè)連接本鏈路,正常設(shè)置IP地址、子網(wǎng)掩碼、網(wǎng)關(guān);另外一個(gè)連接在服務(wù)器網(wǎng)段,這個(gè)網(wǎng)卡只設(shè)置服務(wù)器網(wǎng)段IP地址和子網(wǎng)掩碼,當(dāng)然可根據(jù)安全需求放置在數(shù)據(jù)中心防火墻內(nèi)部或者外部。然后修改Apache的配置文件httpd.conf,添加如下內(nèi)容:
ServerName www.test.edu.cn
ProxyPass / http://10.10.0.1/ //10.10.0.1是www.test.edu.cn在服務(wù)器網(wǎng)段的IP
ProxyPassReverse / http://10.10.0.1/
按照類似這樣的方式,在每個(gè)鏈路上分別配置好一臺(tái)轉(zhuǎn)發(fā)服務(wù)器。推薦每個(gè)鏈路都有自己的至少一臺(tái)轉(zhuǎn)發(fā)服務(wù)器,防止出現(xiàn)單點(diǎn)故障。這里僅列出了一個(gè)“www.test.edu. cn”域名的服務(wù)器配置,其他多臺(tái)服務(wù)器可以通過(guò)類似的方式實(shí)現(xiàn)。
通過(guò)配置開(kāi)啟Apache的靜態(tài)緩沖功能,可以進(jìn)一步減少核心服務(wù)器的負(fù)載;也可以同時(shí)配置網(wǎng)頁(yè)壓縮傳輸技術(shù),減少鏈路流量。
上面即可形成一個(gè)完整的多鏈路機(jī)房出口分流的解決方案,不過(guò)如果考慮到冗余和動(dòng)態(tài)機(jī)制的話,還可以采用自行編寫簡(jiǎn)單程序的方式進(jìn)一步優(yōu)化。
1.首先采用多臺(tái)DNS服務(wù)器互為冗余,可以使用多種方式進(jìn)行,例如:
(1)向上級(jí)DNS管理機(jī)構(gòu)注冊(cè)多個(gè)DNS服務(wù)器地址同時(shí)提供服務(wù),分別放置在不同鏈路上,對(duì)自己學(xué)校的二級(jí)域名進(jìn)行解析。
(2)采用雙機(jī)熱備的方式構(gòu)筑DNS服務(wù)器。
2.安裝bind to mysql的插件或采用其他手段。通過(guò)對(duì)數(shù)據(jù)庫(kù)實(shí)時(shí)讀寫或直接修改bind配置文件的方式,實(shí)現(xiàn)適時(shí)調(diào)整不同鏈路IP列表的功能。
3.在DNS服務(wù)器上部署一個(gè)簡(jiǎn)單腳本,進(jìn)行實(shí)時(shí)的監(jiān)控,主要包含以下指標(biāo):
(1)通過(guò)SNMP或者其他方式讀取各個(gè)出口鏈路的狀態(tài),比如通斷、負(fù)載、丟包率。
(2)獲取各個(gè)轉(zhuǎn)發(fā)緩沖服務(wù)器的狀態(tài),比如Apache工作狀態(tài)、CPU內(nèi)存負(fù)載、網(wǎng)絡(luò)占用。
利用這些指標(biāo),自己設(shè)定閥值,修改bind策略,適時(shí)調(diào)整IP地址池,以實(shí)現(xiàn)整個(gè)系統(tǒng)的自動(dòng)調(diào)整。尤其特殊情況下,如監(jiān)控到某鏈路中斷,舍棄某鏈路的分流。并把報(bào)警信息發(fā)送到管理員郵箱和手機(jī)短信上。
通過(guò)以上操作在很少的投入的基礎(chǔ)上,充分挖掘現(xiàn)有鏈路的價(jià)值。而且把真實(shí)服務(wù)器隱藏起來(lái),在抵御網(wǎng)絡(luò)攻擊上有一定的作用。
(作者單位為中國(guó)海洋大學(xué)網(wǎng)絡(luò)與信息中心)