Configurar um ouvinte de ILB para grupos de disponibilidade em VMs do SQL Server do Azure

Visão geral

Importante

O Azure tem dois modelos de implantação diferentes para criar e trabalhar com recursos: Azure Resource Manager e clássico. Este artigo aborda o uso do modelo de implantação clássico. Recomendamos que a maioria das novas implantações use o modelo do Resource Manager.

Para configurar um ouvinte para um grupo de disponibilidade AlwaysOn no modelo do Resource Manager, veja Configurar um balanceador de carga para um grupo de disponibilidade AlwaysOn no Azure.

O seu grupo de disponibilidade pode conter réplicas somente locais, somente no Azure ou tanto locais quanto no Azure para configurações híbridas. As réplicas do Azure podem residir na mesma região ou em várias regiões que usam várias redes virtuais. Os procedimentos neste artigo pressupõem que você já tenha configurado um grupo de disponibilidade, mas ainda não configurou um ouvinte.

Diretrizes e limitações para ouvintes internos

O uso de um ILB (balanceador de carga interno) com um ouvinte do grupo de disponibilidade no Azure está sujeito às diretrizes a seguir:

  • Há suporte para o ouvinte do grupo de disponibilidade no Windows Server 2008 R2, Windows Server 2012 e Windows Server 2012 R2.
  • Há suporte apenas para um ouvinte de grupo de disponibilidade para cada serviço de nuvem, pois o ouvinte é configurado para o ILB, e há apenas um ILB por serviço de nuvem. No entanto, é possível criar vários ouvintes externos. Para obter mais informações, veja Configurar um ouvinte externo para grupos de disponibilidade AlwaysOn no Azure.

Determine a acessibilidade do ouvinte

É importante perceber que há duas maneiras de configurar um ouvinte do grupo de disponibilidade no Azure. Esses métodos são diferentes do tipo de balanceador de carga do Azure que você utiliza ao criar o ouvinte. A tabela a seguir lista as diferenças:

Tipo de balanceador de carga Implementação Use quando:
Externo Usa o endereço de IP virtual público do serviço de nuvem que hospeda as máquinas virtuais (VMs). Você precisa acessar o ouvinte de fora da rede virtual, inclusive da Internet.
Interna Usa um balanceador de carga interno com um endereço privado para o ouvinte. Você pode acessar o ouvinte somente de dentro da mesma rede virtual. Esse acesso inclui VPN site a site em cenários híbridos.

Importante

Para um ouvinte que usa o VIP público (balanceador de carga externo) do serviço de nuvem, desde que o cliente, o ouvinte e os bancos de dados estejam na mesma região do Azure, você não incorrerá em encargos de saída. Caso contrário, os dados retornados através do ouvinte são considerados dados de saída e serão cobradas as taxas de transferência de dados normais.

Um ILB pode ser configurado somente em redes virtuais com um escopo regional. Redes virtuais existentes configuradas para um grupo de afinidades não podem usar um ILB. Para obter mais informações, consulte Visão geral do balanceador de carga interno.

Este artigo concentra-se na criação de um ouvinte que use um ILB. Se você precisar de um ouvinte externo/público, consulte a versão deste artigo que discute a configuração de um ouvinte externo.

Criar pontos de extremidade da VM com balanceamento de carga com retorno de servidor direto

Primeiro você cria um ILB executando o script mais adiante nesta seção.

