故障转移缓存反向代理

故障转移缓存反向代理

有没有办法配置或任何其他缓存反向代理,在后端发生故障时从其缓存中提供页面?目前,如果后端发生故障,503 Service Unavailable则会向浏览器返回错误。我更希望访问者在修复后端时看到缓存版本而不是错误页面。

我的设置:

[varnish (公网 ip)] <===> [路由器] <===> [web 服务器 (私网 ip)]

PS:我只有一个后端Web服务器。

答案1

理论上,如果一个对象已经过时,你希望它由缓存提供服务——如果它没有过期,则应将有效期设置得更长……

另一方面,Varnish 认识到理论和实践存在分歧,因此graceVCL 中的指令思考处理这种情况以及该页面中记录的更平淡的用途。

答案2

是的,有 Squid。马克·诺丁汉 (Mark Nottingham) 曾在雅虎 (Yahoo) 从事此工作,请参阅这篇优秀的博客文章了解所有详细信息。

有一点,Squid 3.0 是对 Squid 代码库的一次相当大的重写,因此不要盲目部署最新版本的 Squid,而是先检查哪些版本的 Squid 具有此功能。它可能不会移植到 3.0。

我认为 womble 关于 Varnish 以及通过 Varnish 的 VCL 执行此操作的说法是正确的,但我从未使用 Varnish 配置过类似的东西,所以我不能说。

答案3

2.1.0 引入了优雅的圣人模式: http://varnish-cache.org/wiki/VCLExampleSaintMode

答案4

Varnish 有一项名为“宽限期”的功能,允许您指定一个宽限期,在此期间,TTL 过期后对象将保留。如果您的后端发生故障,Varnish 将提供宽限期(过期)对象。

一探究竟:

http://varnish.projects.linpro.no/wiki/VCLExampleGrace

相关内容