我有一个 Amazon Elastic Load Balancer。我无法将我的域名顶点 -- domain.com 设置为 ELB,因为 Amazon 不提供 IP。
如果我:
- 设置一个新的 EC2 实例(具有自己的 IP)
- 设置从 EC2 到 ELB 的反向代理(HAProxy?Apache?Nginx?)
- 将我的 DNS 指向代理的新 EC2 实例
我会面临什么后果?由于我的单个 EC2 实例是故障点,这是否会使 ELB 变得毫无意义?如果 ELB 中的每个实例每天获得 100 GB 的带宽,EC2 代理是否能够处理它?
答案1
我的公司遇到了这个问题。我们使用 301 重定向从 ourdomain.com 到 www.ourdomain.com。通过指向子域,您就可以使用 CNAME。CNAME 指向其他域。因此,www.ourdomain.com 是 ourelb.amazonaws.com 的 CNAME。
不幸的是,这会产生 SPoF。如果重定向服务器出现故障,您的网站将停止工作。但是,有一些服务可以为您执行 301 重定向到子域。它们需要付费,但您不需要拥有 SPoF。
答案2
如果您使用 Amazon 的 Route 53 服务来托管您的 DNS,那么您可以将您的域顶点直接指向 Elastic Load Balancer。Amazon 的 Route 53 支持 A 记录别名,其作用类似于 CNAME,但没有额外的 DNS 请求。这允许您为域顶点创建 A 记录并将其设置为负载均衡器的别名(使用特殊 ID)。当用户请求您的域顶点时,将返回负载均衡器的公共 IP(可能有多个,这就是 Amazon 不告诉您它是什么的原因)。
http://aws.amazon.com/route53/faqs/#Zone_apex
Route 53 非常便宜,特别是如果您使用 ELB。它的价格为每月每个域名 0.50 美元,每月每 100 万个查询 0.50 美元,但您不必为指向 ELB 实例的查询付费。如果您的所有 DNS 记录都指向 ELB,那么您只需支付每月 0.50 美元的 DNS 托管费用。
答案3
是的,通过将一个实例放在其他实例前面并将数据代理给它们,您会引入另一个单点故障。
Amazon 不会直接向您提供负载均衡器的 IP,但会向您提供可解析该 IP 的 DNS 名称。使用此名称作为 CNAME 来指向您的域。我建议仅对负载均衡内容使用子域。