Crie um ponto de extremidade com carga equilibrada para cada VM que hospeda uma réplica do Azure. Se você tiver réplicas em várias regiões, cada réplica para essa região deve estar no mesmo serviço de nuvem na mesma rede virtual do Azure. A criação de réplicas do grupo de disponibilidade que abrangem várias regiões do Azure exige a configuração de diversas redes virtuais. Para saber mais sobre como configurar a conectividade entre redes virtuais, confira Configurar rede virtual para conectividade de rede virtual.

  1. No Portal do Azure, acesse cada VM que hospeda uma réplica para exibir os detalhes.

  2. Clique na guia Pontos de extremidade para cada VM.

  3. Verifique se o Nome e a Porta Pública do ponto de extremidade do ouvinte que você deseja usar não esteja em uso. No exemplo nesta seção, o nome é MyEndpoint, e a porta é 1433.

  4. Em seu cliente local, baixe e instale o módulo mais recente do PowerShell.

  5. Iniciar o Azure PowerShell.
    Uma nova sessão do PowerShell é aberta com os módulos administrativos do Azure carregados.

  6. Execute Get-AzurePublishSettingsFile. Esse cmdlet direciona você a um navegador para baixar um arquivo de configurações de publicação para um diretório local. Talvez você receba uma solicitação para inserir as suas credenciais de entrada de sua assinatura do Aure.

  7. Execute o comando Import-AzurePublishSettingsFile com o caminho do arquivo de configurações de publicação que você baixou:

    Import-AzurePublishSettingsFile -PublishSettingsFile <PublishSettingsFilePath>
    

    Após o arquivo de configurações de publicação tiver sido importado, você pode gerenciar sua assinatura do Azure na sessão do PowerShell.

  8. Para o ILB, atribua um endereço IP estático. Examine a configuração atual da rede virtual executando o seguinte comando:

    (Get-AzureVNetConfig).XMLConfiguration
    
  9. Anote o nome da Sub-rede que contém as VMs que hospedam as réplicas. Esse nome é usado no parâmetro $SubnetName no script.

  10. Anote o nome do VirtualNetworkSite e do AddressPrefix inicial da sub-rede que contém as VMs que hospedam as réplicas. Procure um endereço IP disponível, passando os dois valores para o comando Test-AzureStaticVNetIP e examinando os AvailableAddresses. Por exemplo, se a rede virtual fosse chamada de MyVNet e tivesse um intervalo de endereços de sub-rede iniciado em 172.16.0.128, o comando a seguir listaria os endereços disponíveis:

    (Test-AzureStaticVNetIP -VNetName "MyVNet"-IPAddress 172.16.0.128).AvailableAddresses
    
  11. Selecione um dos endereços disponíveis e use-o no parâmetro $ILBStaticIP do script na próxima etapa.

  12. Copie o seguinte script do PowerShell em um editor de texto e defina os valores de variáveis para se adequar ao seu ambiente. Alguns parâmetros já receberam valores padrão.

    Observe que as implantações existentes que usam grupos de afinidade não podem adicionar o ILB. Para saber mais sobre os requisitos do ILB, consulte Visão geral do balanceador de carga interno.

    Além disso, se o seu grupo de disponibilidade abrange regiões do Azure, você deve executar o script uma vez em cada datacenter para o serviço de nuvem e os nós que residem naquele datacenter.

    # Define variables
    $ServiceName = "<MyCloudService>" # the name of the cloud service that contains the availability group nodes
    $AGNodes = "<VM1>","<VM2>","<VM3>" # all availability group nodes containing replicas in the same cloud service, separated by commas
    $SubnetName = "<MySubnetName>" # subnet name that the replicas use in the virtual network
    $ILBStaticIP = "<MyILBStaticIPAddress>" # static IP address for the ILB in the subnet
    $ILBName = "AGListenerLB" # customize the ILB name or use this default value
    
    # Create the ILB
    Add-AzureInternalLoadBalancer -InternalLoadBalancerName $ILBName -SubnetName $SubnetName -ServiceName $ServiceName -StaticVNetIPAddress $ILBStaticIP
    
    # Configure a load-balanced endpoint for each node in $AGNodes by 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
    }
    
  13. Depois de definir as variáveis, copie o script do editor de texto para sua sessão do PowerShell a fim de executá-lo. Se o prompt ainda mostrar >> , pressione Enter novamente para ter certeza de que o script será executado.

Verifique se KB2854082 está instalado, se necessário

A seguir, se algum servidor no cluster estiver executando o Windows Server 2008 R2 ou o Windows Server 2012, você deverá verificar se o hotfix KB2854082 está instalado em cada um dos servidores locais ou nas VMs do Azure que fazem parte do cluster. Qualquer servidor ou VM que esteja no cluster, mas não no grupo de disponibilidade, também deverá ter esse hotfix instalado.

