You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否在AWS Route53同一记录名下配置别名与IP双A记录实现零停机迁移?

解决Route53添加多条A记录实现轮询的报错问题

问题根源

你遇到的InvalidChangeBatch 400错误,是因为Route53不允许同一域名(name)+同一记录类型(type)存在多个独立的记录集。你需要的轮询流量分配,是在同一个A记录集内添加多个资源记录值,而非创建两条独立的A记录。

解决方案

Route53的简单路由策略(默认)支持在同一记录集内包含多个值(包括别名记录和普通IP),默认会以轮询方式返回这些值,正好满足你的零停机迁移需求。

1. 控制台手动操作步骤

  • 登录AWS Route53控制台,进入你的托管区域
  • 找到现有web.secret.的A记录,点击「编辑记录」
  • 在「值」区域,保留原EC2的弹性IP(EIP),点击「添加另一个值」
  • 切换到「别名」选项,选择你的ALB:
    • 「别名目标类型」选「应用负载均衡器」
    • 选择ALB所在区域,然后选中目标ALB
    • 开启「评估目标运行状况」(可选,确保只返回健康的目标)
  • 保存更改,此时该记录集将包含两个条目:EC2的EIP和ALB的别名

2. Terragrunt/Terraform配置方式

不要创建两个独立的aws_route53_record资源,而是在同一资源中同时定义原EIP和ALB别名:

resource "aws_route53_record" "web_secret" {
  zone_id = aws_route53_zone.your_zone.zone_id
  name    = "web.secret"
  type    = "A"

  # 保留原EC2的EIP
  records = ["x.x.x.x"]

  # 添加ALB的别名配置
  alias {
    name                   = aws_lb.your_alb.dns_name
    zone_id                = aws_lb.your_alb.zone_id
    evaluate_target_health = true
  }

  routing_policy = "simple" # 默认策略,轮询返回多个值
}
  • 注意:如果之前已通过Terraform管理该记录,需确保现有记录已导入状态,再修改配置添加别名;若之前是手动创建,可先导入再配置。

3. 验证与后续操作

  • 配置完成后,用dig web.secret或nslookup web.secret测试,会看到轮询返回EC2 IP和ALB的DNS解析结果
  • 2-3天后业务平稳时,只需编辑该记录集,移除EC2的EIP条目即可完成迁移,全程无停机

内容的提问来源于stack exchange,提问作者Kristi Jorgji

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 12:50:05