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

使用Terraform部署无负载均衡器的Azure VMSS如何配置健康探测

无负载均衡器场景下VMSS滚动升级健康检测配置方案

问题根因

你遇到的报错是Azure平台的强制要求:使用Rolling滚动升级策略的VMSS必须配置健康检测能力,用于判断升级过程中实例是否正常运行,避免全量升级故障版本。

解决方案

无负载均衡器场景下,不需要配置负载均衡器健康探针,直接在VMSS中内嵌应用健康扩展即可满足要求,该扩展会在虚拟机内部运行探测逻辑,直接向VMSS控制面上报实例健康状态,完全不依赖外部负载均衡资源。
具体配置步骤如下:

步骤1:修改VMSS Terraform配置

在你现有的azurerm_virtual_machine_scale_set资源块中新增health_extension配置块,示例如下(原有其他配置保持不变即可):

resource "azurerm_virtual_machine_scale_set" "example" {
  # 原有基础配置保持不变
  name                = "mytestscaleset-1"
  location            = azurerm_resource_group.example.location
  resource_group_name = azurerm_resource_group.example.name
  upgrade_policy_mode  = "Rolling"

  # 新增健康扩展配置
  health_extension {
    publisher               = "Microsoft.CPlat.Core"
    type                    = "ApplicationHealthLinux" # Windows系统请替换为ApplicationHealthWindows
    type_handler_version    = "1.0"
    protocol                = "tcp" # 可选值:tcp/http/https,根据你的业务服务类型调整
    port                    = 22 # 对应服务监听端口,示例用SSH端口,业务场景替换为实际服务端口
    interval_in_seconds     = 5 # 健康探测间隔时间,单位秒
    timeout_in_seconds      = 3 # 单次探测超时时间,单位秒
    unhealthy_threshold     = 3 # 连续多少次探测失败即判定实例不健康
    # 若使用HTTP/HTTPS协议需要额外指定探测路径,例如:request_path = "/api/health"
  }

  # 原有rolling_upgrade_policy、sku、存储配置、网络配置、标签等配置保持不变
}

步骤2:配置校验规则

  • 确保配置的端口/探测路径在VM实例内部可正常访问,若探测规则匹配不到正常运行的服务,实例会被判定为不健康,直接导致滚动升级中断
  • 建议将azurerm provider版本升级到3.0以上,避免低版本不支持health_extension内嵌块;如果使用低于3.0的版本,可单独创建azurerm_virtual_machine_scale_set_extension资源关联VMSS,配置逻辑和内嵌块完全一致
  • 健康扩展会自动安装到所有VMSS实例中,无需额外修改实例内部配置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 00:15:03