Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Globalny moduł równoważenia obciążenia zapewnia, że usługa jest dostępna globalnie w wielu regionach świadczenia usługi Azure. Jeśli jeden region ulegnie awarii, ruch jest kierowany do najbliższego regionalnego modułu równoważenia obciążenia, który działa prawidłowo.
Użycie szablonu usługi ARM wymaga mniejszej liczby kroków w porównaniu z innymi metodami wdrażania.
Szablon usługi Azure Resource Manager to plik JavaScript Object Notation (JSON), który definiuje infrastrukturę i konfigurację projektu. Szablon używa składni deklaratywnej. Możesz opisać zamierzone wdrożenie bez konieczności pisania sekwencji poleceń programowania w celu utworzenia wdrożenia.
Jeśli środowisko spełnia wymagania i znasz szablony ARM, wybierz przycisk Wdróż na platformie Azure. Szablon zostanie otwarty w witrynie Azure Portal.
W tym poradniku nauczysz się, jak:
- Wszystkie samouczki zawierają listę podsumowującą kroki do ukończenia
- Każdy z tych punktów punktorowych jest wyrównany do klucza H2
- Użyj tych zielonych pól wyboru w samouczku
Wymagania wstępne
- Konto Azure z aktywną subskrypcją. Utwórz bezpłatne konto i uzyskaj dostęp do witryny Azure Portal.
Przegląd szablonu
W tej sekcji zapoznasz się z szablonem i parametrami używanymi do wdrażania globalnego modułu równoważenia obciążenia. Szablon używany w tym szybkim starcie pochodzi z Azure Quickstart Templates.
{
"$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'))]"
]
}
]
}
Uwaga / Notatka
Podczas tworzenia standardowego modułu równoważenia obciążenia należy również utworzyć nowy standardowy publiczny adres IP skonfigurowany jako interfejs zewnętrzny dla tego modułu. Ponadto moduły równoważenia obciążenia i jednostki SKU publicznych adresów IP muszą być zgodne. W naszym przypadku utworzymy dwa standardowe publiczne adresy IP, jeden dla modułu równoważenia obciążenia na poziomie regionalnym, a drugi dla globalnego modułu równoważenia obciążenia.
W szablonie zdefiniowano wiele zasobów platformy Azure:
Microsoft.Network/loadBalancers:Regionalne i globalne moduły równoważenia obciążenia.
Microsoft.Network/publicIPAddresses: dla równoważnika obciążenia, hosta bastionowego oraz każdej maszyny wirtualnej.
Microsoft.Network/virtualNetworks: sieć wirtualna dla modułu równoważenia obciążenia i maszyn wirtualnych.
Microsoft.Compute/virtualMachines (2): Maszyny wirtualne.
Microsoft.Network/networkInterfaces (2): Interfejsy sieciowe dla maszyn wirtualnych.
Microsoft.Compute/virtualMachine/extensions (2): służy do konfigurowania internetowego serwera informacji (IIS) i stron sieci Web.
Ważne
Ceny godzinowe zaczynają się od momentu wdrożenia usługi Bastion, niezależnie od użycia danych wychodzących. Aby uzyskać więcej informacji, zobacz Ceny i SKU. Jeśli wdrażasz Bastion w ramach samouczka lub testu, zalecamy usunięcie tego zasobu po zakończeniu jego używania.
Aby znaleźć więcej szablonów związanych z usługą Azure Load Balancer, zobacz Szablony szybkiego startu platformy Azure.
Wdrażanie szablonu
Zaloguj się do witryny Azure Portal.
Wprowadź i wybierz pozycję Wdróż szablon niestandardowy na pasku wyszukiwania
Na stronie Wdrożenie niestandardowe wprowadź ciąg load-balancer-cross-region w polu tekstowym Szablon szybkiego startu i wybierz pozycję Quickstarts/microsoft.network/load-balancer-cross-region.
Wybierz Wybierz szablon i wprowadź następujące informacje:
Nazwa Wartość Subskrypcja Wybierz swoją subskrypcję Grupa zasobów Wybierz grupę zasobów lub utwórz nową grupę zasobów Rejon Wybierz region wdrażania dla zasobów Nazwa projektu Wprowadź nazwę projektu używaną do tworzenia unikatowych nazw zasobów LocationCR Wybieranie regionu wdrażania dla modułu równoważenia obciążenia między regionami Lokalizacja-r1 Wybierz region wdrażania dla regionalnego modułu równoważenia obciążenia i maszyn wirtualnych Lokalizacja-r2 Wybierz region wdrożeniowy, w którym znajdują się regionalny moduł równoważenia obciążenia i maszyny wirtualne. Nazwa użytkownika administratora Wprowadź nazwę użytkownika maszyn wirtualnych Hasło administratora Wprowadź hasło dla maszyn wirtualnych Wybierz pozycję Przejrzyj i utwórz , aby uruchomić walidację szablonu.
Jeśli nie ma żadnych błędów, przejrzyj warunki szablonu i wybierz pozycję Utwórz.
Weryfikowanie wdrożenia
W razie potrzeby zaloguj się do witryny Azure Portal.
Wybierz pozycję Grupy zasobów w okienku po lewej stronie.
Wybierz grupę zasobów używaną we wdrożeniu. Domyślna nazwa grupy zasobów to nazwa projektu z dołączonym parametrem -rg . Na przykład crlb-learn-arm-rg.
Wybierz globalny moduł równoważenia obciążenia. Jego domyślną nazwą jest nazwa projektu z dołączonym parametrem -cr . Na przykład crlb-learn-arm-cr.
Skopiuj tylko część adresu IP z publicznego adresu IP, a następnie wklej ją w pasku adresu przeglądarki. Strona domyślnie wyświetla się jako strona internetowa serwera Windows z usługami IIS.
Uprzątnij zasoby
Jeśli nie są już potrzebne, usuń następujące elementy:
- Grupa zasobów
- Moduł równoważenia obciążenia
- Powiązane zasoby
- Przejdź do witryny Azure Portal, wybierz grupę zasobów zawierającą moduł równoważenia obciążenia, a następnie wybierz pozycję Usuń grupę zasobów.
- Wybierz pozycję Zastosuj wymuszanie usuwania dla wybranych maszyn wirtualnych i zestawów skalowania maszyn wirtualnych, wprowadź nazwę grupy zasobów, a następnie wybierz pozycję **Usuń > usuń **.
Dalsze kroki
W tym samouczku nauczysz się następujących rzeczy:
- Utworzono moduł równoważenia obciążenia między regionami\
- Tworzenie regionalnego modułu równoważenia obciążenia
- Utworzono trzy maszyny wirtualne i połączono je z regionalnym modułem równoważenia obciążenia
- Skonfigurowano globalny moduł równoważenia obciążenia do pracy z regionalnym modułem równoważenia obciążenia
- Przetestowano globalny moduł równoważenia obciążenia.
Dowiedz się więcej na temat modułu równoważenia obciążenia między regionami.
Przejdź do następnego artykułu, aby dowiedzieć się, jak utworzyć...