有没有办法配置 Squid 根据与目标 Web 服务器上的 http 端口通信的延迟来选择对等缓存?
例如,假设我们有两个 Squid 缓存 - 服务器“A”在美国,服务器“B”在中国。我们知道访问中国以外的任何网站意味着由于电缆跨越太平洋,数据包的往返时间会增加约 200-250 毫秒。我希望服务器“A”上的 Squid 探测这一点,并且只有当延迟超过某个阈值时才将请求转发到服务器“B”。否则,它会直接访问网络服务器。
如果必须将此行为编程到 Squid 中,您对将其插入架构的哪个位置有什么建议吗?
答案1
看起来您需要的是使用 cache_peer 指令配置的。以下是来自文档的一个示例:
cache_peer cache.domain.example 父级 3128 3130 默认
除了最后一个位置上的“默认”之外,您还可以指定“权重”和“无查询”。
“no-query”选项告诉 squid 首先向所有配置的缓存发送 ICP 请求。响应最快的缓存就是 HTTP 请求将被定向到的缓存。
“权重”标志将告诉 squid,当多个配置的缓存都有一个对象时,使用响应最快的缓存来获取该对象。
这些选项的完整详细信息在文档中,但这足以帮助您开始。
答案2
如果我理解正确的话,我认为你的说法没有多大意义。
请注意,为了测量延迟,您需要发送至少几个探测,因此它实际上花费的时间与获取对象本身一样多。