我正在与一个组织合作,该组织已将 Varnish 部署为所有 Web 流量的缓存反向代理。他们的流量构成了许多客户生成的动态网站,通常的静态资产集合挂在旁边。
虽然我尝试喜欢 varnish(我认为原则上它有一个非常好的架构),但我在管理它和解决问题时遇到了一些麻烦,所以我想知道它是否真的是正确的选择。过去我用squid作为反向代理,但不是同一种角色,所以我没有明确的比较依据。
我的问题是针对那些在生产中部署清漆或认真评估过它的人:你是坚持使用清漆,还是最终使用了另一个反向代理?您坚持使用或切换的关键点是什么,如果您确实使用了其他东西,您最终使用的是什么?
好吧,我在我的网络服务器上运行 Varnish,主要是出于性能原因,尽管它的负载平衡功能也很方便。
我的用例是在基于Django的网站前进行缓存,它对页面加载性能有很大帮助。我能够直接从缓存中提供大多数页面,并轻松处理大量访问者。
我选择 Varnish 的原因主要是性能/可扩展性。要点:
根据我的经验,在大多数情况下,Varnish 的性能比 Squid 好一点,在流量高峰时也好很多。另一方面,正确配置 Varnish 将需要一些邮件列表拖网,因为在网络上流动的准备就绪的特定用例文档没有那么多对于 Squid - 主要是因为 Varnish 相比之下是一个相当年轻的项目。
我花了很长时间试图在沼泽标准 linux/dell 硬件上稳定 Varnish 1.x,它总是会以某种奇怪的方式挂起,并且它的看门狗会重新启动它。这很好,除了没有在其他任何地方持久保存的来之不易的缓存......
话虽如此,您真的使用正确的工具来完成这项工作吗?如果您想要一个可以缓存请求结果的反向代理(假设您提供了高质量的缓存标头),那么 varnish 是一个不错的选择。希望2.0版本更稳定
但是,如果您正在运行一个 *onRails 站点并且您希望在多个后端服务器上进行负载平衡,那么 HAProxy 或 Nginx 可能是要走的路。如果您不需要任何复杂的 url 逻辑(重定向、正则表达式匹配以重写旧 url 等),那么 HAProxy 将适合您。如果您确实需要更强大的功能,请尝试使用 nginx。