47

我们已经在 Amazon EC2 中与HAProxy斗争了几天;到目前为止,体验非常好,但我们一直坚持从软件负载平衡器中挤出更多性能。我们并不完全是 Linux 网络专家(我们通常是一家 .NET 商店),但到目前为止,我们一直坚持自己的想法,尝试设置适当的 ulimit,检查内核消息和 tcpdump 是否存在任何违规行为。到目前为止,我们已经达到了大约 1,700 个请求/秒的稳定期,此时客户端超时比比皆是(我们一直在使用和调整httperf以此目的)。我和一位同事正在收听最新的 Stack Overflow 播客,其中 Reddit 的创始人注意到他们的整个网站都运行在一个 HAProxy 节点上,并且到目前为止还没有成为瓶颈。确认!要么不知何故看不到那么多并发请求,要么我们做错了什么,要么 EC2 的共享特性限制了 Ec2 实例的网络堆栈(我们使用的是大型实例类型)。考虑到 Joel 和 Reddit 的创始人都同意网络可能是限制因素这一事实,这可能是我们看到的限制吗?

任何想法都非常感谢!

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

我们也看过 nginx,但我们一直在使用 RighScale,他们有 HAProxy 的插入式脚本。哦,除非证明绝对必要,否则我们 [当然] 的最后期限太紧了,无法更换组件。幸运的是,在 AWS 上允许我们并行使用 nginx 测试另一个设置(如果有必要的话),并在稍后一夜之间进行切换。

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

4

5 回答 5

20

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

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

于 2009-05-18T12:32:59.337 回答
9

不是您问题的真正答案,但 nginx 和 pound 作为负载平衡器都享有盛誉。Wordpress 刚刚切换到 nginx,效果很好。

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

于 2008-11-04T15:29:48.880 回答
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 脚本以与 rightscale 相同的方式与自动缩放集成,欢迎在博客上发表任何评论。谢谢

于 2010-10-02T21:44:11.483 回答
1

我会考虑切换到场外负载均衡器,而不是在云中,并在其上运行类似 IPVS 的东西。[它离开亚马逊云的原因是因为内核的东西]如果亚马逊不限制来自亚马逊云的数据包的源 IP,你可以使用单向负载平衡机制。我们做了这样的事情,它让我们同时收到了大约 800,000 个请求[尽管我们不处理延迟问题]。我还会说使用“ab2”(apache bench),因为它对用户更友好,并且在我的拙见中更易于使用。

于 2008-11-05T17:26:18.597 回答
0

即使你的问题解决了。KEMP Technologies 现在拥有一个成熟的 AWS 负载均衡器。可能会为您省去一些麻烦。

于 2014-11-17T21:28:27.960 回答