Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Um balanceador de carga entre regiões garante que um serviço esteja disponível globalmente em várias regiões do Azure. Se uma região falhar, o tráfego será roteado para o balanceador de carga regional íntegro mais próximo.
O uso de um modelo do Resource Manager apresenta menos etapas comparado a outros métodos de implantação.
Um Modelo do Azure Resource Manager é um arquivo JSON (JavaScript Object Notation) que define a infraestrutura e a configuração do seu projeto. O modelo usa a sintaxe declarativa. Você descreve a implantação pretendida sem escrever a sequência de comandos de programação para criar a implantação.
Se seu ambiente atender aos pré-requisitos e você estiver familiarizado com o uso de modelos ARM, selecione o botão Implantar no Azure. O modelo é aberto no portal do Azure.
Neste tutorial, você aprenderá a:
- Todos os tutoriais incluem uma lista que resume as etapas para conclusão
- Cada um desses tópicos está alinhado a uma chave H2
- Use essas caixas de seleção verdes em um tutorial
Pré-requisitos
- Uma conta do Azure com uma assinatura ativa. Crie uma conta gratuitamente e acesso ao portal do Azure.
Examinar o modelo
Nesta seção, você examinará o modelo e os parâmetros usados para implantar o balanceador de carga entre regiões. O modelo usado neste início rápido é dos Modelos de Início Rápido do Azure.
{
"$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'))]"
]
}
]
}
Observação
Ao criar um Standard Load Balancer, você também precisa criar um endereço IP público padrão configurado como o front-end do Standard Load Balancer. Além disso, os balanceadores de carga e os SKUs de IP públicos devem corresponder. Em nosso caso, criaremos dois endereços IP públicos padrão, um para o balanceador de carga de nível regional e outro para o balanceador de carga entre regiões.
Vários recursos do Azure foram definidos no modelo:
Microsoft.Network/loadBalancers: Balanceadores de carga regionais e globais.
Microsoft.Network/publicIPAddresses: Para o balanceador de carga, bastion host e para cada uma das máquinas virtuais.
Microsoft.Network/virtualNetworks: rede virtual para balanceador de carga e máquinas virtuais.
Microsoft.Compute/virtualMachines (2): Máquinas virtuais.
Microsoft.Network/networkInterfaces (2): Interfaces de rede para máquinas virtuais.
Microsoft.Compute/virtualMachine/extensions (2): Use para configurar o IIS (Serviços de Informações da Internet) e as páginas da Web.
Importante
Os preços por hora começam a partir do momento em que o Bastion é implantado, independentemente do uso de dados de saída. Para saber mais, confira Preços e SKUs. Se estiver implantando o Bastion como parte de um tutorial ou teste, recomendamos que você exclua esse recurso após terminar de usá-lo.
Para encontrar mais modelos relacionados ao Azure Load Balancer, confira Modelos de Início Rápido do Azure.
Implantar o modelo
Entre no portal do Azure.
Insira e selecione Implantar um modelo personalizado na barra de pesquisa
Na página Implantação personalizada, insira load-balancer-cross-region na caixa de texto Modelo de início rápido e selecione quickstarts/microsoft.network/load-balancer-cross-region.
Escolha Selecionar modelo e insira as seguintes informações:
Nome Valor Subscrição Selecionar sua assinatura Grupo de recursos Selecione seu grupo de recursos ou crie um novo grupo de recursos Região Selecione a região de implantação para recursos Nome do projeto Insira um nome de projeto usado para criar nomes de recursos exclusivos LocationCR Selecione a região de implantação para o balanceador de carga entre regiões Location-r1 Selecione a região de implantação para o balanceador de carga regional e as VMs Location-r2 Selecione a região de implantação em que o balanceador de carga regional e as VMs Nome de Usuário do Administrador Insira um nome de usuário para as máquina virtuais Senha do Administrador Insira uma senha para as máquinas virtuais Selecione Examinar + criar para executar a validação do modelo.
Se nenhum erro estiver presente, examine os termos do modelo e selecione Criar.
Verificar a implantação
Se necessário, entre no Portal do Azure.
Escolha Grupos de recursos no painel esquerdo.
Selecione o grupo de recursos usado na implantação. O nome do grupo de recursos padrão é o nome do projeto com o acréscimo de -rg. Por exemplo, crlb-learn-arm-rg.
Selecione o balanceador de carga global. O nome padrão é o nome do projeto com o acréscimo de -cr. Por exemplo, crlb-learn-arm-cr.
Copie apenas a parte do endereço IP do endereço IP público e cole-a na barra de endereço do seu navegador. A página é resolvida para uma página da Web padrão do Windows Server do IIS.
Limpar os recursos
Quando você não precisar mais deles, exclua os seguintes:
- Grupo de recursos
- Balanceador de carga
- Recursos relacionados
- Acesse o portal do Azure, selecione o grupo de recursos que contém o balanceador de carga e, em seguida, selecione Excluir o grupo de recursos.
- Selecione aplicar exclusão forçada para máquinas virtuais selecionadas e Conjuntos de dimensionamento de máquinas virtuais, insira o nome do grupo de recursos e selecione **Excluir > Excluir **.
Próximas etapas
Neste tutorial, você:
- Criou um balanceador de carga entre regiões\
- Criou um balanceador de carga regional
- Criou três máquinas virtuais e as vinculou ao balanceador de carga regional
- Configurou o balanceador de carga global para trabalhar com o balanceador de carga regional
- Testou o balanceador de carga global.
Saiba mais sobre o balanceador de carga entre regiões.
Prossiga para o próximo artigo para aprender a criar...