Configure a load balancer for SQL Server Always On
Azure Load Balancer supports two different types: Basic and Standard. This article discusses Basic Load Balancer. Although Basic Load Balancer is generally available, Standard Load Balancer is currently in public preview. For more information about Standard Load Balancer, see Standard Load Balancer overview.
SQL Server Always On availability groups now can run with an internal load balancer. An availability group is SQL Server's flagship solution for high availability and disaster recovery. The availability group listener allows client applications to seamlessly connect to the primary replica, irrespective of the number of replicas in the configuration.
The listener (DNS) name is mapped to a load-balanced IP address. Azure Load Balancer directs the incoming traffic to only the primary server in the replica set.
You can use internal load balancer support for SQL Server Always On (listener) endpoints. You now have control over the accessibility of the listener. You can choose the load-balanced IP address from a specific subnet in your virtual network.
By using an internal load balancer on the listener, the SQL Server endpoint (for example, Server=tcp:ListenerName,1433;Database=DatabaseName) is accessible only by:
- Services and VMs in the same virtual network.
- Services and VMs from connected on-premises networks.
- Services and VMs from interconnected virtual networks.
Add an internal load balancer to the service
In the following example, you configure a virtual network that contains a subnet called 'Subnet-1':
Add-AzureInternalLoadBalancer -InternalLoadBalancerName ILB_SQL_AO -SubnetName Subnet-1 -ServiceName SqlSvc
Add load-balanced endpoints for an internal load balancer on each VM.
Get-AzureVM -ServiceName SqlSvc -Name sqlsvc1 | Add-AzureEndpoint -Name "LisEUep" -LBSetName "ILBSet1" -Protocol tcp -LocalPort 1433 -PublicPort 1433 -ProbePort 59999 -ProbeProtocol tcp -ProbeIntervalInSeconds 10 - DirectServerReturn $true -InternalLoadBalancerName ILB_SQL_AO | Update-AzureVM Get-AzureVM -ServiceName SqlSvc -Name sqlsvc2 | Add-AzureEndpoint -Name "LisEUep" -LBSetName "ILBSet1" -Protocol tcp -LocalPort 1433 -PublicPort 1433 -ProbePort 59999 -ProbeProtocol tcp -ProbeIntervalInSeconds 10 -DirectServerReturn $true -InternalLoadBalancerName ILB_SQL_AO | Update-AzureVM
In the previous example, you have two VMs called "sqlsvc1" and "sqlsvc2" that run in the cloud service "Sqlsvc". After you create the internal load balancer with the
DirectServerReturnswitch, you add load-balanced endpoints to the internal load balancer. The load-balanced endpoints allow SQL Server to configure the listeners for the availability groups.
For more information about SQL Server Always On, see Configure an internal load balancer for an Always On availability group in Azure.