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

Min*_*ark 44 architecture haproxy varnish

我可以想象两个设置:

负载平衡然后缓存

                          +-- Cache server #1 (varnish) -- App server #1
                         /
Load Balancer (haproxy)-+---- Cache server #2 (varnish) -- App server #2
                         \
                          +-- Cache server #3 (varnish) -- App server #3
Run Code Online (Sandbox Code Playgroud)

缓存然后负载平衡

                                                       +-- App server #1
                                                      /
Cache Server (varnish) --- Load Balancer (haproxy) --+---- App server #2
                                                      \
                                                       +-- App server #3
Run Code Online (Sandbox Code Playgroud)

第一个设置的问题是有多个缓存,这会浪费大量内存并使缓存更加复杂.

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

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

Mat*_*man 38

几年前,我为一个繁忙的Web应用程序构建了一个类似的设置(只有我用Squid而不是Varnish完成),并且它运行良好.

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

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

优点:

  • 使用HAProxy(x2)和Varnish(x3)冗余,让您高枕无忧
  • 使用HAProxy URI负载平衡选项,Varnish的命中率更高
  • 缓存服务器具有更好的性能,因为它们不需要在内存中保留足够的内容
  • 无效缓存更容易,因为每次都会将相同的URI发送到同一服务器

缺点:

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


小智 11

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

巴蒂斯特

  • 如果您可以包含文章中的相关信息,而不仅仅是链接到它,那么这个答案会更有用. (8认同)