Squid Web Cache Wiki

Squid Web Cache 文档

🔗 Feature: 将 Squid 链接到缓存层次结构

🔗 详细信息

代理和缓存层次结构由两种基本的对等链接构成。父级链接(显示为绿色)和同级链接(显示为蓝色)。

Peering_Basics.png

这两个简单的连接可以以任意数量复杂的层次结构组合。例如,这个由 6 个同级缓存组成的集群,通过一个网关代理在它们之间进行负载均衡。

Cluster_1x6.png

🔗 如何配置 Squid 将所有请求转发到另一个代理?

首先,您需要使用 cache_peer 指令为 Squid 提供一个父缓存。其次,您需要使用 never_direct 指令告诉 Squid 它不能直接连接到源服务器。这通过以下配置文件行来实现:

cache_peer parentcache.foo.com parent 3128 0 no-query default
never_direct allow all

请注意,使用此配置,如果父缓存失败或变得不可达,则每个请求都将导致错误消息。

如果您希望在所有父级都发生故障时能够使用直接连接,您应该采用不同的方法。

cache_peer parentcache.foo.com parent 3128 0 no-query
prefer_direct off
nonhierarchical_direct off

在没有收到肯定的 ICP、HTCP 等回复的情况下,Squid 的默认行为是连接到源服务器,而不是使用父级。 prefer_direct off 指令告诉 Squid 在 DNS 列出的服务器之前先尝试父级。

某些类型的请求无法缓存,或者通过直接连接可以更快地获得服务,Squid 默认情况下会优化将它们通过直接连接发送。 nonhierarchical_direct off 指令告诉 Squid 仍然通过父级发送这些请求。

:warning: hierarchy_stoplist 指令是另一个会导致流量直接(DIRECT)而不是发送到对等节点(peer)的指令。如果存在,它应该在 Squid-3.2 及更高版本的配置中被完全移除。

🔗 如何加入缓存层次结构?

要将您的缓存置于层次结构中,请在 squid.conf 中使用 cache_peer 指令指定父节点和同级节点。

例如,childcache.example.com 上的以下 squid.conf 文件将其缓存配置为从一个父缓存和两个同级缓存检索数据。

#  squid.conf - On the host: childcache.example.com
#
#  Format is: hostname  type  http_port  udp_port
#
cache_peer parentcache.example.com   parent  3128 3130
cache_peer childcache2.example.com   sibling 3128 3130
cache_peer childcache3.example.com   sibling 3128 3130

:warning: cache_peer_domain 已弃用,并且在当前 Squid 版本中不再可用。

cache_peer_access 指令允许您为特定域指定某些缓存作为同级或父级。

#  squid.conf - On the host: sv.cache.nlanr.net
#
#  Format is: hostname  type  http_port  udp_port
#
cache_peer electraglide.geog.unsw.edu.au parent 3128 3130
cache_peer cache1.nzgate.net.nz          parent 3128 3130
cache_peer pb.cache.nlanr.net   parent 3128 3130
cache_peer it.cache.nlanr.net   parent 3128 3130
cache_peer sd.cache.nlanr.net   parent 3128 3130
cache_peer uc.cache.nlanr.net   sibling 3128 3130
cache_peer bo.cache.nlanr.net   sibling 3128 3130

acl unsw dstdomain .au
cache_peer_access electraglide.geog.unsw.edu.au allow unsw

acl nzgate dstdomain .au .aq .fj .nz
cache_peer_domain cache1.nzgate.net.nz allow nzgate

acl nlanr-eu dstdomain .uk .de .fr .no .se .it
cache_peer_domain pb.cache.nlanr.net allow nlanr-eu

cache_peer_domain it.cache.nlanr.net allow nlanr-uk

acl nlanr-sa dstdomain .mx .za .mu .zm
cache_peer_domain sd.cache.nlanr.net allow nlanr-sa

上面的配置表明,对于 uk、de、fr、no、se 和 it 域,缓存将使用 pb.cache.nlanr.netit.cache.nlanr.net;对于 mx、za、mu 和 zm 域,将使用 sd.cache.nlanr.net;对于 au、aq、fj 和 nz 域,将使用 cache1.nzgate.net.nz

🔗 如何加入 NLANR 的缓存层次结构?

目前(2022 年 12 月)尚不清楚。

🔗 为什么我应该加入 NLANR 的缓存层次结构?

NLANR 层次结构可以为您提供父级或同级缓存的初始来源。加入 NLANR 全球缓存系统将显著提高您的缓存服务的性能。

🔗 如何向 NLANR 的注册服务注册我的缓存?

只需在您的 squid.conf 中启用这些选项,即可完成注册。

cache_announce 24
announce_to sd.cache.nlanr.net:3131

:warning: 公告您的缓存不等于加入 NLANR 缓存层次结构。您可以在不注册的情况下加入 NLANR 缓存层次结构,也可以在不加入 NLANR 缓存层次结构的情况下注册。

🔗 如何找到离我更近的其他缓存并与它们建立父/子/同级关系?

访问 NLANR 缓存 注册数据库,以发现您附近的其他缓存。请记住,仅仅因为一个缓存已在数据库中注册,并不意味着它们愿意成为您的父级/同级/子级。但问问也无妨……

🔗 故障排除

🔗 我的缓存注册未出现在 Tracker 数据库中。

类别:功能

导航:站点搜索站点页面类别🔼 向上