在一般的网络规模中,在近客户端,使用一台性能较好的cache代理服务器,就可以满足内部用户的需求,减缓出口线路的拥堵问题。但如果内部网络已扩张到相当庞杂,用户机器数量达到数万台,同一时间的url请求可能达到上万个,这种情况下极有可能造成单台代理服务器无法及时处理,甚至瘫痪,代理服务器反而会成为新的瓶颈。
为了有效解决此类情况,我们可以在内部网络中布置多台代理服务器,代理服务器之间构成hierarchies(层次),协同工作,减缓负载,减轻线路压力。
具体配置方法
下面结合我校的实际情况,说明层次代理服务器的架设方法。
图1
图1是校园网的拓扑结构,内部网通过路由器,由两个出口线路分别接入cernet和chinanet,最终汇入internet。大多数的高校现在都采用这种多出口的方法,因为cernet虽然可以给予高校合法的ip地址,但它多采用出国流量计费或包月制,费用较高且带宽有限;而chinanet、cncnet等运营商的线路的包月费用相对较低,出口访问速度较快。所以一般情况下使用cernet作入口访问及必要的出口访问(如访问教育资源),而使用chinanet、cncnet作大部分的出口访问。
我校校园网在地理上分为多个区域,有图书馆及教学区、行政办公区、学生宿舍区等,我们只拿出这三个区域做为例子。在这三个区域中分别放置一台代理服务器,其域名分别为lib.cache.lyac.edu.cn 、adm.cache.lyac.edu.cn 、stu.cache.lyac.edu.cn 。
其中,因为图书馆购买的学术期刊论文数据库必须是合法ip(有的要求固定ip)才能访问查询,并且校园网也需要访问cernet上的许多教育资源,所以把它的默认出口线路放到cernet上,使用合法ip地址;其它两个区域的默认出口线路都放到chinanet上,isp通常不会给学校提供合法的ip,所以我们一般在这样的cache上使用两块网卡,一块使用内网虚地址,另一块使用isp提供的虚地址,这样就可以连接到isp,再由其转发。
cache server可以是在一台普通的服务器加上cache软件构成,也有由专用的软硬件系统构成的商业cache服务器(如cacheflow)。我校的代理服务器使用squid。squid代理服务器使用squid.conf作为配置文件,单台代理服务器的应用配置――特别是acl和http_access的配合使用方法,有很多参考资料,这里不再赘叙,我们只讲squid.conf文件中和cache层次有关的常用配置选项,其详细用法参看squid文档。
下面列出三个区域cache中的只有和层次有关的配置内容,其中结合acl的配置方法多种多样,例如可以使用icp_access、 miss_access控制外部cache的请求权限;有些配置选项的使用结果也是相似的。“#”号开头的为注释。
(1) 图书馆及教学区cache的配置
http_port 3128
icp_port 3130
#定义其它两个区域的cache和自己的关系
cache_peer adm.cache.lyac.edu.cn sibling 3128 3130
cache_peer stu.cache.lyac.edu.cn sibling 3128 3130
#设定只有非.edu.cn域的url自己没有时才请求其它两个区域的cache帮助
cache_peer_domain adm.cache.lyac.edu.cn !.edu.cn
cache_peer_domain stu.cache.lyac.edu.cn !.edu.cn
#10.10.0.0/16是校园网使用的内网虚地址
acl localnetipvir src 10.10.0.0/16
#210.44.48.0/20是校园网使用的合法ip地址
acl localnetiptrue src 210.44.48.0/20
#.lyac.edu.cn是校园网的域
acl localdomain srcdomain .lyac.edu.cn
acl all src 0.0.0.0/0.0.0.0
cache_peer_access adm.cache.lyac.edu.cn allow localnetipvir
cache_peer_access adm.cache.lyac.edu.cn allow localnetiptrue
cache_peer_access adm.cache.lyac.edu.cn allow srcdomain
cache_peer_access stu.cache.lyac.edu.cn allow localnetipvir
cache_peer_access stu.cache.lyac.edu.cn allow localnetiptrue
cache_peer_access stu.cache.lyac.edu.cn allow srcdomain
cache_peer_access adm.cache.lyac.edu.cn deny all
cache_peer_access stu.cache.lyac.edu.cn deny all
#设定只为本校的cache提供层次服务,以防被局域网外的cache非法利用
icp_access allow localnetipvir
icp_access allow localnetiptrue
icp_access allow srcdomain
icp_access deny all
(2)行政办公区cache的配置(cache_peer_access的访问控制列表同行政办公区)
http_port 3128
icp_port 3130
cache_peer lib.cache.lyac.edu.cn parent 3128 3130
cache_peer stu.cache.lyac.edu.cn sibling 3128 3130
#设定缓存中没有.edu.cn的object时才请求lib.cache.lyac.edu.cn协助抓取
cache_peer_domain lib.cache.lyac.edu.cn .edu.cn
cache_peer_domain stu.cache.lyac.edu.cn !.edu.cn
(3)学生宿舍区cache的配置内容大致同行政办公区,从略。
外部网络上有一些免费的可用来组成层次的cache,如图1所示,可以申请代理服务器d(cernet上)和e(internet上)作为您的parent 或sibling,在申请获得通过后就可以在本地cache上设置peer关系得到object。
层次代理服务器有效解决了局域网规模太大时多台代理服务器的协调工作问题,更加有效地节约带宽,优化网络中的信息流动,保障网络的正常健康运行。
