Amazon ec2 AmazonEC2中的负载平衡?

Amazon ec2 AmazonEC2中的负载平衡?,amazon-ec2,load-balancing,scaling,haproxy,Amazon Ec2,Load Balancing,Scaling,Haproxy,我们已经在亚马逊EC2上与之斗争了几天;到目前为止,我们的体验非常好,但我们一直在努力提高软件负载平衡器的性能。我们并不完全是Linux网络高手(通常我们是一家.NET商店),但到目前为止,我们一直保持着自己的风格,试图设置适当的ulimit,检查内核消息和tcpdump是否存在任何异常。 不过,到目前为止,我们已经达到了1700个请求/秒的稳定状态,在这一点上,客户端超时现象比比皆是(我们一直在为此目的使用和调整)。我和一位同事在听最新的Stack Overflow播客,Reddit创始人在播

我们已经在亚马逊EC2上与之斗争了几天;到目前为止,我们的体验非常好,但我们一直在努力提高软件负载平衡器的性能。我们并不完全是Linux网络高手(通常我们是一家.NET商店),但到目前为止,我们一直保持着自己的风格,试图设置适当的ulimit,检查内核消息和tcpdump是否存在任何异常。 不过,到目前为止,我们已经达到了1700个请求/秒的稳定状态,在这一点上,客户端超时现象比比皆是(我们一直在为此目的使用和调整)。我和一位同事在听最新的Stack Overflow播客,Reddit创始人在播客中指出,他们的整个网站都运行在一个HAProxy节点上,到目前为止还没有成为瓶颈。啊!要么没有看到太多的并发请求,要么我们做了一些可怕的错误,要么EC2的共享特性限制了EC2实例的网络堆栈(我们使用的是大型实例类型)。考虑到Joel和Reddit创始人都认为网络可能是限制因素,我们看到的限制是否可能就是网络

非常感谢您的任何想法

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

我们也研究过nginx,但我们一直在与RighScale合作,他们为HAProxy提供了内置脚本。哦,而且我们的截止日期(当然)太紧了,除非证明是绝对必要的,否则无法更换组件。幸运的是,在AWS上,我们可以并行使用nginx测试另一个设置(如果有保证的话),并在晚上切换


很好地描述了每个sysctl变量(在本例中,ip_local_port_range和tcp_fin_timeout都进行了调优)。

并不是对您的问题的真正回答,但nginx和pound作为负载平衡器都有很好的声誉。Wordpress只是有很好的效果

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

我会考虑切换到非现场负载均衡器,而不是在云中,并在其上运行类似IPV的东西。[它之所以会退出亚马逊的云计算,是因为内核的原因]如果亚马逊不限制来自云计算的数据包的源IP,你可以使用单向负载平衡机制。我们这样做,会得到大约800000个同时请求[尽管我们不处理延迟]。我还想说使用“ab2”(apache bench),因为它对用户更友好,而且在我看来更易于使用。

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


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

是的,您可以使用非现场负载平衡器。。在裸机上LVS是一个很好的选择,但是你的延迟会很糟糕!有传言称亚马逊将解决CNAME问题。然而,他们不太可能添加https、深入或自定义健康检查、反馈代理、url匹配、cookie插入(一些具有良好体系结构的人也会这么说。)然而,这就是为什么Scalr、RightScale和其他人在循环DNS条目后面使用HAProxy,通常是其中两个。在Loadbalancer.org上,我们即将推出自己的EC2负载平衡应用程序: 我们正计划使用SSH脚本与autoscaling集成,就像rightscale一样,博客上的任何评论都会受到欢迎。
尽管您的问题已经解决,但还是要感谢您。KEMP Technologies现在为AWS提供了成熟的负载平衡器。也许可以帮你省点麻烦

你知道你用粗体写了整封信吗?这很难理解。Marc,你应该写下你配置这些东西的经验,然后把它们发布到某个地方(你的公司有博客吗?)。听起来它对很多人都有用。您的问题已向上投票。您的链接已断开。@Ztyx谢谢!刚刚更新过。我四处寻找一个更新、更新的信息源,看起来原来的网站仍然有很高的PageRank,内容仍然不错,所以我只是在修改它以反映新的URL。感谢大家的提醒,我现在正在评估这个。很酷的东西比比皆是(尽管命令行工具还有一些不足之处)!不幸的是,AWS负载平衡(ELB)解决方案有一个主要缺陷。它被设计为使用CNAMES,以防止用户将顶级域直接指向负载平衡器。换句话说,您可以将www.mydomain.com指向ELB,但不能指向mydomain.com。对许多人来说,这是一个阻碍。难道你不能将所有呼叫重定向到你的网站,以便键入www.吗?是的,你可以将mydomain.com指向一个服务器,该服务器只向www.mydomain.com发出重定向,然后加载平衡。