2008-11-04 60 views
45

我们一直在与HAProxy战斗几天,现在在亚马逊EC2;迄今为止的体验非常棒,但我们一直在阻止软件负载平衡器获得更多性能。我们并不完全是Linux网络专家(我们通常是.NET商店),但是我们迄今为止一直都在持有我们自己的,试图设置适当的限制,检查内核消息和tcpdump是否存在任何违规行为。 到目前为止,我们已经达到约1,700个请求/秒的高峰,此时客户端超时(我们一直在使用和调整httperf用于此目的)。一位同事和我正在倾听最近的Stack Overflow播客,其中Reddit创始人指出他们的整个网站运行一个HAProxy节点,而且迄今为止它还没有成为瓶颈。确认!要么不知道有多少并发请求,我们做的是非常错误的事情,或者EC2的共享特性限制了Ec2实例的网络堆栈(我们使用的是大型实例类型)。考虑到Joel和Reddit创始人都认为网络可能会成为限制因素,这有可能是我们看到的限制吗?Amazon EC2中的负载平衡?

任何想法非常感谢!

编辑看起来实际问题并不是实际上与负载平衡器节点!罪魁祸首实际上是运行httperf的节点,在这种情况下。由于httperf针对每个请求构建和拆分套接字,因此它会在内核中花费大量CPU时间。当我们提高请求速率时,TCP FIN TTL(默认为60s)会导致套接字过长,并且ip_local_port_range的默认值对于此使用情况来说太低。基本上,在客户端(httperf)节点持续创建和销毁新套接字几分钟后,未使用端口的数量用完,并且在此阶段后续“请求”出错,产生低请求/秒数和大量的错误。

我们也看过nginx,但我们一直在使用RighScale,他们已经有了HAProxy的插件脚本。噢,当然,我们的时间太紧[当然]要切换组件,除非它证明绝对必要。实际上,在AWS上允许我们使用nginx并行地测试另一个设置(如果有保证的话),并在晚些时候进行切换。

This page很好地描述了每个sysctl变量(在这种情况下调整了ip_local_port_range和tcp_fin_timeout)。

+3

Marc,你应该写下你配置这些东西的经验,并将它们发布到某处(你的公司是否有博客?)。听起来好像对很多人有用。 Upvoted你的问题。 – SquareCog 2008-11-07 06:55:56

+0

您的链接已损坏。 – Ztyx 2015-05-19 19:20:14

+0

@Ztyx谢谢!只是更新了它。我搜索了一个更新,更新的源代码,看起来原来的网站仍然有很高的PageRank,内容还是很不错,所以我只是纠正它以反映新的URL。 – 2015-05-20 21:27:35

回答

9

不是你的问题的答案,但nginx和英镑都有良好的负载平衡器的声誉。 WordPress的只是switched to nginx与良好的结果。

但更具体地说,要调试您的问题。如果你没有看到100%的CPU使用率(包括I/O等待),那么你是网络绑定的,是的。 EC2内部使用千兆网络,请尝试使用XL实例,以便您拥有底层硬件,而不必共享该千兆网络端口。

1

我会考虑切换到非现场负载均衡器,而不是在云中,并在其上运行类似IPVS的东西。 [为什么它不能使用亚马逊的云是因为内核的原因]如果亚马逊不限制数据包的源IP,则可以使用单向负载均衡机制。我们做了这样的事情,它使我们获得了大约80万个同时请求[尽管我们没有处理延迟]。我也会说使用“ab2”(apache bench),因为它更友好一点,并且在我的愚见中更容易使用。

20

不直接回答问题,但EC2现在支持通过Elastic Load Balancing进行负载平衡,而不是在EC2实例中运行自己的负载平衡器。

编辑:亚马逊的Route 53 DNS服务现在提供了一种方法来指向一个ELB的顶级域与“别名”记录。由于亚马逊知道ELB的当前IP地址,因此它可以返回该当前IP的A记录,而不必使用CNAME记录,但仍可随时自由更改IP。

3

是的,你可以使用一个非现场负载平衡器..和裸机LVS是一个很好的选择,但你的延迟将是可怕的!有传言说,亚马逊正在修复CNAME问题。然而,他们不太可能添加https,深度或自定义运行状况检查,反馈代理,url匹配,cookie插入(并且一些架构良好的人也会说非常正确。)但是,这就是Scalr,RightScale和其他人使用HAProxy的原因,通常是两种他们在循环DNS入口后面。在Loadbalancer.org上,我们即将推出我们自己的EC2负载平衡应用: http://blog.loadbalancer.org/ec2-load-balancer-appliance-rocks-and-its-free-for-now-anyway/ 我们计划使用SSH脚本以与缩放比例相同的方式与自动缩放进行整合,并在博客上赞扬任何评论。 谢谢

0

即使您的问题解决了。 KEMP Technologies现在拥有一套全面的AWS负载平衡器。可以为你节省一些麻烦。