Partilhar via


Configurar um ouvinte DNN para um grupo de disponibilidade

Aplica-se a:SQL Server na VM do Azure

Gorjeta

Há muitos métodos para implantar um grupo de disponibilidade. Simplifique sua implantação e elimine a necessidade de um Balanceador de Carga do Azure ou DNN (nome de rede distribuída) para seu grupo de disponibilidade Always On criando suas máquinas virtuais (VMs) do SQL Server em várias sub-redes dentro da mesma rede virtual do Azure. Se você já criou seu grupo de disponibilidade em uma única sub-rede, pode migrá-lo para um ambiente de várias sub-redes.

Com o SQL Server em VMs do Azure em uma única sub-rede, o DNN (nome de rede distribuído) roteia o tráfego para o recurso clusterizado apropriado. Ele fornece uma maneira mais fácil de se conectar a um grupo de disponibilidade Always On (AG) do que o ouvinte de nome de rede virtual (VNN), sem a necessidade de um Balanceador de Carga do Azure.

Este artigo ensina você a configurar um ouvinte DNN para substituir o ouvinte VNN e rotear o tráfego para seu grupo de disponibilidade com o SQL Server em VMs do Azure para alta disponibilidade e recuperação de desastres (HADR).

Para uma opção de conectividade alternativa, considere um ouvinte VNN e o Azure Load Balancer .

Descrição geral

Um ouvinte DNN (nome de rede distribuída) substitui o ouvinte tradicional do grupo de disponibilidade de nome de rede virtual (VNN) quando usado com grupos de disponibilidade Always On em VMs do SQL Server. Isso anula a necessidade de um Balanceador de Carga do Azure para rotear o tráfego, simplificando a implantação, a manutenção e melhorando o failover.

Use o ouvinte DNN para substituir um ouvinte VNN existente ou, alternativamente, use-o em conjunto com um ouvinte VNN existente para que seu grupo de disponibilidade tenha dois pontos de conexão distintos - um usando o nome do ouvinte VNN (e porta, se não padrão) e outro usando o nome e a porta do ouvinte DNN.

Atenção

O comportamento de roteamento ao usar uma DNN difere ao usar uma VNN. Não utilize a porta 1433. Para saber mais, consulte a seção Consideração de porta mais adiante neste artigo.

Pré-requisitos

Antes de concluir as etapas neste artigo, você já deve ter:

  • SQL Server começando com SQL Server 2019 CU8 e posterior, SQL Server 2017 CU25 e posterior ou SQL Server 2016 SP3 e posterior no Windows Server 2016 e posterior.
  • Decidiu que o nome da rede distribuída é a opção de conectividade apropriada para sua solução HADR.
  • Configurado seu grupo de disponibilidade Always On.
  • Instalada a versão mais recente do PowerShell.
  • Identificada a porta exclusiva que você usará para o ouvinte DNN. A porta usada para um ouvinte DNN deve ser exclusiva em todas as réplicas do grupo de disponibilidade ou da instância de cluster de failover. Nenhuma outra conexão pode compartilhar a mesma porta.

Criar script

Use o PowerShell para criar o recurso DNN (nome de rede distribuído) e associá-lo ao seu grupo de disponibilidade.

Para o fazer, siga estes passos:

  1. Abra um editor de texto, como o Bloco de Notas.

  2. Copie e cole o seguinte script:

    param (
       [Parameter(Mandatory=$true)][string]$Ag,
       [Parameter(Mandatory=$true)][string]$Dns,
       [Parameter(Mandatory=$true)][string]$Port
    )
    
    Write-Host "Add a DNN listener for availability group $Ag with DNS name $Dns and port $Port"
    
    $ErrorActionPreference = "Stop"
    
    # create the DNN resource with the port as the resource name
    Add-ClusterResource -Name $Port -ResourceType "Distributed Network Name" -Group $Ag 
    
    # set the DNS name of the DNN resource
    Get-ClusterResource -Name $Port | Set-ClusterParameter -Name DnsName -Value $Dns 
    
    # start the DNN resource
    Start-ClusterResource -Name $Port
    
    
    $Dep = Get-ClusterResourceDependency -Resource $Ag
    if ( $Dep.DependencyExpression -match '\s*\((.*)\)\s*' )
    {
    $DepStr = "$($Matches.1) or [$Port]"
    }
    else
    {
    $DepStr = "[$Port]"
    }
    
    Write-Host "$DepStr"
    
    # add the Dependency from availability group resource to the DNN resource
    Set-ClusterResourceDependency -Resource $Ag -Dependency "$DepStr"
    
    
    #bounce the AG resource
    Stop-ClusterResource -Name $Ag
    Start-ClusterResource -Name $Ag
    
  3. Salve o script como um .ps1 arquivo, como add_dnn_listener.ps1.

Executar script

Para criar o ouvinte DNN, execute o script passando parâmetros para o nome do grupo de disponibilidade, nome do ouvinte e porta.

