Configure um ouvinte ILB para grupos de disponibilidade em VMs do servidor SQL do Azure

Descrição Geral

Importante

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

Para configurar um ouvinte para um grupo de disponibilidade Always On no modelo Resource Manager, consulte configurar um equilibrador de carga para um grupo de disponibilidade Always On em Azure.

O seu grupo de disponibilidade pode conter réplicas que são apenas no local ou apenas Azure, ou que se estendem tanto no local como no Azure para configurações híbridas. Réplicas azure podem residir dentro da mesma região ou em várias regiões que usam várias redes virtuais. Os procedimentos deste artigo pressupõem que já configuraste um grupo de disponibilidade , mas ainda não configuraste um ouvinte.

Diretrizes e limitações para os ouvintes internos

A utilização de um equilibrador interno de carga (ILB) com um ouvinte de grupo de disponibilidade em Azure está sujeita às seguintes orientações:

  • O ouvinte do grupo de disponibilidade é suportado no Windows Server 2008 R2, Windows Server 2012 e Windows Server 2012 R2.
  • Apenas um ouvinte de grupo de disponibilidade interna é suportado para cada serviço de nuvem, porque o ouvinte está configurado para o ILB, e há apenas um ILB para cada serviço na nuvem. No entanto, é possível criar vários ouvintes externos. Para obter mais informações, consulte configurar um ouvinte externo para grupos de disponibilidade Always On em Azure.

Determinar a acessibilidade do ouvinte

É importante perceber que há duas formas de configurar um ouvinte de grupo de disponibilidade em Azure. As formas diferem no tipo de equilibrador de carga Azure que utiliza quando cria o ouvinte. A tabela a seguir descreve as diferenças:

Tipo de balançador de carga Implementação Utilize se:
Externo Utiliza o endereço IP virtual público do serviço de nuvem que acolhe as máquinas virtuais (VMs). Tem de aceder ao ouvinte de fora da rede virtual, incluindo a partir da Internet.
Interno Utiliza um equilibrador de carga interno com um endereço privado para o ouvinte. Só pode aceder ao ouvinte dentro da mesma rede virtual. Este acesso inclui VPN site-to-site em cenários híbridos.

Importante

Para um ouvinte que utiliza o VIP público do serviço de nuvem (equilibrador de carga externo), desde que o cliente, ouvinte e bases de dados estejam na mesma região de Azure, não irá incorrer em encargos de erupção. Caso contrário, qualquer dado devolvido através do ouvinte é considerado saída, e é cobrado a taxas normais de transferência de dados.

Um ILB só pode ser configurado em redes virtuais com âmbito regional. As redes virtuais existentes que foram configuradas para um grupo de afinidade não podem utilizar um ILB. Para obter mais informações, consulte a visão geral do balançador de carga interna.

Este artigo centra-se na criação de um ouvinte que usa um ILB. Se precisar de um ouvinte público ou externo, consulte a versão deste artigo que discute a criação de um ouvinte externo.

Criar pontos finais VM equilibrados em carga com retorno direto do servidor

Primeiro cria-se um ILB executando o script mais tarde nesta secção.

