有关squid中的cache_peer

发布时间:2020-03-21编辑:脚本学堂
有关squid中的Cache_peer,有需要的朋友可以参考下。

1)、cache_peer邻居分为parent(父邻居),sibling(子邻居).parent和sibling的区别在于父邻居能为子cache转发丢失的Cache,而子邻居不可能.
2)、cache_peer通过cache_peer_access和cache_peer_domain来控制邻居的访问.二者的区别在于前者一般需要先定义一个ACL而后者都直接匹配相应的域名就可以了.
如:
 

复制代码 代码如下:
cache_peer 192.168.0.1 parent 3128 3130
acl AllowDomain dst www.abc.com
cache_peer_access AllowDomain 192.168.0.1
cache_peer_domain 192.168.0.1 parent .xyc.com

3)、cache_peer通过never_direct,always_direct,hierarchy_stoplist等限制对邻居的访问.

4)、squid与邻居cache的通信一般为先为never_direct,always_direct确定怎么样转发(根据相应的标识driect, never_direct标识为direct_no,always_direct标识为direct_yes即直接转发到原始服务器等等 direct_maybe详情见Squid中文权威指南10.10.1),接着Squid根据Squid的设置查看耕邻居的摘要是否命中(根据ICP或 HCTP的请求所发现的),若命中则立即放入转发列表中.这一切也依靠cache_peer_access,cache_peer_domain的.同时 squid检查netdb侦测的RTT是否最优,决定是否选择此邻居转发.

5)、子邻居不转发任何命中丢失的请求,而父邻居可以转发,若Squid发现父邻居到原始服务器的RTT(往返时间)小于自已到原始服务器的RTT,将此请求转发给此父邻居.(RTT时间需借助Netdb选项的检测,对于父邻居的选择还有另外一些定义选项如:Weigh=N设置父邻居的权重来给予他更高的优先级)

ICP/HCTP和Cache摘要以及CARP一样,都是判断请求的URI是否在邻居中被命中。ICP是发送URL请求,Squid等待着邻居的回应,网络的延迟也是很大的,而且在姐妹Cache中假命中又显得很突出。No-Query,禁用ICP协议! Cache摘要是在邻居中生成摘要信息,摘要往往把反应在Cache中的信息,邻居下载每个Cache中的摘要,发送URI请求时查看URL是否在某个摘要中。

附:squid.conf主要配置参考实例

一、浙大同学发的,里面的代理,还有dns=10.10.0.21
$vi etc/squid.conf
 

复制代码 代码如下:
http_port 8080
cache_peer 10.10.2.53 parent 6666 7 login=username:password default no-query
cache_mem 60 MB
cache_mgr zdysgs@zju.edu.cn
dns_nameservers 10.10.0.21
visible_hostname zdysgs.zju.edu.cn
cache_dir ufs /usr/local/squid/var/cache 500 16 256
http_access allow all
never_direct allow all
error_directory /usr/local/squid/share/errors/Simplify_Chinese
cache_swap_low 80
cache_swap_high 97

#这两行是设置cache进行替换的闸值。当占用到97%的cache后,cache中的内容将被清空20%

二、网上找的,很简略。
Squid二级代理
在10.2.1.213上/usr/local/squid安装了 squid-2.5.STABLE7
将此squid配置成二级代理,上级代理IP:10.1.1.12,端口 3128
修改squid.conf包含类似内容:
 

复制代码 代码如下:
cache_peer 10.1.1.12 parent 3128 0 no-query ###定义父代理10.1.1.12,端口3128
acl all src 0.0.0.0/0.0.0.0 ###acl控制列表
http_access allow all
never_direct allow all ###所有请求转发至上级代理

运行squid: # /usr/local/squid/squid ?D