我在 Web 服务器集群中有 3 个节点。每个节点都在 LAN 接口上运行 Squid,在本地主机接口上运行 Apache。Squid 可以单独为每台服务器正确缓存,但我认为我设置的缓存对等体不正确。
cache_peer 127.0.0.1 parent 80 0 no-query originserver name=Server1
cache_peer Server2 sibling 80 3130 proxy-only
cache_peer Server3 sibling 80 3130 proxy-only
cache_peer_access Server1 allow MYDOMAIN
每个服务器都有类似的 cache_peer 设置,只是每个服务器都是自己的父服务器,并使用其他两个服务器作为兄弟服务器。我的目标是尽可能提高命中率,但我不知道我是否正确理解了缓存对等逻辑。
我想要 Squid 尝试寻找http://www.example.com/mypage/在其本地缓存中,如果未找到,则查询同级缓存,直到找到为止。如果找不到,则应使用 Apache。
我这样做对吗?
答案1
Squid 尝试通过 ICP 查询每个对等体,测量响应时间,然后决定使用哪个父节点。存在一些常见问题:
- 你的对等体没有响应 ICP 查询,squid 将它们标记为 DEAD
- 你的对等体不支持缓存摘要
- 你提供的是不可缓存的内容,而 squid 总是直接连接
- 你的 acl 规则不允许使用其他对等体
答案就在您的访问日志中。因此尝试这个并给我们一个例子:tail -f /var/log/squid/access.log
答案2
因此在这个例子中,您是否让 squid 在端口 80 上监听您的外部 IP,并让 apache 在每个服务器上绑定到 localhost:80?
需要检查的一件事是确保您icp_port 3130
正在运行 squid 3.0 或更高版本;在 2.x 版本中 3130 是默认值,但在 3.x 中它现在为 0(禁用)。