Configurar um ouvinte DNN para um grupo de disponibilidade
Aplica-se a: SQL Server na VM do Azure
Dica
Há vários métodos de implantação de um grupo de disponibilidade. Simplifique sua implantação sem precisar usar o Azure Load Balancer ou DNN (nome de rede distribuída) para seu grupo de disponibilidade Always On criando suas VMs (máquinas virtuais) do SQL Server em várias sub-redes dentro da mesma rede virtual do Azure. Se você já tiver criado seu grupo de disponibilidade em uma única sub-rede, poderá migrá-lo para um ambiente de várias sub-redes.
Com o SQL Server em VMs do Azure, o DNN (nome de rede distribuída) encaminha o tráfego para o recurso clusterizado apropriado. Ele fornece uma maneira mais fácil de se conectar a um AG (grupo de disponibilidade Always On) do que o ouvinte VNN (nome de rede virtual), sem a necessidade de um Azure Load Balancer.
Este artigo ensina a configurar um ouvinte de DNN para substituir o ouvinte VNN e rotear o tráfego para seu grupo de disponibilidade com SQL Server em VMs do Azure para alta disponibilidade e recuperação de desastres (HADR).
Para obter uma opção de conectividade alternativa, considere um ouvinte VNN e Azure Load Balancer em vez disso.
Visão geral
Um ouvinte DNN (nome de rede distribuída) substitui o ouvinte do grupo de disponibilidade VNN (nome de rede virtual) tradicional quando usado com grupos de disponibilidade Always on em VMs SQL Server. Isso nega a necessidade de um Azure Load Balancer rotear o tráfego, simplificar a implantação, a manutenção e melhorar o failover.
Use o ouvinte DNN para substituir um ouvinte VNN existente ou, como alternativa, use-o em conjunto com um ouvinte VNN existente para que o seu grupo de disponibilidade tenha dois pontos de conexão distintos: um que usa o nome do ouvinte VNN (e a porta, se ela não for padrão) e outro que usa o nome e a porta do ouvinte DNN.
Cuidado
O comportamento de roteamento ao usar um DNN difere ao usar um VNN. Não use a porta 1433. Para saber mais, confira a seção Consideração sobre portas posteriormente neste artigo.
Pré-requisitos
Para realizar as etapas deste artigo, você já deve ter:
- SQL Server a partir do 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.
- Decidido que o nome de rede distribuída é a melhor opção de conectividade para sua solução HADR.
- Configurou seu grupos de Disponibilidade AlwaysOn.
- Instalada a versão mais recente do PowerShell.
- Identificada a porta exclusiva que será usada 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.
Observação
Quando você tem vários AGs ou FCIs no mesmo cluster e usa um ouvinte DNN ou VNN, cada AG ou FCI precisa de seu próprio ponto de conexão independente.
Criar script
Use o PowerShell para criar o recurso DNN (nome de rede distribuída) e associá-lo ao seu grupo de disponibilidade.
Para fazer isso, siga estas etapas:
Abra um editor de texto, como o Bloco de Notas.
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
Salve o script como um arquivo
.ps1
, por exemploadd_dnn_listener.ps1
.
Executar script
Para criar o ouvinte DNN, execute o script passando parâmetros para o nome do grupo de disponibilidade, o nome do ouvinte e a porta.
Por exemplo, supondo que um nome de grupo de disponibilidade ag1
, o nome do ouvinte dnnlsnr
e a porta do ouvinte como 6789
, siga estas etapas:
Abra uma ferramenta de interface de linha de comando, como o prompt de comando ou o PowerShell.
Navegue até onde você salvou o
.ps1
script, como c:\Documents.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 do DNN foi criado com êxito.
SQL Server Management Studio
Expanda os ouvintes do grupo de disponibilidade no SQL Server Management Studio (SSMS) para exibir o ouvinte de DNN:
Transact-SQL
Use o Transact-SQL para exibir o status do ouvinte DNN:
SELECT * FROM SYS.AVAILABILITY_GROUP_LISTENERS
Um valor de 1
para is_distributed_network_name
indica que o ouvinte é um ouvinte de DNN (nome de rede distribuída):
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 SQL cliente não for compatível com o parâmetro MultiSubnetFailover=True
, ele não será compatível com um ouvinte DNN.
Veja o seguinte exemplo de uma cadeia de conexão para o nome de ouvinte DNN_Listener e porta 6789:
DataSource=DNN_Listener,6789;MultiSubnetFailover=True
Failover de Teste
Teste o failover do grupo de disponibilidade para garantir a funcionalidade.
Para testar o failover, siga estas etapas:
- Conecte-se ao ouvinte DNN ou a uma das réplicas usando SQL Server Management Studio (SSMS).
- Expanda Grupos de Disponibilidade Always On no Pesquisador de Objetos.
- Clique com o botão direito do mouse no grupo de disponibilidade e escolha Failover para abrir o Assistente de Failover.
- Siga os prompts para escolher um destino de failover e fazer failover do grupo de disponibilidade para uma réplica secundária.
- Confirme se o banco de dados está em um estado sincronizado na nova réplica primária.
- (Opcional) Fail back para o primário original ou outra réplica secundária.
Testar a conectividade
Teste a conectividade com o ouvinte DNN com estas etapas:
- Abra o SQL Server Management Studio.
- Conecte-se ao ouvinte DNN.
- Abra uma nova janela de consulta e verifique a qual réplica você está conectado executando
SELECT @@SERVERNAME
. - Fazer fail do grupo de disponibilidade para outra réplica.
- Após um período razoável, execute para
SELECT @@SERVERNAME
confirmar se o grupo de disponibilidade agora está hospedado em outra réplica.
Limitações
- 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 dar suporte ao
MultiSubnetFailover=True
parâmetro na cadeia de conexão. - Pode haver novas questões quando você estiver trabalhando com outros recursos do SQL Server e uma FCI com um DNN. Para obter mais informações, consulte AG com interoperabilidade do DNN.
Considerações sobre potras
Os ouvintes DNN são projetados para escutar 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, é essencial que a porta do ouvinte seja exclusiva e não seja usada por nenhuma 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 SQL Browser, não é recomendado usar essa porta para o ouvinte DNN.
Se a porta do ouvinte escolhida para o ouvinte VNN estiver entre 49.152 e 65.536 (o intervalo de porta dinâmica padrão para TCP/IP, adicione uma exclusão para isso. Isso impedirá que outros sistemas sejam atribuídos dinamicamente à 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óximas etapas
Depois que o grupo de disponibilidade for implantado, considere otimizar as Configurações de HADR para o SQL Server em VMs do Azure.
Para obter mais informações, consulte: