Amazon web services ELB非静态IP
如果没有静态IP,这是否意味着如果在客户端DNS记录过期之前IP发生更改,客户端将无法访问ELB指向的资源 或者它实际上是否将旧IP保留了24小时(最大DNS TTL),这样就永远不会发生这种情况 编辑:澄清:Amazon web services ELB非静态IP,amazon-web-services,dns,amazon-elb,Amazon Web Services,Dns,Amazon Elb,如果没有静态IP,这是否意味着如果在客户端DNS记录过期之前IP发生更改,客户端将无法访问ELB指向的资源 或者它实际上是否将旧IP保留了24小时(最大DNS TTL),这样就永远不会发生这种情况 编辑:澄清: DNS记录缓存在客户端。例如,当客户端首次查询*.elb.amazonaws.com时,它返回12.34.56.78。对于对*.elb.amazonaws.com的后续查询,它只需使用12.34.56.78,而不是执行另一个DNS查找(除非DNS记录过期,如TTL所述) 因此,如果ELB
DNS记录缓存在客户端。例如,当客户端首次查询
*.elb.amazonaws.com
时,它返回12.34.56.78
。对于对*.elb.amazonaws.com
的后续查询,它只需使用12.34.56.78
,而不是执行另一个DNS查找(除非DNS记录过期,如TTL所述)
因此,如果ELB的内部IP发生变化,但DNS记录仍指向旧的,它将无法访问资源?弹性负载平衡器服务旨在自动检测弹性负载平衡器自身任何组件的故障并从中恢复(部分恢复可能需要更换负载平衡器并使用新的IP地址) 因此,建议使用CNAMEs分配您的DNS, 如果您的DNS提供商不支持CNAMES,您可以查看路由53
CNAME代表规范名称。CNAME记录可用于将一个名称别名为另一个名称。弹性负载平衡器会公开DNS名称,AWS会更新ELBs的内部IP地址等。AWS ELB提供DNS名称而不是IP地址,因为有多个ELBs在后台运行,由AWS内部管理以实现高性能可用性和容错性 如果内部服务器发生变化,AWS将确保内部DNS映射立即发生 当您想将自定义域名映射到弹性负载平衡器时,由于这些内部复杂性,因此需要使用CNAME而不是IP地址。归功于Dusan:用户控制的权威名称服务器只能指定TTL(最长可达年)对于
CNAME
记录api.example.com
到*.elb.amazon.com
,它不会改变
将*.elb.amazon.com
解析为实际IP12.34.56.78
由amazon的名称服务器完成,其TTL为60秒
因此,Amazon只需保留旧IP 60秒,以确保所有缓存的ELB IP记录都有效。DNS记录缓存在客户端。例如,当客户端首次查询
*.ELB.amazonaws.com
时,它返回12.34.56.78
。对于后续查询*.ELB.amazonaws.com
,它只需使用1即可2.34.56.78
而不是执行另一个DNS查找(除非按照TTL的指示,DNS记录过期)。因此,如果ELB的内部IP发生变化,但DNS记录仍指向旧的,它将无法访问资源?如果使用Route53别名记录而不是CNAMES,TTL为60秒。ELB的DNS查询返回多个地址。大多数设计正确的系统将处理此问题。@Avery235您对客户端的担忧侧面缓存有一些优点,因为DNS TTL对浏览器实现似乎没有意义……但实际上我在这里没有遇到问题。地址不会经常更改,而且从地址从DNS中消失到它实际停止工作之间似乎有一段时间。我没有详细描述这种行为但我一直在开发一个工具来实现这一点——主要是出于好奇和对平台正在做的事情的了解,因为正如我所说,它从来没有引起我注意到的问题。多亏了Dusan,我想我现在理解了机制。请看我上面的答案。ELB记录的TTL是60秒,因为它通常指向对于2个IP地址,很容易进行滚动更新,而不会造成任何停机。@DusanBajic我以为在DNS管理器中指定了TTL?因此用户可以指定超过60秒的时间。对于ELB,在创建负载平衡器时会自动创建ELB DNS名称。@DusanBajic是的,但DNS管理器会告诉客户端保留该记录的时间rd对DNS名称到本地IP地址。因此*.elb.amazonaws.com
将在本地解析到缓存的IP,直到DNS管理器指定的TTL。哦,现在我明白了混淆的原因。看看这一点,对于Amazon负载平衡器,您应该使用别名记录而不是CNAMES。