Varnish 的最佳高可用性设置

Best High-Availability-Setup for Varnish

我正在寻找 Varnish 高可用性设置的最佳设置。

具有多个 Varnish 实例的标准设置,每个实例都有自己的缓存存储,因此每个实例都在后端执行自己的请求。

即使使用 Varnish_Storage 的文件系统选项,Varnish-Cache 也不能在多个服务器之间共享。

Varnish plus(商业产品)中似乎有一个高可用性选项 - 是否物有所值?那里有任何RL-Experiences吗? ;-)

作为某种东西 "in between" 我发现了这个(有点)hacky 的解决方案,它不复制数据,而是将每个请求转发给其他清漆实例:http://guytabrar.co.uk/index.php/2016/02/04/varnish-cache-replication-with-vcl/

我错过了什么吗?更多值得研究的想法?

感谢您的意见! 卡斯滕

varnish-plus 提供缓存复制,但我个人没有尝试过,但根据他们的文档,他们正在启动一个复制 Varnish-SHM 的自定义守护进程。

转发每个请求,不是一个好的场景,因为您使到达后端的流量加倍 - 在某些情况下甚至会产生很大的麻烦(例如:POST 将内容存储在数据库中的请求)

我们在一个安静的大型站点上使用 varnish,每天 4-10TB,我们多年来一直在使用的是一个简单的设置:

唯一的问题是当我们一次重启所有 varnish 节点时 - 所以我们有一个部署脚本一个接一个重启,中间暂停 10-20 分钟,这样就不会出现每个 varnish 节点都重启的情况命中率为 0%。

为了监控命中率,我们使用如下脚本:https://gist.github.com/hjanuschka/221521ed0cdbd4ed47c6782640544c33

多年后我们了解到,实际上并不真正需要 2 个活动节点。因为清漆性能非常好,从来不是任何问题的瓶颈。但事实上,备用很重要。 (在硬件错误的情况下)