构build一个SSL服务器场

我有兴趣在下面引用的文章中构build这个架构。

我目前有一个价格适中的第4层负载平衡器,我的应用程序服务器是SSL端点。 我想在我的负载平衡器和我的应用程序服务器之间放置一个SSL服务器场。 然后,我将在SSL场和我的应用程序服务器之间放置另一个廉价的负载平衡器,以执行第7层路由。

在这里输入图像说明

我的Web应用程序有相当高的消费者stream量,6台服务器可以处理大约50%的容量。 另外,我的基础设施stream量比我的消费者stream量还要高出几个数量级。 这是来自世界各地的数据,必须实时与我的networking应用程序集成。 总共我有18个应用程序服务器来处理所有的stream量,再加上6个数据库服务器。 我将在接下来的2周内再添加6个应用程序服务器,在此之后的2周内再增加6个应用程序服务器。 保守地说,我估计到今年年底,我需要扩展到120台服务器。

我现在的动机是将消费者stream量与基础设施stream量分开。 消费者stream量的优先级高于基础设施stream量,我不能让基础设施方面的踩踏力量取消我的面向消费者的服务器。 有一个永远在线的网站是重中之重。 但是,如果某个客户端应用程序服务器出现故障,则需要将该通信路由到指定用于基础设施通信的服务器。

复杂的是,所有的stream量都使用相同的主机名来解决,并且几乎是100%https。 在我的情况下区分基础设施和消费者stream量的唯一方法是通过URL(我inheritance的差的体系结构),所以我需要一个第7层负载均衡器能够路由。 但是,为了工作,我需要一个花哨的基于硬件的SSL终止符或SSL服务器场,如上所述。 因为我的用户基础正在快速扩展,所以我担心如果我走下硬件path,它将变得非常快,特别是因为我需要4个高可用性(2个设施中的2个相同的设置)。 同时,上面的图表看起来非常灵活,可以横向扩展。

有没有人build立过这个? 是否有预build的configuration? 我应该做什么考虑和我应该使用什么软件(我听说有人用mod-sslnginx和stunnel使用apache)? 另外,什么时候购买昂贵的负载均衡器vs构buildSSL服务器场是否合理?

http://1wt.eu/articles/2006_lb/index_05.html

对于120服务器群集, 请咨询专业人员 。 我不会想到你会为你的应用程序得到足够详细的答案。

我们设置的最复杂的集群configuration只有20台服务器,其中只有12%是HTTPSstream量(14Mbit纯SSL)。

我们典型的build筑是…

如果有帮助,对于Web群集,我们通常使用:

lvs (initial ssl load balancing) -> pound (ssl-unwrapping) -> varnish (caching) -> haproxy (load balancing) -> nginx (static content) -> php (dynamic content) -> mysql (db) 

我们曾经用过HAProxy (代替Pound)的HAProxy ,但是它造成了一些复杂性(无法设置标题)。

我们使用它,它工作的非常好,以至于我们无法将它推到我们所拥有的硬件和testing期间通过Apache jMeter推送stream量的限制上。

pound的主页上还有关于性能改进的说明

如果PCRE,tcmalloc(来自Google perftools包)和/或Hoard可用,Pound将会与他们链接。 这将提供显着的性能提升,并强烈build议。

pound被认为对“低”交通应用是有利的,但似乎并不像其他竞争对手那样大,其他人在基准testing中也有logging

软件SSL终结者基准

  1. http://vincent.bernat.im/en/blog/2011-ssl-benchmark-round2.html
  2. http://vincent.bernat.im/en/blog/2011-ssl-benchmark.html
  3. http://barry.wordpress.com/2008/04/28/load-balancer-update/

CPU使用率可能是关键问题

CPU消耗将成为你最大的问题,所以聪明的SSL密钥大小将会有所帮助,1024位(现在被大多数SSL权威人士弃用)与2048位对比3072位密钥将会线性增加开销。

以下是关于一般SSL性能的一些很好的解读, http://www.imperialviolet.org/2010/06/25/overclocking-ssl.html

你最终在这里find的是没有“正确的”答案,只有再次testing,再testing,再testing一下,才能在你的场景中find最好的解决scheme。

您可以使用Linux防火墙将消费者stream量的基础设施拆分。 使用netfilter / iptablesstring匹配function,您可以匹配基于url的stream量。 stream量匹配后,您可以使用它来执行QoS或转发stream量不同。