Na sessão da área de trabalho remota para cada um de nós do cluster, baixe KB2854082 para um diretório local. Em seguida, instale o hotfix em cada um dos nós do cluster, em sequência. Se o serviço do cluster está sendo executado no nó do cluster, o servidor é reiniciado no final da instalação do hotfix.

Aviso

Parar o serviço de cluster ou reiniciar o servidor afeta a integridade de quorum do seu cluster e o grupo de disponibilidade, e pode fazer com que o cluster fique offline. Para manter a alta disponibilidade do seu cluster durante a instalação, verifique se:

  • O cluster está na integridade de quorum ideal.
  • Antes de instalar o hotfix em qualquer nó, todos os nós de cluster estão online.
  • Antes de instalar o hotfix em qualquer outro nó do cluster deixe que a instalação do hotfix seja executada até o fim em um nó, incluindo a reinicialização completa do servidor.

Abra as portas de firewall em nós do grupo de disponibilidade

Nesta etapa, você pode criar uma regra de firewall para abrir a porta de investigação para o ponto de extremidade com balanceamento de carga (59999 conforme especificado anteriormente), e outra regra para abrir a porta do ouvinte do grupo de disponibilidade. Como você criou o ponto de extremidade com balanceamento de carga nas VMs que contêm réplicas do grupo de disponibilidade, você precisa abrir a porta de investigação e a porta do ouvinte nasVMs.

  1. Em VMs que hospedam réplicas, inicie o Firewall do Windows com segurança avançada.

  2. Clique com o botão direito do mouse em Regras de Entrada e clique em Nova Regra.

  3. Na página Tipo de regra, selecione Porta e clique em Avançar.

  4. Na página Protocolo e portas, selecione TCP e digite 59999 na caixa Portas locais específicas e, em seguida, clique em Avançar.

  5. Na página Ação, mantenha selecionado Permitir a conexão e, em seguida, clique em Avançar.

  6. Na página Perfil, aceite as configurações padrão e, em seguida, clique em Avançar.

  7. Na página Nome, na caixa de texto Nome, especifique um nome de regra, como Porta de investigação do ouvinte AlwaysOn e clique em Concluir.

  8. Repita as etapas acima para a porta do ouvinte do grupo de disponibilidade (conforme especificado anteriormente no parâmetro $EndpointPort do script) e, em seguida, especifique um nome de regra apropriado, como Porta do ouvinte AlwaysOn.

Crie o ouvinte do grupo de disponibilidade

Crie o ouvinte do grupo de disponibilidade em duas etapas. Primeiro, crie o recurso de cluster do ponto de acesso do cliente e configure dependências. Segundo, configure os recursos de cluster no PowerShell.

Criar o ponto de acesso de cliente e configurar as dependências do cluster

Nesta etapa, você cria manualmente o ouvinte do grupo de disponibilidade no Gerenciador de Cluster de Failover e no Server Management Studio.

  1. Abra o Gerenciador de Cluster de Failover a partir do nó que hospeda a réplica primária.

  2. Selecione o nó Redes e observe o nome da rede do cluster. Esse nome é usado na variável $ClusterNetworkName no script do PowerShell.

  3. Expanda o nome do cluster e clique em Funções.

  4. No painel Funções, clique com o botão direito do mouse no nome do grupo de disponibilidade e, em seguida, selecione Adicionar recurso>Ponto de acesso para o cliente.

    Adicionar ponto de acesso para cliente para o grupo de disponibilidade

  5. Na caixa Nome, crie um nome para este novo ouvinte, clique em Avançar duas vezes e, em seguida, clique em Concluir.
    Não coloque o ouvinte ou o recurso online neste momento.

  6. Clique na guia Recursos e, em seguida, expanda o ponto de acesso do cliente que você acabou de criar. O recurso de endereço IP para cada uma das redes de cluster no seu cluster é exibido. Se essa é uma solução somente no Azure, somente um recurso de endereço IP é exibido.

  7. Siga um destes procedimentos:

    • Para configurar uma solução híbrida:

      a. Clique no botão direito do mouse no recurso de endereço IP que corresponde à sua sub-rede local e selecione Propriedades. Observe o nome do endereço IP e o nome da rede.

      b. Selecione Endereço IP Estático, atribua um endereço IP não utilizado e clique em OK.

    • Para configurar uma solução somente no Azure:

      a. Clique com o botão direito do mouse no recurso de endereço IP que corresponde à sub-rede do Azure e selecione Propriedades.

      Observação

      Se o ouvinte posteriormente não ficar online, devido a um endereço IP problemático selecionado pelo DHCP, você pode configurar um endereço IP estático válido nessa janela de propriedades.

      b. Na mesma janela de propriedades do Endereço IP, altere o Nome do Endereço IP.
      Esse nome é usado na variável $IPResourceName do script do PowerShell. Se sua solução abrange diversas VNets do Azure, repita essa etapa para cada recurso IP.

