我还是新手,但现在我在使用 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 仍然可以发挥作用,因为它:
- 可以通过配置 AutoScaling Group 来配置 Varnish 服务器死机时自动替换它。
- 允许您通过添加新服务器然后删除旧服务器来启用或停用服务器。这意味着客户端服务不会中断。
- 如果您的负载足够高,您可以轻松添加多个 varnish 服务器。
- 可以充当位于虚拟私有云 (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