清除多个清漆实例上的对象

时间:2013-05-28 21:24:26

标签: load-balancing varnish haproxy

我在Varnish实例前使用Load Balancer(LB)。只是说LB正在侦听端口:80并且在不同的端口上有多个Varnish实例。

即。我有一个LB连接到4个清漆实例,LB以循环方式执行。

现在,我如何清除Varnish上的对象并保持不同Varnish实例之间的一致性。

1 个答案:

答案 0 :(得分:1)

对此的简单解决方案是对您知道需要清除的内容使用低TTL。使用10秒TTL,可能根本不需要发送清除。以一些后端请求为代价解决了问题。除非你的后端很慢,或者你的流量水平是每秒100/1000秒,否则这样可以正常工作。

另一个稍微肮脏的解决方案,假设您的LB实际上正在进行循环,只是让清除过程发送PURGE请求n次。一个请求每个Varnish背后。这当然有点脆弱,因为当您添加更多服务器时,您可能会(/将)忘记调整它。

如果你真的想要它是脏的,你可以在VCL中重新启动并链接进程。让Varnish#1在清除自己的缓存之后,使用Varnish#2作为PURGE请求的后端。 #2做同样的事情并将其传递给#3,冲洗并重复。这里有龙,除非你对VCL非常熟悉,否则不要这样做。