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

Terraform搭建AWS蓝绿部署时负载均衡无法访问问题求助

负载均衡无法访问的问题修复

你遗漏了4项关键配置,按优先级修复如下:

  • 缺少公有子网和公网路由表的关联
    你已经创建了绑定互联网网关的公网路由表,但没有将两个公有子网关联到该路由表,导致子网内的ALB和EC2都无法和公网通信。添加如下资源即可:
resource "aws_route_table_association" "public_subnet_1_assoc" {
  subnet_id      = aws_subnet.public_subnet_1.id
  route_table_id = aws_route_table.web.id
}

resource "aws_route_table_association" "public_subnet_2_assoc" {
  subnet_id      = aws_subnet.public_subnet_2.id
  route_table_id = aws_route_table.web.id
}
  • 公有子网未开启自动分配公网IP
    默认情况下AWS公有子网不会自动给实例分配公网IP,EC2没有公网IP就无法给公网请求回包。在aws_subnet.public_subnet_1和aws_subnet.public_subnet_2的资源配置中添加参数:
map_public_ip_on_launch = true
  • 多余的EIP配置需要删除
    你配置的aws_eip.lb是绑定到单台EC2的资源,和ALB完全无关,反而会占用公网资源,直接删除该资源即可,ALB会自动分配公网访问地址。
  • 目标组未配置健康检查
    默认的健康检查规则可能会误判实例状态,导致ALB拒绝转发流量。在aws_lb_target_group.my_tg资源中添加健康检查配置:
health_check {
  path                = "/"
  protocol            = "HTTP"
  matcher             = "200-399"
  interval            = 30
  timeout             = 5
  healthy_threshold   = 2
  unhealthy_threshold = 2
}

修改完成后重新执行terraform apply,等待ALB状态变为active、目标组内的实例状态变为healthy后即可正常访问负载均衡DNS。

公有子网是否需要NAT网关

你的判断正确,公有子网不需要配置NAT网关。
NAT网关的核心作用是为没有公网IP的私有子网资源提供主动访问公网的能力,公有子网的资源可以直接通过互联网网关和公网通信,不需要经过NAT网关。只有后续你将EC2实例部署到私有子网时,才需要配置NAT网关。

内容的提问来源于stack exchange,提问作者Mr. Oleg

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 10:42:00