Temos um grupo de disponibilidade AlwaysOn de várias sub-redes. Existem 2 sub-redes e essas são listadas no cluster e também no ouvinte. Sempre que faço failover e pingo pelo nome do ouvinte, ele ainda mostra o endereço IP antigo antes do failover. Qualquer opinião de especialista para superar isso será muito apreciada. Eu configurei o RegisterAllProvidersIP -Value 1.
Após o failover, o cliente não se conecta porque o ouvinte está pegando o endereço IP antigo. Depois de alguns minutos, ele pega o correto e o cliente se conecta.
Esse comportamento ocorre devido ao tempo de vida (TTL) nos registros DNS. Um cliente não faz uma pesquisa de DNS toda vez que tenta se conectar a um servidor. Ele primeiro procura em seu cache DNS para ver se há uma entrada em cache. Você pode ver o que está no cache executando
ipconfig /displaydns
. Depois de executar isso, você verá a propriedade "Time To Live" em cada registro. Isso indica quantos segundos a mais o registro permanecerá em cache.Portanto, seu cliente não se conectará ao novo endereço IP até que o registro antigo tenha expirado no cache. Se você se aprofundar na documentação da Microsoft, eles recomendam definir o tempo de vida dos registros DNS do ouvinte para 5 minutos para minimizar esse atraso.
Além disso, se o cliente SQL em uso oferecer suporte a "failover de várias sub-redes", você precisará habilitar essa opção. Quando esta opção estiver habilitada, o cliente tentará se conectar a todos os endereços IP registrados para o nome do ouvinte. Portanto, para que isso funcione bem, você terá os dois endereços IP registrados para o nome do host do ouvinte o tempo todo.
Consulte Clustering de várias sub-redes do SQL Server (SQL Server)