在漆膜前面或在其他方面的Haproxy?

时间:2013-03-16 10:34:21

标签: architecture varnish haproxy

我可以想象两种设置:

负载均衡然后缓存

                          +-- Cache server #1 (varnish) -- App server #1
                         /
Load Balancer (haproxy)-+---- Cache server #2 (varnish) -- App server #2
                         \
                          +-- Cache server #3 (varnish) -- App server #3

缓存加载均衡

                                                       +-- App server #1
                                                      /
Cache Server (varnish) --- Load Balancer (haproxy) --+---- App server #2
                                                      \
                                                       +-- App server #3

第一个设置的问题是存在多个缓存,这会浪费大量内存并使缓存失效变得更加复杂。

第二个设置的问题是可能会出现性能损失和两个单点故障(varnish和haproxy)而不是一个(haproxy)?

我很想接受第二次设置,因为haproxy和varnish都应该快速而稳定:您的意见是什么?

4 个答案:

答案 0 :(得分:37)

几年前,我为一个繁忙的网络应用程序构建了一个类似的设置(只有我用Squid而不是Varnish完成),并且效果很好。

我建议您使用第一个设置(HAProxy - > Varnish)进行两项修改:

  1. 使用keepalived和共享虚拟IP
  2. 添加辅助HAProxy服务器
  3. 使用balance uri负载平衡算法优化缓存命中数
  4. 优点:

    • 使用HAProxy(x2)和Varnish(x3)冗余安心
    • 使用HAProxy URI负载平衡选项
    • 提高Varnish的命中率效率
    • 缓存服务器的性能更佳,因为它们不需要保留在内存中
    • 由于同一URI每次都会转到同一台服务器
    • ,因此缓存失效更容易

    缺点:

    • URI平衡效果很好,但是如果缓存服务器出现故障,后端服务器将会受到攻击,因为从更新的URI平衡哈希中获取松弛的其他缓存服务器将需要重新检索缓存的数据。也许不是一个大骗局,但我必须牢记我的系统。

答案 1 :(得分:11)

两者都有利弊。 更多以下博客文章,包括HAProxy和Varnish的配置: http://blog.exceliance.fr/2012/08/25/haproxy-varnish-and-the-single-hostname-website/

巴普蒂斯特

答案 2 :(得分:1)

当然是第一个!

将HAProxy配置为基于URI的平衡。 (如果您的应用程序用户会话与IP平衡模式相反,则需要分发您的应用程序用户会话。)

特别是如果你需要HTTPS端点,因为Varnish不会谈论HTTPS。

答案 3 :(得分:0)

为什么不使用2个LB,第一个LB可以使用balance uri选项,第二个LB可以使用您选择的策略(工作量,循环)

          +-- Cache Server #1 --+                +-- App server #1
         /                       \              /
LB #1 --+                         + -- LB #2 --+---- App server #2
         \                       /              \
          +-- Cache Server #2 --+                +-- App server #3

根据您的需要进行扩展,您需要多少。如果您发现自己并未在Cache中遇到瓶颈,只需删除LB#1并在前面只放置一个缓存服务器