Configurar os recursos de cluster no PowerShell

  1. Para o ILB, você deve usar o endereço IP do ILB criado anteriormente. Para obter o endereço IP no PowerShell, use este script:

    # Define variables
    $ServiceName="<MyServiceName>" # the name of the cloud service that contains the AG nodes
    (Get-AzureInternalLoadBalancer -ServiceName $ServiceName).IPAddress
    
  2. Em uma das VMs, copie o script do PowerShell de seu sistema operacional em um editor de texto e defina as variáveis para os valores que você anotou anteriormente.

    Para o Windows Server 2012 ou posterior, use este script:

    # Define variables
    $ClusterNetworkName = "<MyClusterNetworkName>" # the cluster network name (Use Get-ClusterNetwork on Windows Server 2012 of higher to find the name)
    $IPResourceName = "<IPResourceName>" # the IP address resource name
    $ILBIP = "<X.X.X.X>" # the IP address of the ILB
    
    Import-Module FailoverClusters
    
    Get-ClusterResource $IPResourceName | Set-ClusterParameter -Multiple @{"Address"="$ILBIP";"ProbePort"="59999";"SubnetMask"="255.255.255.255";"Network"="$ClusterNetworkName";"EnableDhcp"=0}
    

    Para o Windows Server 2008 R2, use este script:

    # Define variables
    $ClusterNetworkName = "<MyClusterNetworkName>" # the cluster network name (Use Get-ClusterNetwork on Windows Server 2012 of higher to find the name)
    $IPResourceName = "<IPResourceName>" # the IP address resource name
    $ILBIP = "<X.X.X.X>" # the IP address of the ILB
    
    Import-Module FailoverClusters
    
    cluster res $IPResourceName /priv enabledhcp=0 address=$ILBIP probeport=59999  subnetmask=255.255.255.255
    
  3. Depois de definir as variáveis, abra uma janela elevada do Windows PowerShell, cole o script do editor de texto em sua sessão do PowerShell para executá-lo. Se o prompt ainda mostrar >> , pressione Enter novamente para ter certeza de que o script será executado.

  4. Repita as etapas anteriores para cada VM.
    Esse script configura o recurso de endereço IP com o endereço IP do serviço de nuvem e define outros parâmetros, como a porta de investigação. Quando o recurso de endereço IP é colocado online, ele pode responder à sondagem na porta de investigação do ponto de extremidade com balanceamento de carga criado anteriormente.

