部署多链路机房出口分流系统
2014-02-05姜鹏
文/姜鹏
部署多链路机房出口分流系统
文/姜鹏
现有学校采用多出口链路提升校园网用户访问外网的速度,同时还构筑了自己的数据中心机房。但是数据中心机房往往采用单链路教育网出口,而不同区域的访问者来自不同运营商,造成用户访问同一数据资源速度差异较大。本文探讨在不改变现有的数据中心架构情况下,采用开源软件在数据中心外层部署数据分流系统。
用户分流
首先部署用户分流部分,在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地址池,以实现整个系统的自动调整。尤其特殊情况下,如监控到某链路中断,舍弃某链路的分流。并把报警信息发送到管理员邮箱和手机短信上。
通过以上操作在很少的投入的基础上,充分挖掘现有链路的价值。而且把真实服务器隐藏起来,在抵御网络攻击上有一定的作用。
(作者单位为中国海洋大学网络与信息中心)