Crie um ponto final equilibrado para cada VM que acolhe uma réplica Azure. Se 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 Azure. A criação de réplicas de grupos de disponibilidade que abrangem várias regiões do Azure requer a configuração de várias redes virtuais. Para obter mais informações sobre a configuração da conectividade da rede virtual transversal, consulte a rede virtual Configure para a conectividade da rede virtual.

  1. No portal do Azure, vá a cada VM que acolhe uma réplica para ver os detalhes.

  2. Clique no separador Pontos finais para cada VM.

  3. Verifique se o Nome e a Porta Pública do ponto final do ouvinte que pretende utilizar ainda não estão a ser utilizados. No exemplo nesta secção, o nome é MyEndpoint, e a porta é 1433.

  4. No seu cliente local, descarregue e instale o mais recente módulo PowerShell.

  5. Comece Azure PowerShell.
    Abre uma nova sessão PowerShell, com os módulos administrativos Azure carregados.

  6. Execute Get-AzurePublishSettingsFile. Este cmdlet direciona-o para um navegador para descarregar um ficheiro de configurações de publicação para um diretório local. Pode ser solicitado para as suas credenciais de inscrição para a sua assinatura Azure.

  7. Execute o seguinte Import-AzurePublishSettingsFile comando com o caminho do ficheiro de definições de publicação que descarregou:

    Import-AzurePublishSettingsFile -PublishSettingsFile <PublishSettingsFilePath>
    

    Depois de importado o ficheiro de definições de publicação, pode gerir a sua subscrição Azure na sessão PowerShell.

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

    (Get-AzureVNetConfig).XMLConfiguration
    
  9. Note o nome sub-rede para a sub-rede que contém os VMs que acolhem as réplicas. Este nome é usado no parâmetro $SubnetName no script.

  10. Note o nome VirtualNetworkSite e o AddressPrefix inicial para a sub-rede que contém os VMs que acolhem as réplicas. Procure um endereço IP disponível, passando os dois valores para o Test-AzureStaticVNetIP comando e examinando os Endereços Existentes. Por exemplo, se a rede virtual for denominada MyVNet e tiver um intervalo de endereços de sub-rede que começa em 172.16.0.128, o seguinte comando listaria 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 no passo seguinte.

  12. Copie o seguinte script PowerShell para um editor de texto e desaprote os valores variáveis de acordo com o seu ambiente. Foram previstos incumprimentos para alguns parâmetros.

    As implementações existentes que utilizam grupos de afinidade não podem adicionar um ILB. Para obter mais informações sobre os requisitos do ILB, consulte a visão geral do balançador de carga interna.

    Além disso, se o seu grupo de disponibilidade abrange as regiões Azure, deve executar o script uma vez em cada datacenter para o serviço de nuvem e nós que residem nesse 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 a sua sessão PowerShell para executá-lo. Se a solicitação ainda aparecer >>, prima Enter novamente para se certificar de que o script começa a funcionar.

Verifique se o KB2854082 está instalado se necessário

Em seguida, se algum servidor do cluster estiver a executar o Windows Server 2008 R2 ou Windows Server 2012, deve verificar se o hotfix KB2854082 está instalado em cada um dos servidores no local ou VMs Azure que fazem parte do cluster. Qualquer servidor ou VM que esteja no cluster, mas não no grupo de disponibilidade, também deve ter este hotfix instalado.

Na sessão de desktop remota para cada um dos nós do cluster, baixe O KB2854082 para um diretório local. Em seguida, instale o hotfix em cada nó de aglomerado sequencialmente. Se o serviço de cluster estiver atualmente em funcionamento no nó de cluster, o servidor é reiniciado no final da instalação do hotfix.

Aviso

Parar o serviço de cluster ou reiniciar o servidor afeta a saúde do quórum do seu cluster e do grupo de disponibilidade, e pode fazer com que o seu cluster fique offline. Para manter a elevada disponibilidade do seu cluster durante a instalação, certifique-se de que:

  • O cluster está na saúde ideal do quórum.
  • 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ó no conjunto, deixe que a instalação do hotfix seja concluída até ao final de um nó, incluindo reiniciar completamente o servidor.

Abra as portas de firewall em nosmos de grupo de disponibilidade

