Azure负载均衡器中只有IP地址的backendAddressPool不会部署

uinbv5nw  于 2023-04-07  发布在  其他
关注(0)|答案(1)|浏览(101)

我想部署一个只有IP地址的Azure负载均衡器-这不是指Azure VM/VMSS NIC,而是指通用连接的本地服务器-使用Bicep,如:

resource ilb 'Microsoft.Network/loadBalancers@2022-05-01' = {
  name: ilbName
...
    backendAddressPools: [
      {
        name: 'direct'
        properties: {
          loadBalancerBackendAddresses: [
            {
              name: 'server65'
              properties: {
                ipAddress: '192.168.42.65'
                virtualNetwork: {
                  id: vnetHubId
                }
              }
            }
            {
              name: 'server66'
              properties: {
                ipAddress: '192.168.42.66'
                virtualNetwork: {
                  id: vnetHubId
                }
              }
            }
          ]
        }
      }
    ]
...

但是,在部署后(即使在调试模式下也未显示错误),Portal中不会显示IP地址,并且在使用CLI进行检查时:

> az network lb address-pool show --lb-name ilb-123456789012 -g portfwd-rg -n direct
{
  "etag": "W/\"037f2314-c311-4378-9486-a076cacc7491\"",
  "id": "/subscriptions/12345678-1234-1234-1234-123456789012/resourceGroups/portfwd-rg/providers/Microsoft.Network/loadBalancers/ilb-123456789012/backendAddressPools/direct",
  "loadBalancerBackendAddresses": [],
  "loadBalancingRules": [
    {
      "id": "/subscriptions/12345678-1234-1234-1234-123456789012/resourceGroups/portfwd-rg/providers/Microsoft.Network/loadBalancers/ilb-123456789012/loadBalancingRules/direct",
      "resourceGroup": "portfwd-rg"
    }
  ],
  "name": "direct",
  "provisioningState": "Succeeded",
  "resourceGroup": "portfwd-rg",
  "type": "Microsoft.Network/loadBalancers/backendAddressPools"

使用CLI创建后端地址池时,它的工作原理如下:

> az network lb address-pool create --lb-name ilb-123456789012 -g portfwd-rg -n direct2 \
--backend-address name=server65 ip-address=192.168.42.65 \
--backend-address name=server66 ip-address=192.168.42.66 \
--vnet /subscriptions/12345678-1234-1234-1234-123456789012/resourceGroups/portfwd-rg/providers/Microsoft.Network/virtualNetworks/vnet-hub-123456789012
> az network lb address-pool show --lb-name ilb-123456789012 -g portfwd-rg -n direct2
{
  "etag": "W/\"efeef00f-3dd4-4b7c-bfa3-f58030757dea\"",
  "id": "/subscriptions/12345678-1234-1234-1234-123456789012/resourceGroups/portfwd-rg/providers/Microsoft.Network/loadBalancers/ilb-123456789012/backendAddressPools/direct2",
  "loadBalancerBackendAddresses": [
    {
      "ipAddress": "192.168.42.65",
      "name": "server65",
      "virtualNetwork": {
        "id": "/subscriptions/12345678-1234-1234-1234-123456789012/resourceGroups/portfwd-rg/providers/Microsoft.Network/virtualNetworks/vnet-hub-123456789012",
        "resourceGroup": "portfwd-rg"
      }
    },
    {
      "ipAddress": "192.168.42.66",
      "name": "server66",
      "virtualNetwork": {
        "id": "/subscriptions/12345678-1234-1234-1234-123456789012/resourceGroups/portfwd-rg/providers/Microsoft.Network/virtualNetworks/vnet-hub-123456789012",
        "resourceGroup": "portfwd-rg"
      }
    }
  ],
  "name": "direct2",
  "provisioningState": "Succeeded",
  "resourceGroup": "portfwd-rg",
  "type": "Microsoft.Network/loadBalancers/backendAddressPools"
}

编辑:所以我基本上将az network lb address-pool create--debug/PUT请求体Map到Bicep。这是PUT请求体:

{"name": "direct", "properties": {"loadBalancerBackendAddresses": [{"name": "server65", "properties": {"ipAddress": "192.168.42.65", "virtualNetwork": {"id": "/subscriptions/12345678-1234-1234-1234-123456789012/resourceGroups/portfwd-rg/providers/Microsoft.Network/virtualNetworks/vnet-hub-123456789012"}}}, {"name": "server66", "properties": {"ipAddress": "192.168.42.66", "virtualNetwork": {"id": "/subscriptions/12345678-1234-1234-1234-123456789012/resourceGroups/portfwd-rg/providers/Microsoft.Network/virtualNetworks/vnet-hub-123456789012"}}}]}}

我错过了什么或做错了什么?

mbyulnm0

mbyulnm01#

我有一个类似的问题。没有看到你的所有代码,我会确定与你我做了什么,以解决我的问题。我希望它可以帮助你。
main.bicep

param location string = resourceGroup().location

var loadBalancerName = 'dev-web01-LB'
var virtualNetworkName = 'dev-dev-VNET'
var subnetName = 'dev-web-Net'
var subnetRef = resourceId('Microsoft.Network/virtualNetworks/subnets', virtualNetworkName, subnetName)

resource loadBalancers_name 'Microsoft.Network/loadBalancers@2022-07-01' = {
  name: loadBalancerName
  location: location
  sku: {
    name: 'Standard'
    tier: 'Regional'
  }
  properties: {
    frontendIPConfigurations: [
      {
        name: 'FrontendIP'
        id: resourceId('Microsoft.Network/loadBalancers/frontendIpConfigurations', loadBalancerName, 'FrontendIP')
        properties: {
          privateIPAddress: '192.168.42.196'
          privateIPAllocationMethod: 'Static'
          subnet: {
            id: subnetRef
          }
          privateIPAddressVersion: 'IPv4'
        }
      }
    ]
    backendAddressPools: [
      {
        name: 'BackendPool'
      }
    ]
    loadBalancingRules: [
      // Start of Rule
      {
        name: 'server65'
        id: resourceId('Microsoft.Network/loadBalancers/frontendIpConfigurations', loadBalancerName, 'server65')
        properties: {
          frontendIPConfiguration: {
            id: resourceId('Microsoft.Network/loadBalancers/frontendIpConfigurations', loadBalancerName, 'FrontendIP')
          }
          frontendPort: 605
          backendPort: 605
          enableFloatingIP: false
          idleTimeoutInMinutes: 4
          protocol: 'Tcp'
          enableTcpReset: false
          loadDistribution: 'Default'
          disableOutboundSnat: false
          backendAddressPool: {
            id: resourceId('Microsoft.Network/loadBalancers/backendAddressPools', loadBalancerName, 'BackendPool')
          }
          backendAddressPools: [
            {
              id: resourceId('Microsoft.Network/loadBalancers/backendAddressPools', loadBalancerName, 'BackendPool')
            }
          ]
          probe: {
            id: resourceId('Microsoft.Network/loadBalancers/probes', loadBalancerName, 'HealthProbe')
          }
        }
      }
      // End of Rule
      {
        name: 'server66'
        id: resourceId('Microsoft.Network/loadBalancers/frontendIpConfigurations', loadBalancerName, 'server66')
        properties: {
          frontendIPConfiguration: {
            id: resourceId('Microsoft.Network/loadBalancers/frontendIpConfigurations', loadBalancerName, 'FrontendIP')
          }
          frontendPort: 606
          backendPort: 606
          enableFloatingIP: false
          idleTimeoutInMinutes: 4
          protocol: 'Tcp'
          enableTcpReset: false
          loadDistribution: 'Default'
          disableOutboundSnat: false
          backendAddressPool: {
            id: resourceId('Microsoft.Network/loadBalancers/backendAddressPools', loadBalancerName, 'BackendPool')
          }
          backendAddressPools: [
            {
              id: resourceId('Microsoft.Network/loadBalancers/backendAddressPools', loadBalancerName, 'BackendPool')
            }
          ]
          probe: {
            id: resourceId('Microsoft.Network/loadBalancers/probes', loadBalancerName, 'HealthProbe')
          }
        }
      }
    ]
    probes: [
      {
        name: 'HealthProbe'
        id: resourceId('Microsoft.Network/loadBalancers/probes', loadBalancerName, 'HealthProbe')
        properties: {
          protocol: 'Tcp'
          port: 8483
          intervalInSeconds: 5
          numberOfProbes: 1
          probeThreshold: 1
        }
      }
    ]
  }
}

module devweb01vm './dev-web01-vm.bicep' = {
  name: 'dev-web01-VM'
  scope: resourceGroup('dev-dev-RG')
  params: {
    location: location
  }
  dependsOn: [
    loadBalancers_name
  ]
}

module devweb02vm './dev-web02-vm.bicep' = {
  name: 'dev-web02-VM'
  scope: resourceGroup('dev-dev-RG')
  params: {
    location: location
  }
  dependsOn: [
    loadBalancers_name
  ]
}

dev-web01-vm.bicep

param location string = resourceGroup().location

var virtualNetworkName = 'dev-dev-VNET'
var loadBalancerName = 'dev-web01-LB'
var subnetName = 'dev-web-Net'
var subnetRef = resourceId('Microsoft.Network/virtualNetworks/subnets', virtualNetworkName, subnetName)

resource dev_web01_VM_nic 'Microsoft.Network/networkInterfaces@2022-07-01' = {
  name: 'dev-web01-vm-Nic'
  location: location
  properties: {
    ipConfigurations: [
      {
        name: 'ipconfig1'
        type: 'Microsoft.Network/networkInterfaces/ipConfigurations'
        properties: {
          privateIPAddress: '192.168.42.250'
          privateIPAllocationMethod: 'Static'
          subnet: {
            id: subnetRef
          }
          primary: true 
          privateIPAddressVersion: 'IPv4'
          loadBalancerBackendAddressPools: [
            {
              id: resourceId('Microsoft.Network/loadBalancers/backendAddressPools', loadBalancerName, 'BackendPool')
            }
          ]
        }
      }
    ]
  }
}

dev-web02-vm.bicep

param location string = resourceGroup().location

var virtualNetworkName = 'dev-dev-VNET'
var loadBalancerName = 'dev-web01-LB'
var subnetName = 'dev-web-Net'
var subnetRef = resourceId('Microsoft.Network/virtualNetworks/subnets', virtualNetworkName, subnetName)

resource dev_web02_vm_nic 'Microsoft.Network/networkInterfaces@2022-07-01' = {
  name: 'dev-web02-vm-Nic'
  location: location
  properties: {
    ipConfigurations: [
      {
        name: 'ipconfig1'
        type: 'Microsoft.Network/networkInterfaces/ipConfigurations'
        properties: {
          privateIPAddress: '192.168.42.251'
          privateIPAllocationMethod: 'Static'
          subnet: {
            id: subnetRef
          }
          primary: true 
          privateIPAddressVersion: 'IPv4'
          loadBalancerBackendAddressPools: [
            {
              id: resourceId('Microsoft.Network/loadBalancers/backendAddressPools', loadBalancerName, 'BackendPool')
            }
          ]
        }
      }
    ]
  }
}

相关问题