【问题标题】:Creating a internal standard load balancer with HA ports in Azure在 Azure 中使用 HA 端口创建内部标准负载均衡器
【发布时间】:2021-05-24 08:41:39
【问题描述】:

我正在尝试使用 ARM 模板在 Azure 中创建具有 HA 端口的内部标准负载均衡器。我遇到了验证错误。

{ "code": "InvalidTemplateDeployment", “细节”: [ { "code": "PortValueIsOutOfRange", "message": "资源 DC10TESTTCPW01 的端口 (0) 值无效。该值必须介于 1 和 65535 之间。", “细节”: [] } ], "message": "根据验证程序,模板部署 'Microsoft.Template-20210524012843' 无效。跟踪 ID 为 '585f5d57-4423-47a8-a45d-4a0e371b47c2'。有关详细信息,请参阅内部错误。" }

【问题讨论】:

    标签: azure internal-load-balancer


    【解决方案1】:

    示例:

    {
      "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
      "contentVersion": "1.0.0.0",
      "parameters": {
        "adminUsername": {
          "type": "string",
          "metadata": {
            "description": "Admin username"
          }
        },
        "adminPassword": {
          "type": "securestring",
          "metadata": {
            "description": "Admin password"
          }
        },
        "vmNamePrefix": {
          "type": "string",
          "defaultValue": "BackendVM",
          "metadata": {
            "description": "Prefix to use for VM names"
          }
        },
        "location": {
          "type": "string",
          "defaultValue": "[resourceGroup().location]",
          "metadata": {
            "description": "Location for all resources."
          }
        },
        "vmSize": {
          "type": "string",
          "defaultValue": "Standard_DS1_V2",
          "metadata": {
            "description": "Size of the virtual machines"
          }
        }
      },
      "variables": {
        "availabilitySetName": "AvSet",
        "storageAccountType": "Standard_LRS",
        "storageAccountName": "[uniqueString(resourceGroup().id)]",
        "virtualNetworkName": "vNet",
        "subnetName": "backendSubnet",
        "loadBalancerName": "ilb",
        "networkInterfaceName": "nic",
        "subnetRef": "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkName'), variables('subnetName'))]",
        "numberOfInstances": 2
      },
      "resources": [
        {
          "type": "Microsoft.Storage/storageAccounts",
          "apiVersion": "2019-06-01",
          "name": "[variables('storageAccountName')]",
          "location": "[parameters('location')]",
          "sku": {
            "name": "[variables('storageAccountType')]"
          },
          "kind": "StorageV2"
        },
        {
          "type": "Microsoft.Compute/availabilitySets",
          "apiVersion": "2020-06-01",
          "name": "[variables('availabilitySetName')]",
          "location": "[parameters('location')]",
          "sku": {
            "name": "Aligned"
          },
          "properties": {
            "PlatformUpdateDomainCount": 2,
            "PlatformFaultDomainCount": 2
          }
        },
        {
          "type": "Microsoft.Network/virtualNetworks",
          "apiVersion": "2020-06-01",
          "name": "[variables('virtualNetworkName')]",
          "location": "[parameters('location')]",
          "properties": {
            "addressSpace": {
              "addressPrefixes": [
                "10.0.0.0/16"
              ]
            },
            "subnets": [
              {
                "name": "[variables('subnetName')]",
                "properties": {
                  "addressPrefix": "10.0.2.0/24"
                }
              }
            ]
          }
        },
        {
          "type": "Microsoft.Network/networkInterfaces",
          "apiVersion": "2020-06-01",
          "name": "[concat(variables('networkInterfaceName'), copyindex())]",
          "location": "[parameters('location')]",
          "copy": {
            "name": "nicLoop",
            "count": "[variables('numberOfInstances')]"
          },
          "dependsOn": [
            "[variables('virtualNetworkName')]",
            "[variables('loadBalancerName')]"
          ],
          "properties": {
            "ipConfigurations": [
              {
                "name": "ipconfig1",
                "properties": {
                  "privateIPAllocationMethod": "Dynamic",
                  "subnet": {
                    "id": "[variables('subnetRef')]"
                  },
                  "loadBalancerBackendAddressPools": [
                    {
                      "id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', variables('loadBalancerName'), 'BackendPool1')]"
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "type": "Microsoft.Network/loadBalancers",
          "apiVersion": "2020-06-01",
          "name": "[variables('loadBalancerName')]",
          "location": "[parameters('location')]",
          "sku": {
            "name": "Standard"
          },
          "dependsOn": [
            "[variables('virtualNetworkName')]"
          ],
          "properties": {
            "frontendIPConfigurations": [
              {
                "properties": {
                  "subnet": {
                    "id": "[variables('subnetRef')]"
                  },
                  "privateIPAddress": "10.0.2.6",
                  "privateIPAllocationMethod": "Static"
                },
                "name": "LoadBalancerFrontend"
              }
            ],
            "backendAddressPools": [
              {
                "name": "BackendPool1"
              }
            ],
            "loadBalancingRules": [
              {
                "properties": {
                  "frontendIPConfiguration": {
                    "id": "[resourceId('Microsoft.Network/loadBalancers/frontendIpConfigurations', variables('loadBalancerName'), 'LoadBalancerFrontend')]"
                  },
                  "backendAddressPool": {
                    "id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', variables('loadBalancerName'), 'BackendPool1')]"
                  },
                  "probe": {
                    "id": "[resourceId('Microsoft.Network/loadBalancers/probes', variables('loadBalancerName'), 'lbprobe')]"
                  },
                  "protocol": "Tcp",
                  "frontendPort": 80,
                  "backendPort": 80,
                  "idleTimeoutInMinutes": 15
                },
                "Name": "lbrule"
              }
            ],
            "probes": [
              {
                "properties": {
                  "protocol": "Tcp",
                  "port": 80,
                  "intervalInSeconds": 15,
                  "numberOfProbes": 2
                },
                "name": "lbprobe"
              }
            ]
          }
        },
        {
          "type": "Microsoft.Compute/virtualMachines",
          "apiVersion": "2020-06-01",
          "name": "[concat(parameters('vmNamePrefix'), copyindex())]",
          "location": "[parameters('location')]",
          "copy": {
            "name": "virtualMachineLoop",
            "count": "[variables('numberOfInstances')]"
          },
          "dependsOn": [
            "[variables('storageAccountName')]",
            "nicLoop",
            "[variables('availabilitySetName')]"
          ],
          "properties": {
            "availabilitySet": {
              "id": "[resourceId('Microsoft.Compute/availabilitySets',variables('availabilitySetName'))]"
            },
            "hardwareProfile": {
              "vmSize": "[parameters('vmSize')]"
            },
            "osProfile": {
              "computerName": "[concat(parameters('vmNamePrefix'), copyIndex())]",
              "adminUsername": "[parameters('adminUsername')]",
              "adminPassword": "[parameters('adminPassword')]"
            },
            "storageProfile": {
              "imageReference": {
                "publisher": "MicrosoftWindowsServer",
                "offer": "WindowsServer",
                "sku": "2019-Datacenter",
                "version": "latest"
              },
              "osDisk": {
                "createOption": "FromImage"
              }
            },
            "networkProfile": {
              "networkInterfaces": [
                {
                  "id": "[resourceId('Microsoft.Network/networkInterfaces', concat(variables('networkInterfaceName'), copyindex()))]"
                }
              ]
            },
            "diagnosticsProfile": {
              "bootDiagnostics": {
                "enabled": true,
                "storageUri": "[reference(variables('storageAccountName')).primaryEndpoints.blob]"
              }
            }
          }
        }
      ]
    }
    

    使用 HA 更新:

    1. 为单个配置多个前端私有 IP 地址
      内部标准负载均衡器资源。
    2. 配置多个负载平衡规则,其中每个规则都选择了一个唯一的前端 IP 地址。
    3. 选择 HA 端口选项,然后将所有负载平衡规则的浮动 IP 设置为启用。

    JSON 视图

    {
        "name": "ilb1",
        "id": "/subscriptions/<SubscriptionId>/resourceGroups/<RG>/providers/Microsoft.Network/loadBalancers/ilb1",
        "etag": "W/\"<ETAG>\"",
        "type": "Microsoft.Network/loadBalancers",
        "location": "westeurope",
        "tags": {},
        "properties": {
            "provisioningState": "Succeeded",
            "resourceGuid": "<ResourceGuid>",
            "frontendIPConfigurations": [
                {
                    "name": "LoadBalancerFrontEnd",
                    "id": "/subscriptions/<SubscriptionId>/resourceGroups/<RG>/providers/Microsoft.Network/loadBalancers/ilb1/frontendIPConfigurations/LoadBalancerFrontEnd",
                    "etag": "W/\"<ETAG>\"",
                    "type": "Microsoft.Network/loadBalancers/frontendIPConfigurations",
                    "properties": {
                        "provisioningState": "Succeeded",
                        "privateIPAddress": "10.0.0.6",
                        "privateIPAllocationMethod": "Static",
                        "subnet": {
                            "id": "/subscriptions/<SubscriptionId>/resourceGroups/<RG>/providers/Microsoft.Network/virtualNetworks/<RG>-vnet/subnets/default"
                        },
                        "loadBalancingRules": [
                            {
                                "id": "/subscriptions/<SubscriptionId>/resourceGroups/<RG>/providers/Microsoft.Network/loadBalancers/ilb1/loadBalancingRules/rule1"
                            }
                        ]
                    }
                },
                {
                    "name": "ilbIP2",
                    "id": "/subscriptions/<SubscriptionId>/resourceGroups/<RG>/providers/Microsoft.Network/loadBalancers/ilb1/frontendIPConfigurations/ilbIP2",
                    "etag": "W/\"<ETAG>\"",
                    "type": "Microsoft.Network/loadBalancers/frontendIPConfigurations",
                    "properties": {
                        "provisioningState": "Succeeded",
                        "privateIPAddress": "10.0.0.7",
                        "privateIPAllocationMethod": "Static",
                        "subnet": {
                            "id": "/subscriptions/<SubscriptionId>/resourceGroups/<RG>/providers/Microsoft.Network/virtualNetworks/<RG>-vnet/subnets/default"
                        },
                        "loadBalancingRules": [
                            {
                                "id": "/subscriptions/<SubscriptionId>/resourceGroups/<RG>/providers/Microsoft.Network/loadBalancers/ilb1/loadBalancingRules/rule2"
                            }
                        ]
                    }
                }
            ],
            "backendAddressPools": [
                {
                    "name": "poolbackend1",
                    "id": "/subscriptions/<SubscriptionId>/resourceGroups/<RG>/providers/Microsoft.Network/loadBalancers/ilb1/backendAddressPools/poolbackend1",
                    "etag": "W/\"<ETAG>\"",
                    "properties": {
                        "provisioningState": "Succeeded",
                        "loadBalancingRules": [
                            {
                                "id": "/subscriptions/<SubscriptionId>/resourceGroups/<RG>/providers/Microsoft.Network/loadBalancers/ilb1/loadBalancingRules/rule1"
                            },
                            {
                                "id": "/subscriptions/<SubscriptionId>/resourceGroups/<RG>/providers/Microsoft.Network/loadBalancers/ilb1/loadBalancingRules/rule2"
                            }
                        ]
                    },
                    "type": "Microsoft.Network/loadBalancers/backendAddressPools"
                }
            ],
            "loadBalancingRules": [
                {
                    "name": "rule1",
                    "id": "/subscriptions/<SubscriptionId>/resourceGroups/<RG>/providers/Microsoft.Network/loadBalancers/ilb1/loadBalancingRules/rule1",
                    "etag": "W/\"<ETAG>\"",
                    "type": "Microsoft.Network/loadBalancers/loadBalancingRules",
                    "properties": {
                        "provisioningState": "Succeeded",
                        "frontendIPConfiguration": {
                            "id": "/subscriptions/<SubscriptionId>/resourceGroups/<RG>/providers/Microsoft.Network/loadBalancers/ilb1/frontendIPConfigurations/LoadBalancerFrontEnd"
                        },
                        "frontendPort": 0,
                        "backendPort": 0,
                        "enableFloatingIP": true,
                        "idleTimeoutInMinutes": 4,
                        "protocol": "All",
                        "loadDistribution": "SourceIP",
                        "disableOutboundSnat": true,
                        "backendAddressPool": {
                            "id": "/subscriptions/<SubscriptionId>/resourceGroups/<RG>/providers/Microsoft.Network/loadBalancers/ilb1/backendAddressPools/poolbackend1"
                        },
                        "probe": {
                            "id": "/subscriptions/<SubscriptionId>/resourceGroups/<RG>/providers/Microsoft.Network/loadBalancers/ilb1/probes/Hprobe1"
                        }
                    }
                },
                {
                    "name": "rule2",
                    "id": "/subscriptions/<SubscriptionId>/resourceGroups/<RG>/providers/Microsoft.Network/loadBalancers/ilb1/loadBalancingRules/rule2",
                    "etag": "W/\"<ETAG>\"",
                    "type": "Microsoft.Network/loadBalancers/loadBalancingRules",
                    "properties": {
                        "provisioningState": "Succeeded",
                        "frontendIPConfiguration": {
                            "id": "/subscriptions/<SubscriptionId>/resourceGroups/<RG>/providers/Microsoft.Network/loadBalancers/ilb1/frontendIPConfigurations/ilbIP2"
                        },
                        "frontendPort": 0,
                        "backendPort": 0,
                        "enableFloatingIP": true,
                        "idleTimeoutInMinutes": 4,
                        "protocol": "All",
                        "loadDistribution": "SourceIP",
                        "disableOutboundSnat": true,
                        "backendAddressPool": {
                            "id": "/subscriptions/<SubscriptionId>/resourceGroups/<RG>/providers/Microsoft.Network/loadBalancers/ilb1/backendAddressPools/poolbackend1"
                        },
                        "probe": {
                            "id": "/subscriptions/<SubscriptionId>/resourceGroups/<RG>/providers/Microsoft.Network/loadBalancers/ilb1/probes/Hprobe1"
                        }
                    }
                }
            ],
            "probes": [
                {
                    "name": "Hprobe1",
                    "id": "/subscriptions/<SubscriptionId>/resourceGroups/<RG>/providers/Microsoft.Network/loadBalancers/ilb1/probes/Hprobe1",
                    "etag": "W/\"<ETAG>\"",
                    "properties": {
                        "provisioningState": "Succeeded",
                        "protocol": "Tcp",
                        "port": 80,
                        "intervalInSeconds": 5,
                        "numberOfProbes": 2,
                        "loadBalancingRules": [
                            {
                                "id": "/subscriptions/<SubscriptionId>/resourceGroups/<RG>/providers/Microsoft.Network/loadBalancers/ilb1/loadBalancingRules/rule1"
                            },
                            {
                                "id": "/subscriptions/<SubscriptionId>/resourceGroups/<RG>/providers/Microsoft.Network/loadBalancers/ilb1/loadBalancingRules/rule2"
                            }
                        ]
                    },
                    "type": "Microsoft.Network/loadBalancers/probes"
                }
            ],
            "inboundNatRules": [],
            "inboundNatPools": []
        },
        "sku": {
            "name": "Standard"
        }
    }
    

    ILB HA 模板

    {
        "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
        "contentVersion": "1.0.0.0",
        "parameters": {
            "loadBalancers_ilb1_name": {
                "defaultValue": "ilb1",
                "type": "String"
            },
            "virtualNetworks_<RG>_vnet_externalid": {
                "defaultValue": "/subscriptions/<subscriptionId>/resourceGroups/<RG>/providers/Microsoft.Network/virtualNetworks/<RG>-vnet",
                "type": "String"
            }
        },
        "variables": {},
        "resources": [
            {
                "type": "Microsoft.Network/loadBalancers",
                "apiVersion": "2020-11-01",
                "name": "[parameters('loadBalancers_ilb1_name')]",
                "location": "westeurope",
                "dependsOn": [
                    "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', parameters('loadBalancers_ilb1_name'), 'poolbackend1')]"
                ],
                "sku": {
                    "name": "Standard",
                    "tier": "Regional"
                },
                "properties": {
                    "frontendIPConfigurations": [
                        {
                            "name": "LoadBalancerFrontEnd",
                            "properties": {
                                "privateIPAddress": "10.0.0.6",
                                "privateIPAllocationMethod": "Static",
                                "subnet": {
                                    "id": "[concat(parameters('virtualNetworks_<RG>_vnet_externalid'), '/subnets/default')]"
                                },
                                "privateIPAddressVersion": "IPv4"
                            },
                            "zones": [
                                "1",
                                "2",
                                "3"
                            ]
                        },
                        {
                            "name": "ilbIP2",
                            "properties": {
                                "privateIPAddress": "10.0.0.7",
                                "privateIPAllocationMethod": "Static",
                                "subnet": {
                                    "id": "[concat(parameters('virtualNetworks_<RG>_vnet_externalid'), '/subnets/default')]"
                                },
                                "privateIPAddressVersion": "IPv4"
                            },
                            "zones": [
                                "1",
                                "2",
                                "3"
                            ]
                        }
                    ],
                    "backendAddressPools": [
                        {
                            "name": "poolbackend1",
                            "properties": {
                                "loadBalancerBackendAddresses": [
                                    {
                                        "name": "1a959793-169e-4e7f-8711-128f237dbf67",
                                        "properties": {
                                            "ipAddress": "10.0.0.9",
                                            "virtualNetwork": {
                                                "id": "[parameters('virtualNetworks_<RG>_vnet_externalid')]"
                                            }
                                        }
                                    }
                                ]
                            }
                        }
                    ],
                    "loadBalancingRules": [
                        {
                            "name": "rule1",
                            "properties": {
                                "frontendIPConfiguration": {
                                    "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancers_ilb1_name')), '/frontendIPConfigurations/LoadBalancerFrontEnd')]"
                                },
                                "frontendPort": 0,
                                "backendPort": 0,
                                "enableFloatingIP": true,
                                "idleTimeoutInMinutes": 4,
                                "protocol": "All",
                                "enableTcpReset": false,
                                "loadDistribution": "SourceIP",
                                "disableOutboundSnat": true,
                                "backendAddressPool": {
                                    "id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', parameters('loadBalancers_ilb1_name'), 'poolbackend1')]"
                                },
                                "probe": {
                                    "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancers_ilb1_name')), '/probes/Hprobe1')]"
                                }
                            }
                        },
                        {
                            "name": "rule2",
                            "properties": {
                                "frontendIPConfiguration": {
                                    "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancers_ilb1_name')), '/frontendIPConfigurations/ilbIP2')]"
                                },
                                "frontendPort": 0,
                                "backendPort": 0,
                                "enableFloatingIP": true,
                                "idleTimeoutInMinutes": 4,
                                "protocol": "All",
                                "enableTcpReset": false,
                                "loadDistribution": "SourceIP",
                                "disableOutboundSnat": true,
                                "backendAddressPool": {
                                    "id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', parameters('loadBalancers_ilb1_name'), 'poolbackend1')]"
                                },
                                "probe": {
                                    "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancers_ilb1_name')), '/probes/Hprobe1')]"
                                }
                            }
                        }
                    ],
                    "probes": [
                        {
                            "name": "Hprobe1",
                            "properties": {
                                "protocol": "Tcp",
                                "port": 80,
                                "intervalInSeconds": 5,
                                "numberOfProbes": 2
                            }
                        }
                    ],
                    "inboundNatRules": [],
                    "outboundRules": [],
                    "inboundNatPools": []
                }
            },
            {
                "type": "Microsoft.Network/loadBalancers/backendAddressPools",
                "apiVersion": "2020-11-01",
                "name": "[concat(parameters('loadBalancers_ilb1_name'), '/poolbackend1')]",
                "dependsOn": [
                    "[resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancers_ilb1_name'))]"
                ],
                "properties": {
                    "loadBalancerBackendAddresses": [
                        {
                            "name": "1a959793-169e-4e7f-8711-128f237dbf67",
                            "properties": {
                                "ipAddress": "10.0.0.9",
                                "virtualNetwork": {
                                    "id": "[parameters('virtualNetworks_<RG>_vnet_externalid')]"
                                }
                            }
                        }
                    ]
                }
            }
        ]
    }
    

    【讨论】:

    • 感谢您的回复,但我想使用 HA 端口创建负载均衡器
    • 更新答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-08
    • 1970-01-01
    相关资源
    最近更新 更多