Varnish 服务器:如何放置在顶部负载均衡器和下方 EC2 Web 服务器之间?

Varnish 服务器:如何放置在顶部负载均衡器和下方 EC2 Web 服务器之间?

我还是新手,但现在我在使用 AWS/EC2 Redhat Machines。我有:

  • 1x 负载均衡器(上文)
  • 2 个 EC2 Apache Web 服务器(如下)

就像是:

    LB
    |
 -------
 |     |
Web   Web

那么现在如果我要把1x Varnish前面的放在2x Web Servers

  • 安置情况如何?

请提出建议,是否如下:

    LB
    |
   [V]
 -------
 |     |
Web   Web

是吗?
所以我的问题是:

  • 如果是,那么原来的LB已经没什么用了(我想)。Varnish这里还会有负载均衡器吗?
  • 那么,这是否意味着我不再需要默认的 EC2 负载均衡器?

请指导我正确的放置位置并分享逻辑。
非常感谢。

答案1

ELB 仍然可以发挥作用,因为它:

  1. 可以通过配置 AutoScaling Group 来配置 Varnish 服务器死机时自动替换它。
  2. 允许您通过添加新服务器然后删除旧服务器来启用或停用服务器。这意味着客户端服务不会中断。
  3. 如果您的负载足够高,您可以轻松添加多个 varnish 服务器。
  4. 可以充当位于虚拟私有云 (VPC) 中的后端 Varnish 服务器的网关

所有这些可能都可以在没有 ELB 的情况下进行配置,但对我来说,关键是在负载均衡器上处理 SSL。Varnish不会为您处理 SSL这样你就可以使用负载均衡器来处理它并通过 http 和你的 Varnish 服务器进行通信。

答案2

有多种配置可供选择。每种配置都有您需要评估的某些优点和缺点(例如性能、维护、设置的简易性、可扩展性等)。

对于负载均衡器,您可以使用 Amazon 的 ELB 和/或您自己的 Nginx/HAProxy 解决方案。您可以使用一个(或多个)Varnish 服务器,这些服务器可以位于自己的机器上,也可以在与您的 Web 层相同的服务器上安装和运行 Varnish。

Web 服务器上的 Varnish

一个简单的设置就是在 Web 服务器上安装 varnish。

           LB
           |
     ---------------
     |             |
Web&Varnish   Web&Varnish 

虽然这种方法的缺点是不能让你独立于 Varnish 扩展你的 Web,但设置和理解起来更快。它还简化了你的架构。这种方法可能对你很有效。我想你会在某个时候不再使用这种方法,因为它有一些非常明显的可扩展性问题。

答案3

正如 ianjs 所说,ELB 仍然可以在您的设置中发挥作用……这完全取决于您的需求(自动扩展、SSL 端点、冗余等)。看看其他人是如何遇到类似问题的 [1] [2]

同时,如果你想要利用 Varnish 作为缓存,你需要将它放在你的负载均衡器(如果有)和后端之间(如果涉及多个 Varnish 实例,则使用一致性哈希 [3]),但是当你想水平扩展它时,架构会变得相当复杂(HAProxy [4] 有一个很好的例子)。

因此,如果您要使用 1 个 Varnish 实例和 2 个后端(没有自动扩展、ssl 并且没有任何 Amazon 的高级功能),您可以保持简单并摆脱 ELB:

  Varnish
     |
 ---------
 |       |
Web1   Web2

但你必须:

  • 选择合适的导演 [5]
  • 处理后端健康检查 [6]

因此,您可以选择最适合您需求的架构。

[1]https://stackoverflow.com/questions/14167561/using-an-aws-elb-behind-varnish-is-it-possible

[2]http://cloudreach.blogspot.com.au/2013/01/varnish-and-autoscaling-love-story.html

[3]http://en.wikipedia.org/wiki/Consistent_hashing

[4]http://blog.exceliance.fr/2012/08/25/haproxy-varnish-and-the-single-hostname-website/

[5]https://www.varnish-cache.org/docs/3.0/reference/vcl.html#directors

[6]https://www.varnish-cache.org/docs/3.0/reference/vcl.html#backend-probes

相关内容