Neste passo, cria-se uma regra de firewall para abrir a porta da sonda para o ponto final equilibrado de carga (59999, conforme especificado anteriormente) e outra regra para abrir a porta de ouvintes do grupo de disponibilidade. Como criou o ponto final equilibrado de carga nos VMs que contêm réplicas de grupo de disponibilidade, precisa de abrir a porta da sonda e a porta do ouvinte nos respetivos VMs.

  1. Em VMs que acolhem réplicas, inicie o Windows Firewall com Segurança Avançada.

  2. Clique em Regras de Entrada à Direita e, em seguida, clique em Nova Regra.

  3. Na página 'Tipo regra' , selecione Porta e, em seguida, clique em Seguinte.

  4. Na página Protocolo e Portas , selecione TCP, tipo 59999 na caixa de portas locais específica e, em seguida, clique em Seguinte.

  5. Na página Ação , mantenha a ligação selecionada e, em seguida, clique em Seguinte.

  6. Na página 'Perfil' , aceita as definições predefinidos e, em seguida, clica em Seguinte.

  7. Na página Nome , na caixa de texto 'Nome' , especificar um nome de regra, como "Sempre No Ouvinte" e, em seguida, clicar em Terminar.

  8. Repita os passos anteriores para a porta de escuta do grupo de disponibilidade (conforme especificado no parâmetro $EndpointPort do script) e, em seguida, especifique um nome de regra apropriado, como Always On Listener Port.

Criar o ouvinte do grupo de disponibilidade

Crie o ouvinte do grupo de disponibilidade em dois passos. Em primeiro lugar, crie o recurso de cluster de pontos de acesso ao cliente e configuure dependências. Segundo, configure os recursos de cluster na PowerShell.

Crie o ponto de acesso ao cliente e configuure as dependências do cluster

Neste passo, cria manualmente o ouvinte do grupo de disponibilidade no Failover Cluster Manager e SQL Server Management Studio.

  1. Open Failover Cluster Manager a partir do nó que acolhe a réplica primária.

  2. Selecione o nó 'Redes ' e, em seguida, observe o nome da rede de cluster. Este nome é usado na variável $ClusterNetworkName no script PowerShell.

  3. Expanda o nome do cluster e, em seguida, clique em Papéis.

  4. No painel Roles, clique com o botão direito no nome do grupo de disponibilidade e, em seguida, selecione AdicionarPonto de Acesso ao Clientede Recurso>.

    Adicionar ponto de acesso ao cliente para o grupo de disponibilidade

  5. Na caixa Nome , crie um nome para este novo ouvinte, clique em Next duas vezes e, em seguida, clique em Terminar.
    Não leve o ouvinte ou o recurso on-line neste momento.

  6. Clique no separador Recursos e, em seguida, expanda o ponto de acesso ao cliente que acabou de criar. É apresentado o recurso de endereço IP para cada rede de clusters do seu cluster. Se esta for uma solução apenas para o Azure, apenas é apresentado um recurso de endereço IP.

  7. Efetue um dos seguintes procedimentos:

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

      a. Clique com o botão direito no recurso de endereço IP que corresponde à sua sub-rede no local e, em seguida, selecione Propriedades. Note o nome do endereço IP e o nome da rede.

      b. Selecione O Endereço IP estático, atribua um endereço IP não uusado e, em seguida, clique em OK.

    • Para configurar uma solução apenas azure:

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

      Nota

      Se o ouvinte mais tarde não ficar on-line devido a um endereço IP conflituoso selecionado pela DHCP, pode configurar um endereço IP estático válido nesta janela de propriedades.

      b. Na mesma janela de propriedades do endereço IP , altere o Nome do Endereço IP.
      Este nome é usado na variável $IPResourceName do script PowerShell. Se a sua solução abranger várias redes virtuais Azure, repita este passo para cada recurso IP.

Configure os recursos de cluster na PowerShell

  1. Para o ILB, deve utilizar o endereço IP do ILB que foi criado anteriormente. Para obter este endereço IP no PowerShell, utilize o seguinte script:

    # Define variables
    $ServiceName="<MyServiceName>" # the name of the cloud service that contains the AG nodes
    (Get-AzureInternalLoadBalancer -ServiceName $ServiceName).IPAddress
    
  2. Num dos VMs, copie o script PowerShell para o seu sistema operativo para um editor de texto e, em seguida, defina as variáveis para os valores que observou anteriormente.

    Para Windows Server 2012 ou posterior, utilize o seguinte 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 Windows Server 2008 R2, utilize o seguinte 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 de Windows PowerShell elevada, cole o script do editor de texto na sua sessão PowerShell para executá-lo. Se a solicitação ainda aparecer >>, prima enter novamente para se certificar de que o script começa a funcionar.

  4. Repita os passos anteriores para cada VM.
    Este 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 da sonda. Quando o recurso de endereço IP é trazido on-line, pode responder à votação na porta da sonda a partir do ponto final equilibrado de carga que criou anteriormente.

