![](https://static.wixstatic.com/media/efe4c3_73f0eca769854f1dacc1a2624d9b4d94~mv2.png/v1/fill/w_74,h_49,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/efe4c3_73f0eca769854f1dacc1a2624d9b4d94~mv2.png)
Por: Fábio Oliveira
Neste artigo vou explicar sobre esta feature do Azure para realizar conexões no Availability Groups através de um Listener somente com a porta configurada.
Mas antes quero saber de você, olhando para o print abaixo, esse Listener funciona ou não funciona? Cadê meu IP Address?
![](https://static.wixstatic.com/media/efe4c3_6315d10a2ca74866bf754117cc09d8ef~mv2.png/v1/fill/w_74,h_26,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/efe4c3_6315d10a2ca74866bf754117cc09d8ef~mv2.png)
Recentemente estava subindo um ambiente de teste com AlwaysOn Availability Groups no Azure, e lendo a documentação me deparei com uma feature chamada DNN (Dynamic Network Names), onde a partir do SQL Server 2019 Cumulative Update 8, num Windows Server 2016 temos a possibilidade de substituir a configuração convencional do Listener no Azure (Com Load Balancer, associando IP e etc) para uma configuração que precisa somente de uma porta disponível.
Outros pré-requisitos:
A porta deve ser única entre todas as réplicas do AlwaysOn, nenhuma outra conexão pode compartilhar a mesma porta.
A aplicação tem que suportar o parâmetro MultiSubnetFailover=True na connection string.
Como ele consegue realizar o roteamento do tráfego? Ao criarmos o DNN, internamente ele associa os IPs dos meus nós do AlwaysOn ao nome do Listener:
![](https://static.wixstatic.com/media/efe4c3_69754fc82bcf4d488bbf4301289fa9f3~mv2.png/v1/fill/w_119,h_47,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/efe4c3_69754fc82bcf4d488bbf4301289fa9f3~mv2.png)
O ponto forte desta feature é que eliminando o Load Balancer na teoria diminuímos o tempo de failover.
Aqui temos o ambiente configurado:
![](https://static.wixstatic.com/media/efe4c3_4fd98478104f40ba9c455313dbc13528~mv2.png/v1/fill/w_54,h_49,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/efe4c3_4fd98478104f40ba9c455313dbc13528~mv2.png)
De dentro do meu servidor primário, realizei a conexão com o Listener:
![](https://static.wixstatic.com/media/efe4c3_7c810b4b2a8348cda23d4091a0871bc7~mv2.png/v1/fill/w_74,h_30,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/efe4c3_7c810b4b2a8348cda23d4091a0871bc7~mv2.png)
Farei o mesmo teste de dentro do meu servidor secundário:
![](https://static.wixstatic.com/media/efe4c3_1985e5e86a094c53a20e94d52b7a2c0a~mv2.png/v1/fill/w_74,h_31,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/efe4c3_1985e5e86a094c53a20e94d52b7a2c0a~mv2.png)
Como assim? Não tenho rota de leitura configurada e muito menos especifiquei o parâmetro -K ReadOnly, esse trem funciona mesmo?
Outro pré-requisito é que especifiquemos o nome do Listener mais a porta para que funcione de forma correta o roteamento:
![](https://static.wixstatic.com/media/efe4c3_deb0b87a8bd44f20bf9c9902609a6c16~mv2.png/v1/fill/w_74,h_29,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/efe4c3_deb0b87a8bd44f20bf9c9902609a6c16~mv2.png)
E como realizo a configuração do meu Listener com DNN? A própria Microsoft disponibiliza um Powershell neste link, onde passamos apenas o nome do grupo de disponibilidade, o nome do listener e a porta a ser utilizada.
Espero que tenham gostado e que como pra mim, seja uma novidade para vocês também.
Até a próxima.
Fontes: Configure DNN listener for availability group – SQL Server on Azure VM | Microsoft DocsFeature interoperability with availability groups and DNN listener – SQL Server on Azure VM | Microsoft DocsTutorial: Configure a SQL Server Always On availability group – SQL Server on Azure VM | Microsoft Docs