实例教程:如何架设层次代理服务器

在一般的网络规模中,在近客户端,使用一台性能较好的Cache代理服务器,就可以满足内部用户的需求,减缓出口线路的拥堵问题。但如果内部网络已扩张到相当庞杂,用户机器数量达到数万台,同一时间的URL请求可能达到上万个,这种情况下极有可能造成单台代理服务器无法及时处理,甚至瘫痪,代理服务器反而会成为新的瓶颈。

主服务器群,然后在利用Squid逆向缓存web80端口来加速自己的网站.各大门户网站象163,sina,chinaitlab之类基本都是使用的这种技术,好处是大大的有.比如加速了网络和可以防黑客(因为他们见到的都是CDN的主机)
这是利用Squid逆向集群模式做的一种应用

先做服务器群,然后在利用Squid逆向缓存web80端口来加速自己的网站.各大门户网站

为了有效解决此类情况,我们可以在内部网络中布置多台代理服务器,代理服务器之间构成Hierarchies(层次),协同工作,减缓负载,减轻线路压力。

网络环境:

象163,sina,chinaitlab之类基本都是使用的这种技术,好处是大大的有。比如加速了网络和可以防黑客(因为他们见到的都是CDN的主机)
这是利用Squid逆向集群模式做的一种应用
网络环境:
主服务器群:源Web服务器群 位于公网ip:220.XXX.XXX.X
port:80(后台才是WEB的服务器)
注:
要保证TCP80,UDP3130在防火墙上是开的(供icp_port通讯使用,多台Squid集群才会用到)
全国各地分服务器:A服务器公网IP111.xxx.xxx.x
B服务器公网ip112.xxx.xxx.x
注:
要保证TCP80,UDP3130在防火墙上是开的(供icp_port通讯使用,多台Squid集群才会用到)
……………………
需要解决的问题:
全国的所有用户,无论是电信,还是网通,都能速度很好的打开网站
实施
1、分别在主服务器群和全国各地分服务器的三台服务器安装Squid,不会安装的请直接关闭本网页。
2、分别配置Squid,这里只重点叙述Squid集群配置要点。
主服务器群Squid的配置:
http_port 220.XXX.XXX.X:80 vhost vport #让Squid监听本机ip的80端口
icp_port 3130 #多台squid通信使用
cache_peer “内网web服务器的地址” parent 80 0 no-query originserver
no-digest name=cache0 #设置源Web服务器群的ip和端口
cache_peer 220.XXX.XXX.X sibling 80 3130 name=cache1
#让远程的squid连接本地Squid工作在sibling模式并指定其端口
cache_peer 111.xxx.xxx.x sibling 80 3130 name=cache2 #A服务器
cache_peer 112.xxx.xxx.x sibling 80 3130 name=cache3 #B服务器
cache_peer_domain cache0 www.php-oa.com
#配置本机squid允许接受访问的域名
acl Safe_ports port 80
acl Safe_ports port 3130 #允许以上端口的代理
全国各地分服务器Squid的配置:
A服务器:
http_port 111.xxx.xxx.x:80 vhost vport
icp_port 3130
cache_peer 220.xxx.xxx.x parent 81 0 no-query originserver no-digest
name=cache0 #设置主服务器群Web服务器为源服务器
cache_peer 111.xxx.xxx.x sibling 80 3130 name=cache1
cache_peer 220.xxx.xxx.x sibling 80 3130 name=cache2
cache_peer 112.xxx.xxx.x sibling 80 3130 name=cache3
cache_peer_domain cache0 www.php-oa.com
acl Safe_ports port 80
acl Safe_ports port 3130
B服务器:
http_port 112.xxx.xxx.x:80 vhost vport
icp_port 3130
cache_peer 220.xxx.xxx.x parent 80 0 no-query originserver no-digest
name=cache0
cache_peer 112.xxx.xxx.x sibling 80 3130 name=cache1
cache_peer 220.xxx.xxx.x sibling 80 3130 name=cache2
cache_peer 111.xxx.xxx.x sibling 80 3130 name=cache3
cache_peer_domain cache0 www.php-oa.com
acl Safe_ports port 80
acl Safe_ports port 3130
虽然配置好了但是如何让电信和网通的用户能有选择的访问两个不同镜像呢?这个请各位自己查相关的资料,要不到
注:下面看看cache_peer的参数
通过squid.conf配置文件中的cache_peer选项来配置代理服务器阵
列,通过其他的选项来控制选择代理伙伴的方法。Cache_peer的使用格式如下:
cache_peer  hostname type http_port icp_port
共有5个选项可以配置:
1.
hostname:指被请求的同级子代理服务器或父代理服务器。可以用主机名或ip地址表示;
2.
type:指明hostname的类型,是同级子代理服务器还是父代理服务器,也即parent(父)
还是 sibling(子);

