Tutorial: Create a cross-region Azure Load Balancer using Azure PowerShell
A cross-region load balancer ensures a service is available globally across multiple Azure regions. If one region fails, the traffic is routed to the next closest healthy regional load balancer.
In this tutorial, you learn how to:
- Create cross-region load balancer.
- Create a load balancer rule.
- Create a backend pool containing two regional load balancers.
- Test the load balancer.
If you don't have an Azure subscription, create a trial subscription before you begin.
Prerequisites
- An Azure subscription.
- Two standard sku Azure Load Balancers with backend pools deployed in two different Azure regions.
- For information on creating a regional standard load balancer and virtual machines for backend pools, see Quickstart: Create a public load balancer to load balance VMs using Azure PowerShell.
- Append the name of the load balancers and virtual machines in each region with a -R1 and -R2.
- For information on creating a regional standard load balancer and virtual machines for backend pools, see Quickstart: Create a public load balancer to load balance VMs using Azure PowerShell.
- Azure PowerShell installed locally.
If you choose to install and use PowerShell locally, this article requires the Azure PowerShell module version 5.4.1 or later. Run Get-Module -ListAvailable Az
to find the installed version. If you need to upgrade, see Install Azure PowerShell module. If you're running PowerShell locally, you also need to run Connect-AzAccount -Environment AzureChinaCloud
to create a connection with Azure.
Create cross-region load balancer
Create a resource group
An Azure resource group is a logical container into which Azure resources are deployed and managed.
Create a resource group with New-AzResourceGroup.
$rg = @{
Name = 'MyResourceGroupLB-CR'
Location = 'chinanorth'
}
New-AzResourceGroup @rg
Create cross-region load balancer resources
In this section, you'll create the resources needed for the cross-region load balancer.
A global standard sku public IP is used for the frontend of the cross-region load balancer.
Use New-AzPublicIpAddress to create the public IP address.
Create a frontend IP configuration with New-AzLoadBalancerFrontendIpConfig.
Create a backend address pool with New-AzLoadBalancerBackendAddressPoolConfig.
Create a load balancer rule with Add-AzLoadBalancerRuleConfig.
Create a cross-region load Balancer with New-AzLoadBalancer.
## Create global IP address for load balancer ##
$ip = @{
Name = 'myPublicIP-CR'
ResourceGroupName = 'MyResourceGroupLB-CR'
Location = 'chinanorth'
Sku = 'Standard'
Tier = 'Global'
AllocationMethod = 'Static'
}
$publicIP = New-AzPublicIpAddress @ip
## Create frontend configuration ##
$fe = @{
Name = 'myFrontEnd-CR'
PublicIpAddress = $publicIP
}
$feip = New-AzLoadBalancerFrontendIpConfig @fe
## Create backend address pool ##
$be = @{
Name = 'myBackEndPool-CR'
}
$bepool = New-AzLoadBalancerBackendAddressPoolConfig @be
## Create the load balancer rule ##
$rul = @{
Name = 'myHTTPRule-CR'
Protocol = 'tcp'
FrontendPort = '80'
BackendPort = '80'
FrontendIpConfiguration = $feip
BackendAddressPool = $bepool
}
$rule = New-AzLoadBalancerRuleConfig @rul
## Create cross-region load balancer resource ##
$lbp = @{
ResourceGroupName = 'myResourceGroupLB-CR'
Name = 'myLoadBalancer-CR'
Location = 'chinanorth'
Sku = 'Standard'
Tier = 'Global'
FrontendIpConfiguration = $feip
BackendAddressPool = $bepool
LoadBalancingRule = $rule
}
$lb = New-AzLoadBalancer @lbp
Configure backend pool
In this section, you'll add two regional standard load balancers to the backend pool of the cross-region load balancer.
Important
To complete these steps, ensure that two regional load balancers with backend pools have been deployed in your subscription. For more information, see, Quickstart: Create a public load balancer to load balance VMs using Azure PowerShell.
Use Get-AzLoadBalancer and Get-AzLoadBalancerFrontendIpConfig to store the regional load balancer information in variables.
Use New-AzLoadBalancerBackendAddressConfig to create the backend address pool configuration for the load balancer.
Use Set-AzLoadBalancerBackendAddressPool to add the regional load balancer frontend to the cross-region backend pool.
## Place the region one load balancer configuration in a variable ##
$region1 = @{
Name = 'myLoadBalancer-R1'
ResourceGroupName = 'CreatePubLBQS-rg-r1'
}
$R1 = Get-AzLoadBalancer @region1
## Place the region two load balancer configuration in a variable ##
$region2 = @{
Name = 'myLoadBalancer-R2'
ResourceGroupName = 'CreatePubLBQS-rg-r2'
}
$R2 = Get-AzLoadBalancer @region2
## Place the region one load balancer frontend configuration in a variable ##
$region1fe = @{
Name = 'MyFrontEnd-R1'
LoadBalancer = $R1
}
$R1FE = Get-AzLoadBalancerFrontendIpConfig @region1fe
## Place the region two load balancer frontend configuration in a variable ##
$region2fe = @{
Name = 'MyFrontEnd-R2'
LoadBalancer = $R2
}
$R2FE = Get-AzLoadBalancerFrontendIpConfig @region2fe
## Create the cross-region backend address pool configuration for region 1 ##
$region1ap = @{
Name = 'MyBackendPoolConfig-R1'
LoadBalancerFrontendIPConfigurationId = $R1FE.Id
}
$beaddressconfigR1 = New-AzLoadBalancerBackendAddressConfig @region1ap
## Create the cross-region backend address pool configuration for region 2 ##
$region2ap = @{
Name = 'MyBackendPoolConfig-R2'
LoadBalancerFrontendIPConfigurationId = $R2FE.Id
}
$beaddressconfigR2 = New-AzLoadBalancerBackendAddressConfig @region2ap
## Apply the backend address pool configuration for the cross-region load balancer ##
$bepoolcr = @{
ResourceGroupName = 'myResourceGroupLB-CR'
LoadBalancerName = 'myLoadBalancer-CR'
Name = 'myBackEndPool-CR'
LoadBalancerBackendAddress = $beaddressconfigR1,$beaddressconfigR2
}
Set-AzLoadBalancerBackendAddressPool @bepoolcr
Test the load balancer
In this section, you'll test the cross-region load balancer. You'll connect to the public IP address in a web browser. You'll stop the virtual machines in one of the regional load balancer backend pools and observe the failover.
- Use Get-AzPublicIpAddress to get the public IP address of the load balancer:
$ip = @{
Name = 'myPublicIP-CR'
ResourceGroupName = 'myResourceGroupLB-CR'
}
Get-AzPublicIPAddress @ip | select IpAddress
Copy the public IP address, and then paste it into the address bar of your browser. The default page of IIS Web server is displayed on the browser.
Stop the virtual machines in the backend pool of one of the regional load balancers.
Refresh the web browser and observe the failover of the connection to the other regional load balancer.
Clean up resources
When no longer needed, you can use the Remove-AzResourceGroup command to remove the resource group, load balancer, and the remaining resources.
Remove-AzResourceGroup -Name 'myResourceGroupLB-CR'
Next steps
In this tutorial, you:
- Created a global IP address.
- Created a cross-region load balancer.
- Created a load-balancing rule.
- Added regional load balancers to the backend pool of the cross-region load balancer.
- Tested the load balancer.
Advance to the next article to learn how to...