De acordo com o blog do MSDN abaixo, vejo que existem duas maneiras de criar um ouvinte de balanceador de carga.
Mas NÃO estou encontrando o cenário exato em que preciso usá-los? Gostaria que aplicativos externos se conectassem ao meu servidor SQL, que é altamente disponível (AlwaysOn). qual balanceador de carga devo configurar?
Artigo aqui http://clusteringformeremortals.com/2015/01/01/step-by-step-how-to-configure-a-sql-server-failover-cluster-instance-fci-in-microsoft-azure-iaas- sqlserver-azure-sanless/ diz que,
Depois que o cluster estiver configurado, você precisará criar o balanceador de carga interno (ILB) que será usado para todos os acessos de cliente. Os clientes que se conectam ao SQL Server precisarão se conectar ao ILB em vez de se conectarem diretamente ao endereço IP do cluster. Se você tentasse se conectar ao cluster diretamente neste ponto, veria que não é possível conectar-se ao cluster de nenhum sistema remoto. Mesmo o SQL Server Management Studio não poderá se conectar ao cluster diretamente neste ponto
Atualização sobre como configurá-lo
Estou usando o script abaixo para criar o balanceador de carga interno e foi bem-sucedido.
// Define variables
$ServiceName = "XYZ"
$AGNodes = "ABC01","ABC02"
$SubnetName = "MYSUBNETNAME"
$ILBStaticIP = "10.249.XXX.XXX"
$ILBName = "AGListenerLB"
// Create the ILB
Add-AzureInternalLoadBalancer -InternalLoadBalancerName $ILBName -SubnetName $SubnetName -ServiceName $ServiceName -StaticVNetIPAddress $ILBStaticIP
// Configure a load balanced endpoint for each node in $AGNodes using ILB
ForEach ($node in $AGNodes)
{
Get-AzureVM -ServiceName $ServiceName -Name $node | Add- AzureEndpoint -Name "ListenerEndpoint" -LBSetName "ListenerEndpointLB" -Protocol tcp -LocalPort 1433 -PublicPort 1433 -ProbePort 59999 -ProbeProtocol tcp -ProbeIntervalInSeconds 10 -InternalLoadBalancerName $ILBName -DirectServerReturn $true | Update-AzureVM
}
Depois que o script acima for bem-sucedido, precisamos executar o script abaixo
# Define variables
$ClusterNetworkName = "Cluster Network 1" # the cluster network name (Use Get-ClusterNetwork on Windows Server 2012 of higher to find the name)
$IPResourceName = "DEVAG_10.249.XXX.XXX" # the IP Address resource name
$ILBIP = “10.249.XXX.XXX” # the IP Address of the Internal Load Balancer (ILB)
Import-Module FailoverClusters
Se você estiver usando o Windows Server 2012 ou superior, use o comando Get-Cluster Resource. Se você estiver usando o Windows Server 2008 R2, use o comando cluster res. Ambos os comandos são comentados. Escolha aquele aplicável ao seu ambiente e remova o # no início da linha para converter o comentário em uma linha de código executável.
Get-ClusterResource $IPResourceName | Set-ClusterParameter -Multiple @{"Address"="$ILBIP";"ProbePort"="59999";"SubnetMask"="255.255.255.255";"Network"="$ClusterNetworkName";"EnableDhcp"=0}
# cluster res $IPResourceName /priv enabledhcp=0 address=$ILBIP probeport=59999 subnetmask=255.255.255.255
Externo - usa o endereço IP virtual público do serviço de nuvem que hospeda as máquinas virtuais. Use quando precisar acessar o ouvinte de fora da rede virtual, inclusive da Internet, ou seja, voltado para o público
Interno - usa balanceamento de carga interno (ILB) com um endereço privado para o ouvinte. Use quando você acessar apenas o ouvinte de dentro da mesma rede virtual. Isso inclui VPN site a site em cenários híbridos, ou seja, não voltados para o público