Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Un equilibrador de carga global garantiza que un servicio esté disponible globalmente en varias regiones de Azure. Si se produce un error en una región, el tráfico se enruta al siguiente equilibrador de carga regional correcto más cercano.
El uso de una plantilla de Resource Manager requiere menos pasos que otros métodos de implementación.
Una plantilla de Azure Resource Manager es un archivo de notación de objetos JavaScript (JSON) que define tanto la infraestructura como la configuración de un proyecto. La plantilla usa sintaxis declarativa. Se describe la implementación deseada sin escribir la secuencia de comandos de programación para crear la implementación.
Si su entorno cumple los requisitos previos y está familiarizado con el uso de plantillas de Resource Manager, seleccione el botón Implementar en Azure. La plantilla se abre en Azure Portal.
En este tutorial, aprenderá a:
- Todos los tutoriales incluyen una lista que resume los pasos necesarios para completarlos
- Cada uno de estos puntos se alinea con una clave H2
- Usar estas casillas verdes en un tutorial
Requisitos previos
- Una cuenta de Azure con una suscripción activa. Crear una cuenta gratuitamente y acceder a Azure Portal.
Revisión de la plantilla
En esta sección, revisará la plantilla y los parámetros que se usan para implementar el equilibrador de carga global. La plantilla que se usa en este inicio rápido procede de las plantillas de inicio rápido de 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'))]"
]
}
]
}
Nota
Cuando se crea un equilibrador de carga estándar, también se debe crear una nueva dirección IP pública estándar que se configura como front-end para esa instancia. Además, los equilibradores de carga y las SKU de IP pública deberán coincidir. En nuestro caso, crearemos dos direcciones IP públicas estándar, una para el equilibrador de carga de nivel regional y otra para el equilibrador de carga global.
En la plantilla se han definido varios recursos de Azure:
Microsoft.Network/loadBalancers: equilibradores de carga globales y regionales.
Microsoft.Network/publicIPAddresses: para el equilibrador de carga, el host bastión y cada una de las máquinas virtuales.
Microsoft.Network/virtualNetworks: red virtual para el equilibrador de carga y las máquinas virtuales.
Microsoft.Compute/virtualMachines (2): máquinas virtuales.
Microsoft.Network/networkInterfaces (2): interfaces de red para máquinas virtuales.
Microsoft.Compute/virtualMachine/extensions (2): se usa para configurar Internet Information Server (IIS) y las páginas web.
Importante
Los precios por hora comienzan desde el momento en que se implementa Bastion, independientemente del uso de datos salientes. Para más información, consulte Precios y SKU. Si va a implementar Bastion como parte de un tutorial o prueba, se recomienda eliminar este recurso una vez que haya terminado de usarlo.
Para encontrar más plantillas relacionadas con Azure Load Balancer, consulte Plantillas de inicio rápido de Azure.
Implementación de la plantilla
Inicie sesión en Azure Portal.
Escriba y seleccione Implementar una plantilla personalizada en la barra de búsqueda
En la página Implementación personalizada, escriba load-balancer-cross-region en el cuadro de texto Plantilla de inicio rápido y seleccione quickstarts/microsoft.network/load-balancer-cross-region.
Elija Seleccionar plantilla y escriba la siguiente información:
Nombre Importancia Suscripción Selecciona la suscripción Grupo de recursos Seleccione el grupo de recursos o cree uno nuevo Región Selección de la región de implementación para los recursos Nombre de proyecto Escriba un nombre de proyecto usado para crear nombres de recurso únicos LocationCR Selección de la región de implementación para el equilibrador de carga entre regiones Ubicación-r1 Selección de la región de implementación para el equilibrador de carga regional y las máquinas virtuales Location-r2 Selección de la región de implementación del lugar del equilibrador de carga regional y las máquinas virtuales Nombre de usuario administrador Especifique un nombre de usuario para las máquinas virtuales Contraseña de administrador Escriba una contraseña para las máquinas virtuales Seleccione Revisar y crear para ejecutar la plantilla de validación.
Si no hubiera errores, revise los términos de la plantilla y seleccione Crear.
Comprobación de la implementación
Si fuera necesario, inicie sesión en Azure Portal.
Seleccione Grupos de recursos en el panel izquierdo.
Seleccione el grupo de recursos usado en la implementación. El nombre del grupo de recursos predeterminado es el nombre del proyecto con -rg anexado. Por ejemplo, crlb-learn-arm-rg.
Seleccione un equilibrador de carga global. Su nombre predeterminado es el nombre del proyecto con -cr anexado. Por ejemplo, crlb-learn-arm-cr.
Copie solo la parte de la dirección IP pública y, luego, péguela en la barra de direcciones del explorador. La página se resuelve en una página web predeterminada de IIS Windows Server.
Limpieza de recursos
Cuando ya no los necesite, elimine:
- Grupo de recursos
- Equilibrador de carga
- Recursos relacionados
- Vaya a Azure Portal, seleccione el grupo de recursos que contiene el equilibrador de carga y, luego, seleccione Eliminar grupo de recursos.
- Seleccione aplicar eliminación forzada para las máquinas virtuales seleccionadas y los conjuntos de escalado de máquinas virtuales, escriba el nombre del grupo de recursos y, a continuación, seleccione **Eliminar > Eliminar**.
Pasos siguientes
En este tutorial ha:
- Se creó un equilibrador de carga entre regiones\
- Se creó un equilibrador de carga regional
- Se crearon tres máquinas virtuales y fueron vinculadas al equilibrador de carga regional
- Se configuró el equilibrador de carga global para que funcione con el equilibrador de carga regional.
- Se probó un equilibrador de carga global.
Obtenga más información sobre el equilibrador de carga entre regiones.
Pase al siguiente artículo, donde aprenderá a crear...