它已经存在了一段时间,但现在亚马逊发布了Elastic Load balance(ELB),您对为高流量Web应用程序部署此解决方案有何看法?
我们应该更换HAProxy还是将ELB视为HAProxy面前的免费服务?
我已经在一个每天大约访问100,000次的网站上运行ELB而不是HAProxy大约一个月了,我对结果非常满意.
但问题是(更新,此问题已由亚马逊AWS修复,请参阅下面的评论):
您无法对域的根进行负载平衡,因为您必须为负载均衡器创建CNAME别名.一旦解决方案是将所有流量重定向http://mysite.com
到http://www.mysite.com
.
除此之外,我真的不能高度评价AWS ELB产品.我也在使用Cloudwatch监控和自动缩放.哦,不要忘记它比运行一个小的EC2实例便宜(每小时0.025美元而不是0.10美元).
对于需要非常快速的Web服务,ELB对DNS CNAME记录间接的依赖性非常严重.在我们的例子中,我们需要有非常好的响应时间.在快速性能测试中,使用ELB将HTTP请求的平均延迟增加了近2倍.这主要是因为CNAME查找上的TTL为零.因此,所有查找都涉及为两个不同的域命名名称服务器,因此名称解析速度较慢.(我担心在DNS中击败缓存只是滥用系统.)在我们的案例中,ELB的唯一希望是通过让Amazon支持Elastic IP作为负载均衡器实例的地址来摆脱CNAME记录.
另一个问题是获取客户端IP地址.对于常规HTTP,这可以正常工作,因为ELB设置了X-FORWARDED-FOR标头.但对于HTTPS,这是不可能的,因为它在TCP层转发.希望有一天ELB会有SSL终止.
亚马逊论坛上有人抱怨ELB的可靠性.我建议你去那边搜索ELB,在这方面形成自己的看法.
我们希望使用ELB来加载平衡Web服务请求,但我们有许多外部调用者,其中一些发送100-Continue HTTP消息.不幸的是,ELB并不理解HTTP协议的那一部分,所以在解决之前我们无法超越概念验证.
2013年更新
根据AWS论坛帖子,现在支持HTTP 100-Continue.
https://forums.aws.amazon.com/message.jspa?messageID=144022