Por exemplo, supondo um nome de grupo de disponibilidade de , nome do ouvinte de ag1e porta do dnnlsnrouvinte como 6789, siga estas etapas:

  1. Abra uma ferramenta de interface de linha de comando, como prompt de comando ou PowerShell.

  2. Navegue até onde você salvou o .ps1 script, como c:\Documents.

  3. Execute o script: add_dnn_listener.ps1 <ag name> <listener-name> <listener port>. Por exemplo:

    c:\Documents> .\add_dnn_listener.ps1 ag1 dnnlsnr 6789
    

Verificar ouvinte

Use o SQL Server Management Studio ou o Transact-SQL para confirmar se o ouvinte DNN foi criado com êxito.

SQL Server Management Studio

Expanda Ouvintes do Grupo de Disponibilidade no SQL Server Management Studio (SSMS) para exibir seu ouvinte DNN:

View the DNN listener under availability group listeners in SQL Server Management Studio (SSMS)

Transact-SQL

Use Transact-SQL para exibir o status do ouvinte DNN:

SELECT * FROM SYS.AVAILABILITY_GROUP_LISTENERS

Um valor de for is_distributed_network_name indica que o ouvinte é um ouvinte DNN (nome de 1 rede distribuído):

Use sys.availability_group_listeners to identify DNN listeners that have a value of 1 in is_distributed_network_name

Atualizar cadeia de conexão

Atualize a cadeia de conexão para qualquer aplicativo que precise se conectar ao ouvinte DNN. A cadeia de conexão para o ouvinte DNN deve fornecer o número da porta DNN e especificar MultiSubnetFailover=True na cadeia de conexão. Se o cliente SQL não oferecer suporte ao MultiSubnetFailover=True parâmetro, ele não será compatível com um ouvinte DNN.

Segue-se um exemplo de uma cadeia de ligação para o nome do ouvinte DNN_Listener e porta 6789:

DataSource=DNN_Listener,6789;MultiSubnetFailover=True

Teste de ativação pós-falha

Teste o failover do grupo de disponibilidade para garantir a funcionalidade.

Para testar o failover, siga estas etapas:

  1. Conecte-se ao ouvinte DNN ou a uma das réplicas usando o SQL Server Management Studio (SSMS).
  2. Expanda Grupo de Disponibilidade Always On no Pesquisador de Objetos.
  3. Clique com o botão direito do mouse no grupo de disponibilidade e escolha Failover para abrir o Assistente de Failover.
  4. Siga as instruções para escolher um destino de failover e fazer o failover do grupo de disponibilidade em uma réplica secundária.
  5. Confirme se o banco de dados está em um estado sincronizado na nova réplica primária.
  6. (Opcional) Failback para a réplica primária original ou outra réplica secundária.

Testar conectividade

Teste a conectividade com seu ouvinte DNN com estas etapas:

  1. Abra o SQL Server Management Studio.
  2. Conecte-se ao seu ouvinte DNN.
  3. Abra uma nova janela de consulta e verifique a qual réplica você está conectado executando SELECT @@SERVERNAMEo .
  4. Faça failover do grupo de disponibilidade para outra réplica.
  5. Após um período de tempo razoável, execute SELECT @@SERVERNAME para confirmar que seu grupo de disponibilidade agora está hospedado em outra réplica.

Limitações

  • Os ouvintes DNN DEVEM ser configurados com uma porta exclusiva. A porta não pode ser compartilhada com nenhuma outra conexão em nenhuma réplica.
  • O cliente que se conecta ao ouvinte DNN deve suportar o MultiSubnetFailover=True parâmetro na cadeia de conexão.
  • Pode haver considerações adicionais quando você estiver trabalhando com outros recursos do SQL Server e um grupo de disponibilidade com uma DNN. Para obter mais informações, consulte AG com interoperabilidade DNN.

Considerações sobre a porta

Os ouvintes DNN são projetados para ouvir em todos os endereços IP, mas em uma porta específica e exclusiva. A entrada DNS para o nome do ouvinte deve ser resolvida para os endereços de todas as réplicas no grupo de disponibilidade. Isso é feito automaticamente com o script do PowerShell fornecido na seção Criar Script . Como os ouvintes DNN aceitam conexões em todos os endereços IP, é fundamental que a porta do ouvinte seja exclusiva e não esteja em uso por qualquer outra réplica no grupo de disponibilidade. Como o SQL Server escuta na porta 1433 por padrão, diretamente ou por meio do serviço Navegador SQL, o uso da porta 1433 para o ouvinte DNN é fortemente desencorajado.

Se a porta do ouvinte escolhida para o ouvinte VNN estiver entre 49.152 e 65.536 (o intervalo de portas dinâmicas padrão para TCP/IP, adicione uma exclusão para isso. Isso evitará que outros sistemas recebam dinamicamente a mesma porta.

Você pode adicionar uma exclusão de porta com o seguinte comando: netsh int ipv4 add excludedportrange tcp startport=<Listener Port> numberofports=1 store=persistent

Próximos passos

Depois que o grupo de disponibilidade for implantado, considere otimizar as configurações de HADR para o SQL Server em VMs do Azure.

Para saber mais, consulte: