Interoperabilidade de recursos com o AG e o ouvinte DNN
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.
Determinados recursos do SQL Server dependem de um VNN (nome de rede virtual) embutido em código. Dessa forma, se você usar o ouvinte DNN (nome de rede distribuída) com o grupo de disponibilidade Always On e o SQL Server em VMs do Azure em uma só sub-rede, poderá haver algumas considerações adicionais.
Este artigo detalha SQL Server recursos e a interoperabilidade com o ouvinte de DNN do grupo de disponibilidade.
Diferenças de comportamento
Há algumas diferenças importantes de comportamento entre a funcionalidade do ouvinte VNN e o ouvinte DNN que devem ser observadas:
- Tempo de failover: o tempo de failover é mais rápido ao usar um ouvinte DNN, pois não há necessidade de aguardar o balanceador de carga de rede detectar o evento de falha e alterar seu roteamento.
- Conexões existentes: as conexões feitas a um banco de dados específico, dentro de um grupo de disponibilidade de failover serão fechadas, mas outras conexões com a réplica primária permanecerão abertas, pois o DNN permanecerá aberto durante o processo de failover. Isso é diferente de um ambiente de VNN tradicional, em que todas as conexões com a réplica primária normalmente são fechadas quando o grupo de disponibilidade faz o failover, o ouvinte fica offline e a réplica primária faz a transição para a função secundária. Ao usar um ouvinte DNN, talvez seja necessário ajustar as cadeias de conexão do aplicativo para garantir que as conexões sejam redirecionadas para a nova réplica primária após o failover.
- Transações abertas: transações abertas em um banco de dados, em um grupo de disponibilidade, durante um failover, serão fechadas e revertidas, e você precisará se reconectar manualmente. Por exemplo, no SQL Server Management Studio, feche a janela de consulta e abra uma nova.
Drivers de cliente
No caso de drivers ODBC, OLEDB, ADO.NET, JDBC, PHP e Node.js, os usuários precisam especificar explicitamente o nome do ouvinte e porta DNN como o nome do servidor na cadeia de conexão. Para garantir a conectividade rápida em caso de failover, adicione MultiSubnetFailover=True
à cadeia de conexão, se a versão do cliente SQL oferecer suporte.
Ferramentas
Os usuários do SQL Server Management Studio, sqlcmd, Azure Data Studioe SQL Server Data Tools precisam especificar explicitamente o nome e porta do ouvinte de DNN como o nome do servidor na cadeia de conexão para conectar ao ouvinte.
No momento, não há suporte para a criação do ouvinte DNN por meio da GUI do SSMS (SQL Server Management Studio).
Grupos de disponibilidade e FCI
Você pode configurar um grupo de disponibilidade Always On usando uma instância de cluster de failover (FCI) como uma das réplicas. Para que essa configuração funcione com o ouvinte DNN, a instância de cluster de failover também deve usar o DNN, pois não há como colocar o endereço IP virtual FCI na lista de IPS do AG DNN.
Nessa configuração, a URL do ponto de extremidade de espelhamento para a réplica FCI deve usar o DNN FCI. Da mesma forma, se a FCI for usada como réplica somente leitura, o roteamento somente leitura para a réplica FCI precisará usar o DNN FCI.
O formato para o ponto de extremidade de espelhamento é: ENDPOINT_URL = 'TCP://<FCI DNN DNS name>:<mirroring endpoint port>'
.
Por exemplo, se o nome DNS DNN FCI for dnnlsnr
e 5022
for a porta do ponto de extremidade de espelhamento da FCI, o trecho de código Transact-SQL (T-SQL) para criação da URL do ponto de extremidade será semelhante a:
ENDPOINT_URL = 'TCP://dnnlsnr:5022'
Da mesma forma, o formato da URL de roteamento somente leitura é: TCP://<FCI DNN DNS name>:<SQL Server instance port>
.
Por exemplo, se o nome DNS do DNN for dnnlsnr
e 1444
for a porta usada pelo destino somente leitura da FCI do SQL Server, o trecho de código T-SQL para criação da URL de roteamento somente leitura terá esta aparência:
READ_ONLY_ROUTING_URL = 'TCP://dnnlsnr:1444'
Você pode omitir a porta na URL,no caso da porta padrão 1433. Para uma instância nomeada, configure uma porta estática para essa instância e especifique-a na URL de roteamento somente leitura.
Grupo de disponibilidade distribuído
Se seu ouvinte do grupo de disponibilidade estiver configurado com um DNN (nome de rede distribuído), não haverá suporte para a configuração de um grupo de disponibilidade distribuído na parte superior do grupo de disponibilidade.
Replicação
Replicação transacional, de mesclagem e de instantâneos, todos dão suporte à substituição do ouvinte VNN com a porta e o ouvinte DNN em objetos de replicação que se conectam ao ouvinte.
Para obter mais informações sobre como usar a replicação com grupos de disponibilidade, consulte Publisher e AG, subscriber e AG, e distribuidor e AG.
MSDTC
O MSDTC local e o de cluster são suportados, mas o MSDTC usa uma porta dinâmica, que requer um Azure Load Balancer padrão para configurar a porta de alta disponibilidade. Assim, a VM deve usar uma reserva de IP padrão ou não pode ser exposta à Internet.
Defina duas regras, uma para a porta 135 do mapeador de ponto de extremidade RPC e outra para a porta real do MSDTC. Após o failover, modifique a regra de LB para a nova porta MSDTC depois que ela for alterada no novo nó.
Se o MSDTC for local, certifique-se de permitir a comunicação de saída.
Consulta distribuída
A consulta distribuída depende de um servidor vinculado, que pode ser configurado usando o ouvinte e a porta do AG DNN. Se a porta não for 1433, escolha a opção usar outra fonte de dados no SQL Server Management Studio (SSMS) ao configurar o servidor vinculado.
FILESTREAM
FILESTREAM tem suporte, mas não para cenários em que os usuários acessam o compartilhamento de arquivos com escopo usando a API de arquivo do Windows.
FileTable
FileTable tem suporte, mas não para cenários em que os usuários acessam o compartilhamento de arquivos com escopo usando a API de arquivo do Windows.
Servidores vinculados
Configure o servidor vinculado usando o nome e a porta do ouvinte AG DNN. Se a porta não for 1433, escolha a opção usar outra fonte de dados no SQL Server Management Studio (SSMS) ao configurar o servidor vinculado.
Perguntas frequentes
Qual versão SQL Server traz suporte a ouvinte AG DNN?
SQL Server 2019 CU 8 e posteriores.
Qual é o tempo de failover esperado quando o ouvinte de DNN é usado?
Para o ouvinte DNN, o tempo de failover é o mesmo o tempo de failover da AG, sem nenhum outro tempo adicional (como o tempo de investigação quando você estiver usando Azure Load Balancer).
Há algum requisito de versão para clientes SQL para oferecer suporte a DNN com OLEDB e ODBC?
Recomendamos MultiSubnetFailover=True
o suporte de cadeia de conexão para o ouvinte DNN. Ele está disponível a partir do SQL Server 2012 (11.x).
Há alterações de configuração do SQL Server obrigatórias para usar o ouvinte DNN?
O SQL Server não requer alterações de configuração para usar DNN, mas alguns recursos do SQL Server podem exigir maior consideração.
O DNN oferece suporte a clusters de várias sub-redes?
Sim. O cluster associa o DNN no DNS aos endereços IP físicos de todas as réplicas no grupo de disponibilidade, qualquer que seja a sub-rede. O cliente SQL tenta todos os endereços IP do nome DNS, qualquer que seja a sub-rede.
O ouvinte DNN do grupo de disponibilidade dá suporte ao roteamento somente leitura?
Sim. O roteamento somente leitura tem suporte com o ouvinte DNN.