![squid3 在 127.0.0.1 不同端口上使用 cache_peer 循环失败](https://linux22.com/image/649982/squid3%20%E5%9C%A8%20127.0.0.1%20%E4%B8%8D%E5%90%8C%E7%AB%AF%E5%8F%A3%E4%B8%8A%E4%BD%BF%E7%94%A8%20cache_peer%20%E5%BE%AA%E7%8E%AF%E5%A4%B1%E8%B4%A5.png)
我有 3 条隧道通向运行 squid3 的 Debian(端口 9001 至 9003)。每条隧道的开头都运行一个代理。我尝试通过以下方式对这些代理进行负载平衡:
http_access allow all
http_port 4128
cache_peer 127.0.0.1 sibling 9001 round-robin
cache_peer 127.0.0.1 sibling 9002 round-robin
cache_peer 127.0.0.1 sibling 9003 round-robin
当我重新启动 squid3 时,在第 3 行出现 FAIL。我也尝试了parent
。sibling
同样失败。
仅供参考,如果我将客户端设置为 debian 的 IP,端口为 9001 或 9002 或 9003,则可以正常工作。
任何想法?
答案1
您应该指定姓名每个选项缓存对等体. 引自cache_peer 文档:
name=xxx --- 对等体的唯一名称。如果同一主机上有多个对等体但端口不同,则需要此名称。
所以你的缓存对等体配置应该是这样的
cache_peer 127.0.0.1 parent 9001 0 name=A round-robin no-query no-digest
cache_peer 127.0.0.1 parent 9002 0 name=B round-robin no-query no-digest
cache_peer 127.0.0.1 parent 9003 0 name=C round-robin no-query no-digest
cache_peer 127.0.0.1 parent 9004 0 name=D round-robin no-query no-digest
答案2
最终解决了问题!
编辑/etc/hosts
并添加:
127.0.0.1 tunnelproxy1
127.0.0.1 tunnelproxy2
127.0.0.1 tunnelproxy3
127.0.0.1 tunnelproxy4
然后转到/etc/squid3/squid.conf
:
http_access allow all
http_port 3128
cache_peer tunnelproxy1 parent 9001 0 round-robin no-query no-digest
cache_peer tunnelproxy2 parent 9002 0 round-robin no-query no-digest
cache_peer tunnelproxy3 parent 9003 0 round-robin no-query no-digest
cache_peer tunnelproxy4 parent 9004 0 round-robin no-query no-digest
never_direct allow all
如果您认为有更好的解决方案,请随意:)