当Varnish可以作为负载平衡器时,HAProxy仍然是必需的吗?

我想负载平衡我的应用程序服务器,以及caching来自他们的回应。

我已经阅读了一篇可以追溯到2012年的HAProxy网站上的文章,这本来是为了澄清HAProxy和Varnish之间的混淆:

http://blog.haproxy.com/2012/07/04/haproxy-and-varnish-comparison/

本文基本上说,HAProxy只是一个反向代理负载平衡器(无caching),而Varnish是一个反向代理caching(无负载平衡),因此它们是互补的。

但是今天,我可以看到在Varnish docs中它也有负载平衡:

https://www.varnish-cache.org/trac/wiki/LoadBalancing

所以我只能猜测这个function是从2012年开始引入的,现在它直接和HAProxy在负载均衡方面进行竞争。

现在考虑到我需要一个反向代理caching+负载平衡器,是真的,我可以使用一个单一的服务器只有光油,这将做到这两个? 与典型的HAProxy光油设置相比,任何限制都是可能的。

清漆不支持SSL

在SSL上运行站点/服务对于任何事情来说都是非常必要的,所以这就是使用haproxy来完成SSL终止的一个原因。

虽然HAProxy和Varnish 都可以进行负载平衡,但只有其中一个是为其构build的。

你也可以使用Apache来达到你的目的,因为它也可以代理和caching,但它不是一个最佳的解决scheme。

在我看来,你最好是使用每个产品的最好的。

我所做的是安装在同一个盒子上,并将Varnishconfiguration为使用HAProxy作为唯一的后端。

CDN指向HAPROXY,然后在Varnish和后端之间进行负载平衡,默认发送到Varnish,除非请求来自基于标头或源IP的Varnish。

这样你可以:

  • 轻松绕过清漆升级或testing
  • 随着负载的增加,将任一层扩展到更多的框
  • 使用每个软件的核心目的

与大多数实现基本负载平衡的软件一样,Varnish实际上只支持循环随机平衡algorithm。

另一方面,HAProxy是为负载平衡而构build的,因此支持 :

  • 循环赛(加权)
  • 一个静态的循环方法
  • 最less的连接
  • 第一台服务器可用
  • 基于源码的分段
  • 基于URI的分段
  • 基于URL参数的分段
  • 基于HTTP头的分段
  • 基于cookie的分包

Varnish的负载平衡是否足够取决于您的需求,但是它肯定没有取代HAProxy。