Coloque o ouvinte online

  1. No Gerenciador de Cluster de Failover, expanda funções e realce seu grupo de disponibilidade.

  2. Na guia Recursos , clique com o botão direito do mouse no nome do ouvinte e clique em Propriedades.

  3. Clique na guia Dependências . Se vários recursos estiverem listados, verifique se os endereços IP têm dependências OR, não AND.

  4. Clique em OK.

  5. Clique com o botão direito do mouse no nome do ouvinte e, em seguida, clique em Colocar online.

  6. Quando o ouvinte estiver online, na guia Recursos, clique com o botão direito do mouse no grupo de disponibilidade e clique em Propriedades.

    Configurar o recurso do grupo de disponibilidade

  7. Crie uma dependência no recurso de nome do ouvinte (não o nome de recursos de endereço IP) e, em seguida, clique em OK.

    Adicionar dependência ao nome do ouvinte

  8. Inicie o SQL Server Management Studio e conecte-se à réplica principal.

  9. Acesseos ouvintes do grupo de disponibilidadeAvailabilityGroupName>dos Grupos<> de Disponibilidade> AlwaysOn.>
    O nome do ouvinte que você criou no Gerenciador de Cluster de Failover deve ser exibido.

  10. Clique com o botão direito do mouse no nome do ouvinte e, em seguida, clique em Propriedades.

  11. Na caixa Porta, especifique o número da porta para o ouvinte do grupo de disponibilidade usando o $EndpointPort usado anteriormente (neste tutorial, 1433 era o padrão) e clique em OK.

Itens de acompanhamento

Após criar o ouvinte do grupo de disponibilidade, é possível que seja necessário ajustar os parâmetros do cluster RegisterAllProvidersIP e HostRecordTTL para o recurso do ouvinte. Esses parâmetros podem reduzir o tempo de reconexão após um failover, o que pode impedir as interrupções de conexão. Para obter mais informações sobre esses parâmetros, bem como um código de exemplo, consulte Criar ou configurar um ouvinte de grupo de disponibilidade.

Testar o ouvinte do grupo de disponibilidade (na mesma rede virtual)

Nesta etapa, você deve testar o ouvinte do grupo de disponibilidade usando um aplicativo cliente em execução na mesma rede.

Para a conectividade do cliente, observe os seguintes requisitos:

  • As conexões de cliente para o ouvinte devem vir de máquinas que residem em um serviço de nuvem diferente daquele que hospeda as réplicas de disponibilidade do AlwaysOn.
  • Se as réplicas do AlwaysOn estiverem em sub-redes diferentes, os clientes deverão especificar MultisubnetFailover=True na cadeia de conexão. Essa condição resulta em tentativas de conexão em paralelo para réplicas nas várias sub-redes. Observe que esse cenário inclui uma implantação de grupo de disponibilidade do AlwaysOn entre regiões.

Um exemplo é conectar-se ao ouvinte de uma das VMs na mesma rede virtual do Azure (mas não uma que hospeda uma réplica). Uma maneira fácil para concluir este teste é tentar conectar o SQL Server Management Studio ao ouvinte do grupo de disponibilidade. Outro método simples é executar SQLCMD.exe, da seguinte maneira:

sqlcmd -S "<ListenerName>,<EndpointPort>" -d "<DatabaseName>" -Q "select @@servername, db_name()" -l 15

Observação

Se o valor de EndpointPort é 1433, não é necessário especificá-lo na chamada. A chamada anterior também pressupõe que o computador do cliente está conectado ao mesmo domínio e que o chamador tem permissões no banco de dados usando a autenticação do Windows.

Ao testar o ouvinte, certifique-se de realizar failover ao grupo de disponibilidade para garantir que os clientes possam se conectar ao ouvinte através de failovers.

Próximas etapas

Além de conectar automaticamente os clientes com a réplica primária, um ouvinte pode ser usado para redirecionar cargas de trabalho apenas de leitura às secundárias. Esse uso pode melhorar o desempenho e a escalabilidade da sua solução geral. Para obter mais informações, consulte Usar o Roteamento de ReadIntebt com o ouvinte do grupo de disponibilidade AlwaysOn do Azure.

Observação

Para obter as dicas de solução de problemas sobre ouvintes do Azure, confira Troubleshooting Availability Group Listener in Azure (Solução de problemas de ouvintes do grupo de disponibilidade no Azure) no blog da Equipe de Suporte do AlwaysOn.

Para obter mais informações sobre como usar o SQL Server no Azure, consulte SQL Server em máquinas virtuais do Azure.