Traga o ouvinte on-line

  1. Em Failover Cluster Manager, expanda as funções e, em seguida, realce o seu grupo de disponibilidade.

  2. No separador Recursos , clique com o botão direito no nome do ouvinte e, em seguida, clique em Propriedades.

  3. Clique no separador Dependências . Se vários recursos estiverem listados, verifique se os endereços IP têm ou, não E, dependências.

  4. Clique em OK.

  5. Clique com o botão direito no nome do ouvinte e, em seguida, clique em Bring Online.

  6. Depois de o ouvinte estar online, no separador Recursos , clique com o botão direito no grupo de disponibilidade e, em seguida, clique em Propriedades.

    Configure o recurso do grupo de disponibilidade

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

    Adicione dependência do nome do ouvinte

  8. Comece SQL Server Management Studio e, em seguida, ligue-se à réplica primária.

  9. Vá a AlwaysOn High Availability>Availability Grupos><AvailabilityGroupName>>Availability Availability Group.
    O nome de ouvinte que criou no Failover Cluster Manager deve ser apresentado.

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

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

Artigos de acompanhamento

Depois de criar o ouvinte do grupo de disponibilidade, poderá ser necessário ajustar os parâmetros do cluster RegisterAllProvidersIP e HostRecordTTL para o recurso do ouvinte. Estes parâmetros podem reduzir o tempo de reconexão após uma falha, o que pode impedir intervalos de ligação. Para obter mais informações sobre estes parâmetros, bem como o código de amostra, consulte Criar ou configurar um ouvinte de grupo de disponibilidade.

Teste o ouvinte do grupo de disponibilidade (dentro da mesma rede virtual)

Neste passo, você testa o ouvinte do grupo de disponibilidade usando uma aplicação de cliente que está executando na mesma rede.

A conectividade do cliente tem os seguintes requisitos:

  • As ligações do cliente ao ouvinte devem vir de máquinas que residem num serviço de nuvem diferente daquele que acolhe as réplicas de disponibilidade Always On.
  • Se as réplicas Always On estiverem em sub-redes diferentes, os clientes devem especificar MultisubnetFailover=True na cadeia de ligação. Esta condição resulta em tentativas de ligação paralelas a réplicas nas várias subesí redes. Este cenário inclui uma implantação de grupo cross-region Always On availability.

Um exemplo é ligar ao ouvinte de um dos VMs na mesma rede virtual Azure (mas não um que acolhe uma réplica). Uma maneira fácil de completar este teste é tentar ligar SQL Server Management Studio ao ouvinte do grupo de disponibilidade. Outro método simples é executar SQLCMD.exe, da seguinte forma:

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

Nota

Se o valor EndpointPort for de 1433, não é obrigado a especiá-lo na chamada. A chamada anterior também pressupõe que a máquina do cliente está unida ao mesmo domínio e que o chamador recebeu permissões na base de dados utilizando a autenticação do Windows.

Ao testar o ouvinte, certifique-se de que falha sobre o grupo de disponibilidade para se certificar de que os clientes podem ligar-se ao ouvinte através de falhas.

Passos seguintes

Além de ligar automaticamente os clientes à réplica primária, um ouvinte pode ser usado para redirecionar cargas de trabalho apenas de leitura para os secundários. Esta utilização pode melhorar o desempenho e a escalabilidade da sua solução global. Para obter mais informações, consulte o ReadIntent Encaminhamento com Azure Always On availability group listener.

Nota

Para obter dicas sobre os ouvintes do Azure, consulte o ouvinte do grupo de resolução de problemas em Azure no blog AlwaysOn Support Team.

Para obter mais informações sobre a utilização de SQL Server em Azure, consulte SQL Server em máquinas virtuais Azure.