Squid 反向代理阵列-兄弟节点之间不相互通信

Squid 反向代理阵列-兄弟节点之间不相互通信

我想设置 2 个 squid 服务器,作为我们内联网上的 Web 服务器的反向代理和缓存。负载平衡将通过 DNS 循环或针对不同客户端的不同映射来完成。

问题是,我希望两台服务器在联系网络服务器之前尝试互相联系,看看它们是否在缓存中具有所需的对象(为网络服务器提供服务的网络是瓶颈,我正在尝试消除它)

两个 squid 的配置相同,以下是相关的配置行:

acl dvr1_cache_it_best_tv_com dstdomain dvr1.cache.it.best-tv.com
acl squid1_it_best_tv_com dstdomain squid1.it.best-tv.com
acl squid2_it_best_tv_com dstdomain squid2.it.best-tv.com

http_access allow dvr1_cache_it_best_tv_com
http_access allow squid1_it_best_tv_com
http_access allow squid2_it_best_tv_com
http_access allow all

http_port 8081 accel defaultsite=dvr1.cache.it.best-tv.com

cache_peer dvr1.origin.it.best-tv.com parent 80 0 no-query originserver name=Proxy_dvr1_origin_it_best_tv_com
cache_peer squid1.it.best-tv.com sibling 8081 3130 weight=10 name=Proxy_Squid1_it_best_tv_com
cache_peer squid2.it.best-tv.com sibling 8081 3130 weight=10 name=Proxy_Squid2_it_best_tv_com

cache_peer_access Proxy_dvr1_origin_it_best_tv_com allow dvr1_cache_it_best_tv_com
cache_peer_access Proxy_squid1_it_best_tv_com allow squid1_it_best_tv_com
cache_peer_access Proxy_squid1_it_best_tv_com allow squid2_it_best_tv_com
cache_peer_access Proxy_squid1_it_best_tv_com allow dvr1_cache_it_best_tv_com
cache_peer_access Proxy_squid2_it_best_tv_com allow squid1_it_best_tv_com
cache_peer_access Proxy_squid2_it_best_tv_com allow squid2_it_best_tv_com
cache_peer_access Proxy_squid2_it_best_tv_com allow dvr1_cache_it_best_tv_com

只是为了清楚起见 - dvr1.cache 是代理服务器的别名。dvr1.origin 是 Web 服务器。

两台服务器均能正常工作,提供内容并缓存内容,工作正常。但是,当我清除一台服务器上的缓存然后访问它时,它会从父服务器 (DVR1_ORIGIN) 获取内容,而不是从同级 squid 获取内容。

我配置错了什么?或者也许我没有正确理解架构?我读过 squid 手册,但据我所知,我按照书上说的做了,但它还是不能正常工作。

任何帮助将不胜感激!

答案1

我没有尝试过,所以我不能保证它会起作用。我只是有一些想法:

首先,我认为 acls“dstdomain”应该指正在服务的目标域,而不是服务器的主机名(dvr1.cache.it.best-tv.com)。这可能应该是“it.best-tv.com”,并且您只需要一个 acl 对象。

acl dvr1_cache_it_best_tv_com dstdomain www.yourdomain.com
cache_peer_access Proxy_dvr1_origin_it_best_tv_com 允许 dvr1_cache_it_best_tv_com
cache_peer_access Proxy_squid1_it_best_tv_com 允许 dvr1_cache_it_best_tv_com
cache_peer_access Proxy_squid2_it_best_tv_com 允许 dvr1_cache_it_best_tv_com
http_port 8081 accel defaultsite=www.yourdomain.com

其次,cache_peer 条目的顺序很重要(虽然我不确定这是否适用于您的情况)。以防万一,请尝试将 ORIGIN 对等点放在最后:

cache_peer squid1.it.best-tv.com 兄弟 8081 3130 权重=10 名称=Proxy_Squid1_it_best_tv_com
cache_peer squid2.it.best-tv.com 兄弟 8081 3130 权重=10 名称=Proxy_Squid2_it_best_tv_com
cache_peer dvr1.origin.it.best-tv.com 父级 80 0 无查询原始服务器名称=Proxy_dvr1_origin_it_best_tv_com

最后,您可以尝试在两个代理 cache_peer 定义上使用代理专用选项。

我希望这能有所帮助。

相关内容