![使用 AWS 的 Route53 切换 CNAME 时避免停机](https://linux22.com/image/612426/%E4%BD%BF%E7%94%A8%20AWS%20%E7%9A%84%20Route53%20%E5%88%87%E6%8D%A2%20CNAME%20%E6%97%B6%E9%81%BF%E5%85%8D%E5%81%9C%E6%9C%BA.png)
我正在尝试从 Heroku 无缝过渡到 AWS。目前,DNS 由 Route53 处理,CNAME 记录将流量发送到 heroku SSL 子域。我需要将其更改为 A Alias 记录,指向新的 Elastic Load Balancer,而不会中断服务。
如果初始记录是 A 记录,则只需创建别名 A 记录,然后删除原始记录,这样给定子域始终会有一个活动的 A 记录。但是,CNAME 会阻止为同一子域创建任何其他记录,并显示以下消息:
<Error><Type>Sender</Type>
<Code>InvalidChangeBatch</Code>
<Message>RRSet of type A with DNS name www.example.com. is not permitted because a conflicting RRSet of type CNAME with the same DNS name already exists in zone example.com.</Message></Error>
如果我在创建 A 记录之前删除 CNAME 记录,那么将有一个窗口,在此期间过期的 TTL 将无法解析网站。我该如何避免这种停机?
答案1
看来您正在使用ChangeResourceRecordSets API 调用。只需同时发送两个更改:针对 A 记录发送 CREATE,针对 CNAME 记录发送 DELETE。
如果这不起作用,就向亚马逊大喊,直到他们解决问题。