具体配置方法

主服务器群:源Web服务器群 位于公网ip:220.XXX.XXX.X
port:80(后台才是WEB的服务器)

  1. http_port:hostname的监听端口;
  2. icp_port:hostname上的ICP监听端口,对于不支持ICP协议的可指定7;
  3. options:可以包含一个或多个关键字。
    Options可能的关键字有:
    1.
    proxy-only:指明从peer得到的数据在本地不进行缓存,缺省地,squid是要缓存这部分数据的;
    2.
    weight=n:用于你有多个peer的情况,这时如果多于一个以上的peer拥有你请求的数据时,squid通过计算每个peer的ICP响应时间来
    决定其weight的值,然后squid向其中拥有最大weight的peer发出ICP请求。也即weight值越大,其优先级越高。当然你也可以手工
    指定其weight值;
    3.
    no-query:不向该peer发送ICP请求。如果该peer不可用时,可以使用该选项;
    4.
    Default:有点象路由表中的缺省路由,该peer将被用作最后的尝试手段。当你只有一个父代理服务器并且其不支持ICP协议时,可以使用default和
    no-query选项让所有请求都发送到该父代理服务器;
    5.login=user:password:当你的父代理服务器要求用户认证时可以使用该选项来进行认证。

下面结合我校的实际情况,说明层次代理服务器的架设方法。

注:
要保证TCP80,UDP3130在防火墙上是开的(供icp_port通讯使用,多台Squid集群才会用到)

象163,sina,chinaitlab之类基本都是使用的这种技术,好处是大…

图片 1

全国各地分服务器:A服务器公网IP111.xxx.xxx.x

图1

B服务器公网ip112.xxx.xxx.x

图1是校园网的拓扑结构,内部网通过路由器,由两个出口线路分别接入CERNET和CHINANET,最终汇入Internet。大多数的高校现在都采用这种多出口的方法,因为CERNET虽然可以给予高校合法的IP地址,但它多采用出国流量计费或包月制,费用较高且带宽有限;而CHINANET、CNCNET等运营商的线路的包月费用相对较低,出口访问速度较快。所以一般情况下使用CERNET作入口访问及必要的出口访问(如访问教育资源),而使用CHINANET、CNCNET作大部分的出口访问。

注:
要保证TCP80,UDP3130在防火墙上是开的(供icp_port通讯使用,多台Squid集群才会用到)

我校校园网在地理上分为多个区域,有图书馆及教学区、行政办公区、学生宿舍区等,我们只拿出这三个区域做为例子。在这三个区域中分别放置一台代理服务器,其域名分别为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、分别在主服务器群和全国各地分服务器的三台服务器安装Squid,不会安装的请直接关闭本网页.

(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、分别配置Squid,这里只重点叙述Squid集群配置要点.

(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

主服务器群Squid的配置:

(3)学生宿舍区Cache的配置内容大致同行政办公区,从略。

http_port 220.XXX.XXX.X:80 vhost vport #让Squid监听本机ip的80端口

外部网络上有一些免费的可用来组成层次的Cache,如图1所示,可以申请代理服务器D(CERNET上)和E(Internet上)作为您的parent
或sibling,在申请获得通过后就可以在本地Cache上设置peer关系得到object。

icp_port 3130 #多台squid通信使用

层次代理服务器有效解决了局域网规模太大时多台代理服务器的协调工作问题,更加有效地节约带宽,优化网络中的信息流动,保障网络的正常健康运行。

cache_peer “内网web服务器的地址” parent 80 0 no-query originserver
no-digest name=cache0 #设置源Web服务器群的ip和端口