如何通过Terraform将Azure负载均衡器从Basic SKU升级至Standard SKU?
将Azure Basic SKU负载均衡器升级为Standard SKU的Terraform代码修改方案
问题描述
Azure门户提示:负载均衡器使用的Basic SKU将于2025年9月30日停用,需升级至Standard SKU,以下是当前的Terraform代码:
resource "azurerm_lb" "foo" { name = "foo-${var.URL_NAME}" frontend_ip_configuration { name = "PublicIPAddress" public_ip_address_id = azurerm_public_ip.foo_lb_ip.id } location = var.AZURE_REGION resource_group_name = data.azurerm_resource_group.foo.name } resource "azurerm_lb_backend_address_pool" "foo" { name = "BackEndAddressPool" loadbalancer_id = azurerm_lb.foo.id } resource "azurerm_network_interface_backend_address_pool_association" "foo" { count = var.NUMBER_OF_VMS backend_address_pool_id = azurerm_lb_backend_address_pool.foo.id ip_configuration_name = "internal" network_interface_id = azurerm_network_interface.foo[count.index].id } resource "azurerm_lb_probe" "foo" { name = "foo-${var.URL_NAME}" protocol = "Tcp" port = 9999 loadbalancer_id = azurerm_lb.foo.id } resource "azurerm_lb_rule" "foo" { name = "foo-${var.URL_NAME}" protocol = "Tcp" frontend_port = 9999 backend_port = 9999 frontend_ip_configuration_name = azurerm_lb.foo.frontend_ip_configuration[0].name loadbalancer_id = azurerm_lb.foo.id backend_address_pool_ids = [azurerm_lb_backend_address_pool.foo.id] } resource "azurerm_public_ip" "foo_lb_ip" { name = "foo-lb-ip" allocation_method = "Dynamic" location = var.AZURE_REGION resource_group_name = data.azurerm_resource_group.foo.name }
修改步骤
要升级至Standard SKU,需要对代码做以下关键修改:
- 为负载均衡器指定Standard SKU
在azurerm_lb资源中添加sku = "Standard"配置项:
resource "azurerm_lb" "foo" { name = "foo-${var.URL_NAME}" sku = "Standard" # 指定Standard SKU frontend_ip_configuration { name = "PublicIPAddress" public_ip_address_id = azurerm_public_ip.foo_lb_ip.id } location = var.AZURE_REGION resource_group_name = data.azurerm_resource_group.foo.name }
- 将公共IP升级为Standard SKU
Standard负载均衡器要求配套的公共IP也必须是Standard SKU,因此修改azurerm_public_ip资源:
resource "azurerm_public_ip" "foo_lb_ip" { name = "foo-lb-ip" allocation_method = "Dynamic" sku = "Standard" # 指定Standard SKU location = var.AZURE_REGION resource_group_name = data.azurerm_resource_group.foo.name }
- 验证其他资源兼容性
现有后端地址池、网卡关联、探针和规则配置均兼容Standard SKU,无需额外修改,但需注意:
- Standard LB支持HA端口、出站规则等高级特性,可根据业务需求扩展配置
- 执行
terraform plan预览变更,确认资源替换逻辑无误后,再执行terraform apply完成升级
注意事项
- 升级前确认所有关联资源(VM、网卡等)状态正常
- 建议备份当前Terraform状态文件,避免变更风险
- Standard SKU负载均衡器计费模式与Basic不同,需提前确认成本影响
内容的提问来源于stack exchange,提问作者Marcin Kulik
相关产品推荐
相关产品推荐

