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

Azure Load Balancer转发流量至Container Apps失败:健康探针状态为0

问题排查:Azure LB健康探测失败(指向内部负载均衡的Container App环境)

核心问题定位与修复方案

1. 修正Backend Address Pool的IP引用错误

你的Terraform代码中,azurerm_lb_backend_address_pool_address的ip_address字段引用了错误的资源ID:azurerm_container_app_environment.myapp.static_ip_address,但你的Container App环境资源名是myenv,而非myapp,这会导致LB指向无效IP,直接引发探测失败。正确配置如下:

resource "azurerm_lb_backend_address_pool_address" "address_pool" {
     name                    = "address_pool"
     backend_address_pool_id = azurerm_lb_backend_address_pool.pool.id
     virtual_network_id      = var.vnet_id
     ip_address              = azurerm_container_app_environment.myenv.static_ip_address
}

2. 验证网络连通性与NSG规则

  • 子网可达性:确保LB所在子网与Container App环境的infrastructure_subnet处于同一VNet,或已配置正常的VNet对等连接与路由。
  • NSG入站规则:为Container App环境的基础设施子网添加NSG规则,允许来自LB子网的TCP 8000端口入站流量(覆盖健康探测和业务流量)。
  • NSG出站规则:确认LB所在子网的NSG允许出站访问Container App环境静态IP的8000端口。

3. 调整健康探测参数(可选)

默认探测间隔可能过短导致误判,可调整参数提升探测稳定性:

resource "azurerm_lb_probe" "probe" {
      loadbalancer_id = var.load_balancer_id
      name            = "probe"
      port            = 8000
      protocol        = "Tcp"
      interval_in_seconds = 10
      number_of_probes    = 3
      ....
}

4. 确认Container App环境的静态IP属性

验证azurerm_container_app_environment.myenv.static_ip_address返回的是你能正常curl访问的私网IP,可通过Azure CLI确认:

az containerapp env show --name <环境名> --resource-group <资源组名> --query properties.staticIpAddress

验证流程

  1. 修正Terraform代码中的IP引用错误,重新部署资源。
  2. 检查NSG规则配置是否符合要求。
  3. 在LB所在子网的虚拟机内,执行curl -kvvv http://<环境静态IP>:8000,确认LB能正常访问后端服务。
  4. 查看Azure Portal中LB的健康探测详情,确认状态是否更新。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 00:55:09