Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Een globale load balancer zorgt ervoor dat een service wereldwijd beschikbaar is in meerdere Azure-regio's. Als de ene regio uitvalt, wordt het verkeer doorgestuurd naar de dichtstbijzijnde regionale load balancer.
Als u een ARM-sjabloon gebruikt, hoeft u minder stappen te voltooien in vergelijking met andere implementatiemethoden.
Een Azure Resource Manager-sjabloon is een JSON-bestand (JavaScript Object Notation) dat de infrastructuur en configuratie voor uw project definieert. Voor de sjabloon is declaratieve syntaxis vereist. U beschrijft de beoogde implementatie zonder de reeks programmeeropdrachten te schrijven om de implementatie te maken.
Als uw omgeving voldoet aan de vereisten en u benkend bent met het gebruik van ARM-sjablonen, selecteert u de knop Implementeren naar Azure. De sjabloon wordt in Azure Portal geopend.
In deze zelfstudie leert u het volgende:
- Alle zelfstudies bevatten een lijst waarin de stappen voor voltooiing worden samengevat
- Elk van deze opsommingstekens wordt uitgelijnd op een sleutel H2
- Gebruik deze groene selectievakjes in een zelfstudie
Vereisten
- Een Azure-account met een actief abonnement. Maak gratis een account en toegang tot Azure Portal.
De sjabloon controleren
In deze sectie bekijkt u de sjabloon en de parameters die worden gebruikt voor het implementeren van de globale load balancer. De sjabloon die in deze quickstart wordt gebruikt, is afkomstig uit de Azure-quickstartsjablonen.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"metadata": {
"_generator": {
"name": "bicep",
"version": "0.26.54.24096",
"templateHash": "15686909125702100557"
}
},
"parameters": {
"projectName": {
"type": "string",
"metadata": {
"description": "Specifies a project name that is used for generating resource names."
}
},
"locationCr": {
"type": "string",
"defaultValue": "eastus2",
"allowedValues": [
"eastus2",
"westus",
"centralus",
"westeurope",
"southeastasia",
"centralus",
"northeurope",
"eastasia",
"UKsouth",
"USgovvirginia"
],
"metadata": {
"description": "Specifies the location for the cross-region load balancer. Available in limited regions."
}
},
"locationR1": {
"type": "string",
"defaultValue": "eastus",
"allowedValues": [
"eastus",
"eastus2",
"southcentralus",
"westus2",
"westus3",
"australiaeast",
"southeastasia",
"northeurope",
"swedencentral",
"uksouth",
"westeurope",
"centralus",
"southafricanorth",
"centralindia",
"eastasia",
"japaneast",
"koreacentral",
"canadacentral",
"francecentral",
"germanywestcentral",
"norwayeast",
"switzerlandnorth",
"uaenorth",
"brazilsouth",
"eastus2euap",
"qatarcentral",
"centralusstage",
"eastus2stage",
"northcentralusstage",
"southcentralusstage",
"westusstage",
"westus2stage",
"asia",
"asiapacific",
"australia",
"brazil",
"canada",
"europe",
"france",
"germany",
"global",
"india",
"japan",
"korea",
"norway",
"singapore",
"southafrica",
"switzerland",
"unitedstates",
"eastasiastage",
"eastusstg",
"northcentralus",
"westus",
"jioindiawest",
"centraluseuap",
"westcentralus",
"southafricawest",
"australiacentral",
"australiacentral2",
"australiasoutheast",
"japanwest",
"jioindiacentral",
"koreasouth",
"southindia",
"westindia",
"francesouth",
"germanynorth",
"norwaywest",
"switzerlandwest",
"ukwest",
"uaecentral",
"brazilsoutheast"
],
"metadata": {
"description": "Specifies the location for the regional load balancer."
}
},
"locationR2": {
"type": "string",
"defaultValue": "westus2",
"allowedValues": [
"eastus",
"eastus2",
"southcentralus",
"westus2",
"westus3",
"australiaeast",
"southeastasia",
"northeurope",
"swedencentral",
"uksouth",
"westeurope",
"centralus",
"southafricanorth",
"centralindia",
"eastasia",
"japaneast",
"koreacentral",
"canadacentral",
"francecentral",
"germanywestcentral",
"norwayeast",
"switzerlandnorth",
"uaenorth",
"brazilsouth",
"eastus2euap",
"qatarcentral",
"centralusstage",
"eastus2stage",
"northcentralusstage",
"southcentralusstage",
"westusstage",
"westus2stage",
"asia",
"asiapacific",
"australia",
"brazil",
"canada",
"europe",
"france",
"germany",
"global",
"india",
"japan",
"korea",
"norway",
"singapore",
"southafrica",
"switzerland",
"unitedstates",
"eastasiastage",
"eastusstg",
"northcentralus",
"westus",
"jioindiawest",
"centraluseuap",
"westcentralus",
"southafricawest",
"australiacentral",
"australiacentral2",
"australiasoutheast",
"japanwest",
"jioindiacentral",
"koreasouth",
"southindia",
"westindia",
"francesouth",
"germanynorth",
"norwaywest",
"switzerlandwest",
"ukwest",
"uaecentral",
"brazilsoutheast"
],
"metadata": {
"description": "Specifies the location for the regional load balancer."
}
},
"adminUsername": {
"type": "string",
"metadata": {
"description": "Specifies the virtual machine administrator username."
}
},
"adminPassword": {
"type": "securestring",
"metadata": {
"description": "Specifies the virtual machine administrator password."
}
},
"vmSize": {
"type": "string",
"defaultValue": "Standard_DS1_v2",
"metadata": {
"description": "Size of the virtual machine"
}
}
},
"variables": {
"publicIPAddressType": "Static",
"lbSkuName": "Standard",
"vmStorageAccountType": "Premium_LRS",
"lbR1Name": "[format('{0}-lb-r1', parameters('projectName'))]",
"lbPIPR1Name": "[format('{0}-lbPublicIP-r1', parameters('projectName'))]",
"lbFrontEndR1Name": "LoadBalancerFrontEnd-r1",
"lbBackendPoolR1Name": "LoadBalancerBackEndPool-r1",
"lbProbeR1Name": "loadBalancerHealthProbe-r1",
"nsgR1Name": "[format('{0}-nsg-r1', parameters('projectName'))]",
"vnetR1Name": "[format('{0}-vnet-r1', parameters('projectName'))]",
"vnetAddressPrefixR1": "10.0.0.0/16",
"vnetSubnetR1Name": "BackendSubnet-r1",
"vnetSubnetAddressPrefixR1": "10.0.0.0/24",
"bastionHostR1Name": "[format('{0}-bastion-r1', parameters('projectName'))]",
"bastionSubnetR1Name": "AzureBastionSubnet",
"vnetBastionSubnetAddressPrefixR1": "10.0.1.0/26",
"bastionPIPR1Name": "[format('{0}-bastionPublicIP-r1', parameters('projectName'))]",
"natGatewayR1Name": "[format('{0}-natgateway-r1', parameters('projectName'))]",
"natGatewayPIR1Name": "[format('{0}-natPublicIP-r1', parameters('projectName'))]",
"lbR2Name": "[format('{0}-lb-r2', parameters('projectName'))]",
"lbPIPR2Name": "[format('{0}-lbPublicIP-r2', parameters('projectName'))]",
"lbFrontEndR2Name": "LoadBalancerFrontEnd-r2",
"lbBackendPoolR2Name": "LoadBalancerBackEndPool-r2",
"lbProbeR2Name": "loadBalancerHealthProbe-r2",
"nsgR2Name": "[format('{0}-nsg-r2', parameters('projectName'))]",
"vnetR2Name": "[format('{0}-vnet-r2', parameters('projectName'))]",
"vnetAddressPrefixR2": "10.1.0.0/16",
"vnetSubnetR2Name": "BackendSubnet-r2",
"vnetSubnetAddressPrefixR2": "10.1.0.0/24",
"bastionHostR2Name": "[format('{0}-bastion-r2', parameters('projectName'))]",
"bastionSubnetR2Name": "AzureBastionSubnet",
"vnetBastionSubnetAddressPrefixR2": "10.1.1.0/26",
"bastionPIPR2Name": "[format('{0}-bastionPublicIP-r2', parameters('projectName'))]",
"natGatewayR2Name": "[format('{0}-natgateway-r2', parameters('projectName'))]",
"natGatewayPIR2Name": "[format('{0}-natPublicIP-r2', parameters('projectName'))]",
"lbCrName": "[format('{0}-lb-cr', parameters('projectName'))]",
"lbBackendPoolCrName": "LoadBalancerBackEndPool-cr",
"lbPIPCrName": "[format('{0}-lbPublicIP-cr', parameters('projectName'))]",
"lbFrontEndCrName": "LoadBalancerFrontEnd-cr"
},
"resources": [
{
"copy": {
"name": "nicVmR1",
"count": "[length(range(0, 3))]"
},
"type": "Microsoft.Network/networkInterfaces",
"apiVersion": "2023-02-01",
"name": "[format('vm-r1-{0}-networkInterface', add(range(0, 3)[copyIndex()], 1))]",
"location": "[parameters('locationR1')]",
"properties": {
"ipConfigurations": [
{
"name": "ipconfig1",
"properties": {
"privateIPAllocationMethod": "Dynamic",
"subnet": {
"id": "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('vnetR1Name'), variables('vnetSubnetR1Name'))]"
},
"loadBalancerBackendAddressPools": [
{
"id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', variables('lbR1Name'), variables('lbBackendPoolR1Name'))]"
}
]
}
}
],
"networkSecurityGroup": {
"id": "[resourceId('Microsoft.Network/networkSecurityGroups', variables('nsgR1Name'))]"
}
},
"dependsOn": [
"[resourceId('Microsoft.Network/loadBalancers', variables('lbR1Name'))]",
"[resourceId('Microsoft.Network/networkSecurityGroups', variables('nsgR1Name'))]",
"[resourceId('Microsoft.Network/virtualNetworks', variables('vnetR1Name'))]",
"[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('vnetR1Name'), variables('vnetSubnetR1Name'))]"
]
},
{
"copy": {
"name": "installWebServerVmR1",
"count": "[length(range(0, 3))]"
},
"type": "Microsoft.Compute/virtualMachines/extensions",
"apiVersion": "2023-03-01",
"name": "[format('vm-r1-{0}/InstallWebServer', add(range(0, 3)[copyIndex()], 1))]",
"location": "[parameters('locationR1')]",
"properties": {
"publisher": "Microsoft.Compute",
"type": "CustomScriptExtension",
"typeHandlerVersion": "1.7",
"autoUpgradeMinorVersion": true,
"settings": {
"commandToExecute": "powershell.exe Install-WindowsFeature -name Web-Server -IncludeManagementTools && powershell.exe remove-item 'C:\\inetpub\\wwwroot\\iisstart.htm' && powershell.exe Add-Content -Path 'C:\\inetpub\\wwwroot\\iisstart.htm' -Value $('Hello World from ' + $env:computername)"
}
},
"dependsOn": [
"vmR2"
]
},
{
"copy": {
"name": "vmR1",
"count": "[length(range(0, 3))]"
},
"type": "Microsoft.Compute/virtualMachines",
"apiVersion": "2023-03-01",
"name": "[format('vm-r1-{0}', add(range(0, 3)[copyIndex()], 1))]",
"location": "[parameters('locationR1')]",
"properties": {
"hardwareProfile": {
"vmSize": "[parameters('vmSize')]"
},
"storageProfile": {
"imageReference": {
"publisher": "MicrosoftWindowsServer",
"offer": "WindowsServer",
"sku": "2019-Datacenter",
"version": "latest"
},
"osDisk": {
"createOption": "fromImage",
"managedDisk": {
"storageAccountType": "[variables('vmStorageAccountType')]"
}
}
},
"networkProfile": {
"networkInterfaces": [
{
"id": "[resourceId('Microsoft.Network/networkInterfaces', format('vm-r1-{0}-networkInterface', add(range(0, 3)[copyIndex()], 1)))]"
}
]
},
"osProfile": {
"computerName": "[format('vm-r1-{0}', add(range(0, 3)[copyIndex()], 1))]",
"adminUsername": "[parameters('adminUsername')]",
"adminPassword": "[parameters('adminPassword')]",
"windowsConfiguration": {
"enableAutomaticUpdates": true,
"provisionVMAgent": true
}
}
},
"dependsOn": [
"nicVmR2"
]
},
{
"type": "Microsoft.Network/virtualNetworks/subnets",
"apiVersion": "2023-02-01",
"name": "[format('{0}/{1}', variables('vnetR1Name'), variables('bastionSubnetR1Name'))]",
"properties": {
"addressPrefix": "[variables('vnetBastionSubnetAddressPrefixR1')]"
},
"dependsOn": [
"[resourceId('Microsoft.Network/virtualNetworks', variables('vnetR1Name'))]"
]
},
{
"type": "Microsoft.Network/virtualNetworks/subnets",
"apiVersion": "2023-02-01",
"name": "[format('{0}/{1}', variables('vnetR1Name'), variables('vnetSubnetR1Name'))]",
"properties": {
"addressPrefix": "[variables('vnetSubnetAddressPrefixR1')]",
"natGateway": {
"id": "[resourceId('Microsoft.Network/natGateways', variables('natGatewayR1Name'))]"
}
},
"dependsOn": [
"[resourceId('Microsoft.Network/natGateways', variables('natGatewayR1Name'))]",
"[resourceId('Microsoft.Network/virtualNetworks', variables('vnetR1Name'))]",
"[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('vnetR1Name'), variables('bastionSubnetR1Name'))]"
]
},
{
"type": "Microsoft.Network/bastionHosts",
"apiVersion": "2023-02-01",
"name": "[variables('bastionHostR1Name')]",
"location": "[parameters('locationR1')]",
"properties": {
"ipConfigurations": [
{
"name": "IpConf",
"properties": {
"privateIPAllocationMethod": "Dynamic",
"publicIPAddress": {
"id": "[resourceId('Microsoft.Network/publicIPAddresses', variables('bastionPIPR1Name'))]"
},
"subnet": {
"id": "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('vnetR1Name'), variables('bastionSubnetR1Name'))]"
}
}
}
]
},
"dependsOn": [
"[resourceId('Microsoft.Network/publicIPAddresses', variables('bastionPIPR1Name'))]",
"[resourceId('Microsoft.Network/virtualNetworks', variables('vnetR1Name'))]",
"[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('vnetR1Name'), variables('bastionSubnetR1Name'))]"
]
},
{
"type": "Microsoft.Network/publicIPAddresses",
"apiVersion": "2023-02-01",
"name": "[variables('bastionPIPR1Name')]",
"location": "[parameters('locationR1')]",
"sku": {
"name": "[variables('lbSkuName')]"
},
"properties": {
"publicIPAddressVersion": "IPv4",
"publicIPAllocationMethod": "Static"
}
},
{
"type": "Microsoft.Network/natGateways",
"apiVersion": "2021-05-01",
"name": "[variables('natGatewayR1Name')]",
"location": "[parameters('locationR1')]",
"sku": {
"name": "Standard"
},
"properties": {
"idleTimeoutInMinutes": 4,
"publicIpAddresses": [
{
"id": "[resourceId('Microsoft.Network/publicIPAddresses', variables('natGatewayPIR1Name'))]"
}
]
},
"dependsOn": [
"[resourceId('Microsoft.Network/publicIPAddresses', variables('natGatewayPIR1Name'))]"
]
},
{
"type": "Microsoft.Network/publicIPAddresses",
"apiVersion": "2021-05-01",
"name": "[variables('natGatewayPIR1Name')]",
"location": "[parameters('locationR1')]",
"sku": {
"name": "Standard"
},
"properties": {
"publicIPAddressVersion": "IPv4",
"publicIPAllocationMethod": "Static",
"idleTimeoutInMinutes": 4
}
},
{
"type": "Microsoft.Network/loadBalancers",
"apiVersion": "2023-02-01",
"name": "[variables('lbR1Name')]",
"location": "[parameters('locationR1')]",
"sku": {
"name": "[variables('lbSkuName')]"
},
"properties": {
"frontendIPConfigurations": [
{
"name": "[variables('lbFrontEndR1Name')]",
"properties": {
"publicIPAddress": {
"id": "[resourceId('Microsoft.Network/publicIPAddresses', variables('lbPIPR1Name'))]"
}
}
}
],
"backendAddressPools": [
{
"name": "[variables('lbBackendPoolR1Name')]"
}
],
"loadBalancingRules": [
{
"name": "myHTTPRule",
"properties": {
"frontendIPConfiguration": {
"id": "[resourceId('Microsoft.Network/loadBalancers/frontendIPConfigurations', variables('lbR1Name'), variables('lbFrontEndR1Name'))]"
},
"backendAddressPool": {
"id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', variables('lbR1Name'), variables('lbBackendPoolR1Name'))]"
},
"frontendPort": 80,
"backendPort": 80,
"enableFloatingIP": false,
"idleTimeoutInMinutes": 15,
"protocol": "Tcp",
"enableTcpReset": true,
"loadDistribution": "Default",
"disableOutboundSnat": true,
"probe": {
"id": "[resourceId('Microsoft.Network/loadBalancers/probes', variables('lbR1Name'), variables('lbProbeR1Name'))]"
}
}
}
],
"probes": [
{
"name": "[variables('lbProbeR1Name')]",
"properties": {
"protocol": "Http",
"port": 80,
"requestPath": "/",
"intervalInSeconds": 5,
"numberOfProbes": 2
}
}
],
"outboundRules": []
},
"dependsOn": [
"[resourceId('Microsoft.Network/publicIPAddresses', variables('lbPIPR1Name'))]"
]
},
{
"type": "Microsoft.Network/publicIPAddresses",
"apiVersion": "2023-02-01",
"name": "[variables('lbPIPR1Name')]",
"location": "[parameters('locationR1')]",
"sku": {
"name": "[variables('lbSkuName')]"
},
"properties": {
"publicIPAddressVersion": "IPv4",
"publicIPAllocationMethod": "Static"
}
},
{
"type": "Microsoft.Network/networkSecurityGroups",
"apiVersion": "2023-02-01",
"name": "[variables('nsgR1Name')]",
"location": "[parameters('locationR1')]",
"properties": {
"securityRules": [
{
"name": "AllowHTTPInbound",
"properties": {
"protocol": "*",
"sourcePortRange": "*",
"destinationPortRange": "80",
"sourceAddressPrefix": "Internet",
"destinationAddressPrefix": "*",
"access": "Allow",
"priority": 100,
"direction": "Inbound"
}
}
]
}
},
{
"type": "Microsoft.Network/virtualNetworks",
"apiVersion": "2023-02-01",
"name": "[variables('vnetR1Name')]",
"location": "[parameters('locationR1')]",
"properties": {
"addressSpace": {
"addressPrefixes": [
"[variables('vnetAddressPrefixR1')]"
]
}
}
},
{
"copy": {
"name": "nicVmR2",
"count": "[length(range(0, 3))]"
},
"type": "Microsoft.Network/networkInterfaces",
"apiVersion": "2023-02-01",
"name": "[format('vm-r2-{0}-networkInterface', add(range(0, 3)[copyIndex()], 1))]",
"location": "[parameters('locationR2')]",
"properties": {
"ipConfigurations": [
{
"name": "ipconfig1",
"properties": {
"privateIPAllocationMethod": "Dynamic",
"subnet": {
"id": "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('vnetR2Name'), variables('vnetSubnetR2Name'))]"
},
"loadBalancerBackendAddressPools": [
{
"id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', variables('lbR2Name'), variables('lbBackendPoolR2Name'))]"
}
]
}
}
],
"networkSecurityGroup": {
"id": "[resourceId('Microsoft.Network/networkSecurityGroups', variables('nsgR2Name'))]"
}
},
"dependsOn": [
"[resourceId('Microsoft.Network/loadBalancers', variables('lbR2Name'))]",
"[resourceId('Microsoft.Network/networkSecurityGroups', variables('nsgR2Name'))]",
"[resourceId('Microsoft.Network/virtualNetworks', variables('vnetR2Name'))]",
"[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('vnetR2Name'), variables('vnetSubnetR2Name'))]"
]
},
{
"copy": {
"name": "installWebServerVmR2",
"count": "[length(range(0, 3))]"
},
"type": "Microsoft.Compute/virtualMachines/extensions",
"apiVersion": "2023-03-01",
"name": "[format('vm-r2-{0}/InstallWebServer', add(range(0, 3)[copyIndex()], 1))]",
"location": "[parameters('locationR2')]",
"properties": {
"publisher": "Microsoft.Compute",
"type": "CustomScriptExtension",
"typeHandlerVersion": "1.7",
"autoUpgradeMinorVersion": true,
"settings": {
"commandToExecute": "powershell.exe Install-WindowsFeature -name Web-Server -IncludeManagementTools && powershell.exe remove-item 'C:\\inetpub\\wwwroot\\iisstart.htm' && powershell.exe Add-Content -Path 'C:\\inetpub\\wwwroot\\iisstart.htm' -Value $('Hello World from ' + $env:computername)"
}
},
"dependsOn": [
"vmR2"
]
},
{
"copy": {
"name": "vmR2",
"count": "[length(range(0, 3))]"
},
"type": "Microsoft.Compute/virtualMachines",
"apiVersion": "2023-03-01",
"name": "[format('vm-r2-{0}', add(range(0, 3)[copyIndex()], 1))]",
"location": "[parameters('locationR2')]",
"properties": {
"hardwareProfile": {
"vmSize": "[parameters('vmSize')]"
},
"storageProfile": {
"imageReference": {
"publisher": "MicrosoftWindowsServer",
"offer": "WindowsServer",
"sku": "2019-Datacenter",
"version": "latest"
},
"osDisk": {
"createOption": "fromImage",
"managedDisk": {
"storageAccountType": "[variables('vmStorageAccountType')]"
}
}
},
"networkProfile": {
"networkInterfaces": [
{
"id": "[resourceId('Microsoft.Network/networkInterfaces', format('vm-r2-{0}-networkInterface', add(range(0, 3)[copyIndex()], 1)))]"
}
]
},
"osProfile": {
"computerName": "[format('vm-r2-{0}', add(range(0, 3)[copyIndex()], 1))]",
"adminUsername": "[parameters('adminUsername')]",
"adminPassword": "[parameters('adminPassword')]",
"windowsConfiguration": {
"enableAutomaticUpdates": true,
"provisionVMAgent": true
}
}
},
"dependsOn": [
"nicVmR2"
]
},
{
"type": "Microsoft.Network/virtualNetworks/subnets",
"apiVersion": "2023-02-01",
"name": "[format('{0}/{1}', variables('vnetR2Name'), variables('bastionSubnetR2Name'))]",
"properties": {
"addressPrefix": "[variables('vnetBastionSubnetAddressPrefixR2')]"
},
"dependsOn": [
"[resourceId('Microsoft.Network/virtualNetworks', variables('vnetR2Name'))]"
]
},
{
"type": "Microsoft.Network/virtualNetworks/subnets",
"apiVersion": "2023-02-01",
"name": "[format('{0}/{1}', variables('vnetR2Name'), variables('vnetSubnetR2Name'))]",
"properties": {
"addressPrefix": "[variables('vnetSubnetAddressPrefixR2')]",
"natGateway": {
"id": "[resourceId('Microsoft.Network/natGateways', variables('natGatewayR2Name'))]"
}
},
"dependsOn": [
"[resourceId('Microsoft.Network/natGateways', variables('natGatewayR2Name'))]",
"[resourceId('Microsoft.Network/virtualNetworks', variables('vnetR2Name'))]",
"[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('vnetR2Name'), variables('bastionSubnetR2Name'))]"
]
},
{
"type": "Microsoft.Network/bastionHosts",
"apiVersion": "2023-02-01",
"name": "[variables('bastionHostR2Name')]",
"location": "[parameters('locationR2')]",
"properties": {
"ipConfigurations": [
{
"name": "IpConf",
"properties": {
"privateIPAllocationMethod": "Dynamic",
"publicIPAddress": {
"id": "[resourceId('Microsoft.Network/publicIPAddresses', variables('bastionPIPR2Name'))]"
},
"subnet": {
"id": "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('vnetR2Name'), variables('bastionSubnetR2Name'))]"
}
}
}
]
},
"dependsOn": [
"[resourceId('Microsoft.Network/publicIPAddresses', variables('bastionPIPR2Name'))]",
"[resourceId('Microsoft.Network/virtualNetworks', variables('vnetR2Name'))]",
"[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('vnetR2Name'), variables('bastionSubnetR2Name'))]"
]
},
{
"type": "Microsoft.Network/publicIPAddresses",
"apiVersion": "2023-02-01",
"name": "[variables('bastionPIPR2Name')]",
"location": "[parameters('locationR2')]",
"sku": {
"name": "[variables('lbSkuName')]"
},
"properties": {
"publicIPAddressVersion": "IPv4",
"publicIPAllocationMethod": "Static"
}
},
{
"type": "Microsoft.Network/natGateways",
"apiVersion": "2021-05-01",
"name": "[variables('natGatewayR2Name')]",
"location": "[parameters('locationR2')]",
"sku": {
"name": "Standard"
},
"properties": {
"idleTimeoutInMinutes": 4,
"publicIpAddresses": [
{
"id": "[resourceId('Microsoft.Network/publicIPAddresses', variables('natGatewayPIR2Name'))]"
}
]
},
"dependsOn": [
"[resourceId('Microsoft.Network/publicIPAddresses', variables('natGatewayPIR2Name'))]"
]
},
{
"type": "Microsoft.Network/publicIPAddresses",
"apiVersion": "2021-05-01",
"name": "[variables('natGatewayPIR2Name')]",
"location": "[parameters('locationR2')]",
"sku": {
"name": "Standard"
},
"properties": {
"publicIPAddressVersion": "IPv4",
"publicIPAllocationMethod": "Static",
"idleTimeoutInMinutes": 4
}
},
{
"type": "Microsoft.Network/loadBalancers",
"apiVersion": "2023-02-01",
"name": "[variables('lbR2Name')]",
"location": "[parameters('locationR2')]",
"sku": {
"name": "[variables('lbSkuName')]"
},
"properties": {
"frontendIPConfigurations": [
{
"name": "[variables('lbFrontEndR2Name')]",
"properties": {
"publicIPAddress": {
"id": "[resourceId('Microsoft.Network/publicIPAddresses', variables('lbPIPR2Name'))]"
}
}
}
],
"backendAddressPools": [
{
"name": "[variables('lbBackendPoolR2Name')]"
}
],
"loadBalancingRules": [
{
"name": "myHTTPRule",
"properties": {
"frontendIPConfiguration": {
"id": "[resourceId('Microsoft.Network/loadBalancers/frontendIPConfigurations', variables('lbR2Name'), variables('lbFrontEndR2Name'))]"
},
"backendAddressPool": {
"id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', variables('lbR2Name'), variables('lbBackendPoolR2Name'))]"
},
"frontendPort": 80,
"backendPort": 80,
"enableFloatingIP": false,
"idleTimeoutInMinutes": 15,
"protocol": "Tcp",
"enableTcpReset": true,
"loadDistribution": "Default",
"disableOutboundSnat": true,
"probe": {
"id": "[resourceId('Microsoft.Network/loadBalancers/probes', variables('lbR2Name'), variables('lbProbeR2Name'))]"
}
}
}
],
"probes": [
{
"name": "[variables('lbProbeR2Name')]",
"properties": {
"protocol": "Http",
"port": 80,
"requestPath": "/",
"intervalInSeconds": 5,
"numberOfProbes": 2
}
}
],
"outboundRules": []
},
"dependsOn": [
"[resourceId('Microsoft.Network/publicIPAddresses', variables('lbPIPR2Name'))]"
]
},
{
"type": "Microsoft.Network/publicIPAddresses",
"apiVersion": "2023-02-01",
"name": "[variables('lbPIPR2Name')]",
"location": "[parameters('locationR2')]",
"sku": {
"name": "[variables('lbSkuName')]"
},
"properties": {
"publicIPAddressVersion": "IPv4",
"publicIPAllocationMethod": "Static"
}
},
{
"type": "Microsoft.Network/networkSecurityGroups",
"apiVersion": "2023-02-01",
"name": "[variables('nsgR2Name')]",
"location": "[parameters('locationR2')]",
"properties": {
"securityRules": [
{
"name": "AllowHTTPInbound",
"properties": {
"protocol": "*",
"sourcePortRange": "*",
"destinationPortRange": "80",
"sourceAddressPrefix": "Internet",
"destinationAddressPrefix": "*",
"access": "Allow",
"priority": 100,
"direction": "Inbound"
}
}
]
}
},
{
"type": "Microsoft.Network/virtualNetworks",
"apiVersion": "2023-02-01",
"name": "[variables('vnetR2Name')]",
"location": "[parameters('locationR2')]",
"properties": {
"addressSpace": {
"addressPrefixes": [
"[variables('vnetAddressPrefixR2')]"
]
}
}
},
{
"type": "Microsoft.Network/publicIPAddresses",
"apiVersion": "2023-02-01",
"name": "[variables('lbPIPCrName')]",
"location": "[parameters('locationCr')]",
"sku": {
"name": "Standard",
"tier": "Global"
},
"properties": {
"publicIPAllocationMethod": "[variables('publicIPAddressType')]"
}
},
{
"type": "Microsoft.Network/loadBalancers",
"apiVersion": "2023-02-01",
"name": "[variables('lbCrName')]",
"location": "[parameters('locationCr')]",
"sku": {
"name": "Standard",
"tier": "Global"
},
"properties": {
"frontendIPConfigurations": [
{
"name": "[variables('lbFrontEndCrName')]",
"properties": {
"publicIPAddress": {
"id": "[resourceId('Microsoft.Network/publicIPAddresses', variables('lbPIPCrName'))]"
}
}
}
],
"backendAddressPools": [
{
"name": "[variables('lbBackendPoolCrName')]"
}
],
"loadBalancingRules": [
{
"name": "LBRule",
"properties": {
"frontendIPConfiguration": {
"id": "[resourceId('Microsoft.Network/loadBalancers/frontendIPConfigurations', variables('lbCrName'), variables('lbFrontEndCrName'))]"
},
"backendAddressPool": {
"id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', variables('lbCrName'), variables('lbBackendPoolCrName'))]"
},
"protocol": "Tcp",
"frontendPort": 80,
"backendPort": 80,
"enableFloatingIP": false
}
}
]
},
"dependsOn": [
"[resourceId('Microsoft.Network/publicIPAddresses', variables('lbPIPCrName'))]"
]
},
{
"type": "Microsoft.Network/loadBalancers/backendAddressPools",
"apiVersion": "2023-02-01",
"name": "[format('{0}/{1}', variables('lbCrName'), variables('lbBackendPoolCrName'))]",
"properties": {
"loadBalancerBackendAddresses": [
{
"name": "address1",
"properties": {
"loadBalancerFrontendIPConfiguration": {
"id": "[resourceId('Microsoft.Network/loadBalancers/frontendIPConfigurations', variables('lbR1Name'), variables('lbFrontEndR1Name'))]"
}
}
},
{
"name": "address2",
"properties": {
"loadBalancerFrontendIPConfiguration": {
"id": "[resourceId('Microsoft.Network/loadBalancers/frontendIPConfigurations', variables('lbR2Name'), variables('lbFrontEndR2Name'))]"
}
}
}
]
},
"dependsOn": [
"[resourceId('Microsoft.Network/loadBalancers', variables('lbCrName'))]",
"[resourceId('Microsoft.Network/loadBalancers', variables('lbR1Name'))]",
"[resourceId('Microsoft.Network/loadBalancers', variables('lbR2Name'))]"
]
}
]
}
Notitie
Wanneer u een standaard load balancer maakt, moet u ook een nieuw, standaard, openbaar IP-adres maken dat als de front-end wordt geconfigureerd voor de standaard load balancer. Bovendien moeten de load balancers en openbare IP-SKU's overeenkomen. In ons geval maken we twee standaard openbare IP-adressen, een voor de load balancer op regionaal niveau en een andere voor de globale load balancer.
Er zijn meerdere Azure-resources gedefinieerd in de sjabloon:
Microsoft.Network/loadBalancers:Regionale en globale load balancers.
Microsoft.Network/publicIPAddresses: voor de load balancer, bastionhost en voor elk van de virtuele machines.
Microsoft.Network/virtualNetworks: Virtueel netwerk voor load balancer en virtuele machines.
Microsoft.Compute/virtualMachines (2): Virtuele machines.
Microsoft.Network/networkInterfaces (2): Netwerkinterfaces voor virtuele machines.
Microsoft.Compute/virtualMachine/extensions (2): hiermee kunt u iis (Internet Information Server) en de webpagina's configureren.
Belangrijk
De prijzen per uur beginnen vanaf het moment dat Bastion wordt geïmplementeerd, ongeacht het uitgaande gegevensgebruik. Zie Prijzen en SKU's voor meer informatie. Als u Bastion implementeert als onderdeel van een zelfstudie of test, raden we u aan deze resource te verwijderen nadat u deze hebt gebruikt.
Zie Azure-quickstartsjablonen als u meer sjablonen wilt vinden die gerelateerd zijn aan Azure Load Balancer.
De sjabloon implementeren
Meld u aan bij het Azure-portaal.
Voer een aangepaste sjabloon in en selecteer deze in de zoekbalk implementeren
Voer op de pagina Aangepaste implementatie load balancer-cross-region in het tekstvak quickstart-sjabloon in en selecteer quickstarts/microsoft.network/load-balancer-cross-region.
Kies Sjabloon selecteren en voer de volgende gegevens in:
Naam Weergegeven als Abonnement Selecteer uw abonnement Resourcegroep Selecteer uw resourcegroep of maak een nieuwe resourcegroep Regio Selecteer de implementatieregio voor resources Projectnaam Voer een projectnaam in die wordt gebruikt om unieke resourcenamen te maken LocatieCR Selecteer de implementatieregio voor de load balancer voor meerdere regio's Locatie-r1 Selecteer de implementatieregio voor de regionale load balancer en VM's Location-r2 Selecteer de implementatieregio waar de regionale load balancer en VM's zich bevinden Gebruikersnaam van beheerder Voer een gebruikersnaam in voor de virtuele machines Wachtwoord beheerder Voer een wachtwoord in voor de virtuele machines Selecteer Beoordelen en maken om sjabloonvalidatie uit te voeren.
Als er geen fouten aanwezig zijn, controleert u de voorwaarden van de sjabloon en selecteert u Maken.
De implementatie controleren
Meld u zo nodig aan bij Azure Portal.
Selecteer Resourcegroepen in het linkerdeelvenster.
Selecteer de resourcegroep die in de implementatie wordt gebruikt. De standaardnaam van de resourcegroep is de projectnaam waaraan -rg is toegevoegd. Bijvoorbeeld crlb-learn-arm-rg.
Selecteer de globale load balancer. De standaardnaam is de projectnaam waaraan -cr is toegevoegd. Bijvoorbeeld crlb-learn-arm-cr.
Kopieer alleen het IP-adresgedeelte van het openbare IP-adres en plak het in de adresbalk van de browser. De pagina wordt omgezet in een standaard IIS Windows Server-webpagina.
Resources opschonen
Wanneer u ze niet meer nodig hebt, verwijdert u de:
- Resourcegroep
- Verdelingsmechanisme
- Verwante resources
- Ga naar Azure Portal, selecteer de resourcegroep die de load balancer bevat en selecteer vervolgens Resourcegroep verwijderen.
- Selecteer Force delete toepassen voor geselecteerde virtuele machines en virtuele-machineschaalsets, voer de naam van de resourcegroep in en selecteer vervolgens **Delete **.>
Volgende stappen
In deze zelfstudie hebt u:
- Een load balancer voor meerdere regio's gemaakt\
- Een regionale load balancer gemaakt
- Drie virtuele machines gemaakt en gekoppeld aan de regionale load balancer
- De globale load balancer geconfigureerd voor gebruik met de regionale load balancer
- De globale load balancer getest.
Meer informatie over load balancer tussen regio's.
Ga naar het volgende artikel voor meer informatie over het maken...