Amazon-elb 是一种可扩展性解决方案,其工作方式类似于我的 amazon ec2 服务器的多个实例的代理。我想知道使用循环 DNS 将我的名字解析为别名列表是否更有效:machine1.myaccount.amazon.com、machine2.myaccount.amazon.com 等等。
如果我可以配置多台服务器并通过网络/dns 级别而不是使用代理/应用程序级别实现可扩展性,那么为什么要使用 amazon-elb?
答案1
ELB 将负责从 DNS 和 SSL 终止(如果需要)中添加/删除服务器的维护。循环 DNS 是穷人的负载平衡器,它在大多数情况下都能正常工作。这里有一篇关于“浏览器重试”的好文章。http://bit.ly/rhrzuh
如果您正在寻找高可用性解决方案,那么在两个不同的可用区中拥有 2 个 nginx/haproxy 服务器是一个不错的选择。您可以在微型实例上运行它们,只要您不从它们 (nginx) 提供静态数据即可。
如果您想要 HA 和性能的组合,那么请运行 2 个 nginx/haproxy 服务器并从 nginx 服务器提供您的静态资产。
答案2
DNS 轮询仍然没有得到 100% 的网络支持,这可能令人惊讶,而且 DNS 被一些 ISP 大量缓存,因此更新 DNS 可能几天内都不会带来新服务器。ELB 提供即时扩展、粘性会话、HTTPS 卸载等功能。虽然可能不是 ELB,但您肯定应该在应用程序服务器前使用某种负载平衡代理。在我们一些使用 EC2/AWS 的项目中,我们使用专用的 NGINX 实例而不是 ELB,它给了我们更多的控制权并且更便宜。如果您的问题更通用而不是针对 AWS,您可能会得到更好的答案。