将域从 A 记录迁移到 CNAME 时,订单很重要

Aar*_*ain 1 domain-name-system cname-record amazon-web-services

我们正在将一些站点从其他提供商迁移到 AWS。我们当前的负载均衡器在单个 IP 上可用,因此所有 DNS 条目都是使用 A 记录创建的,例如:

A example.com 192.0.2.0

您可能知道,AWS Elastic Load Balancer 已经为其负载均衡器提供了 A 记录,因此这些站点是使用 CNAME 记录创建的,例如:

CNAME example.com production-lb1-<numbers>.us-west-1.elb.amazonaws.com

我们用 900 秒的 TTL 设置该记录,我们还没有看到它传播出去

dig all example.com

是否有一些神奇的 DNS 内部机制可以阻止这样的名称冲突?IE 它不想创建 CNAME,因为 A 和 CNAME 会指向矛盾的信息?

那么这是否意味着我必须删除 A 记录,然后添加 CNAME?DNS 控制器是否足够聪明,不会在没有任何内容的情况下丢弃我的网站?IE 我真的不希望 A 名称在 CNAME 尚未启动时消失。想法?

MLu*_*MLu 5

  1. A 记录TTL 是多少?例如,如果是 43200(12 小时),则旧记录将在全球 DNS 缓存中保留长达 12 小时。

    对此的解决方案是在更改记录之前提前将旧记录上的 TTL 降低到大约 300(5 分钟)。

  2. 不能在域根(又名 apex)中使用CNAME。即example.com A 123.456.789.123是有效的,虽然example.com CNAME production-lb1-...elb.amazonaws.com无效的。这可能就是您的 DNS 服务器忽略它的原因。

    对此的解决方案是将域迁移example.com到 AWS Route53,然后使用ALIAS Arecord 而不是CNAME. 这种方式请求example.com返回 ELB 的实际 IP 地址而不是 ELB 的 CNAME。这是一个微小但至关重要的区别。

    不幸的是,ALIAS 仅在域和负载均衡器都在 AWS 上时才有效。

    请参阅此处:为什么域的根不能是 CNAME

希望有帮助:)