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