Temos um multisegment AG Listener nomeado SQLAGL01
que aponta para estes dois endereços: 10.143.162.32 (o servidor primário) 10.140.165.32 (servidor DR)
Como o software de aplicativo de terceiros (o que significa que não podemos corrigi-lo e não, não podemos migrar para outra coisa) usa drivers antigos que não suportam MultiSubnetFailover=True
, estamos vendo problemas em que os relatórios falham na metade do tempo porque SQLAGL01
resolve o endereço DR 10.140.165.32.
Seguindo os documentos da Microsoft , definimos RegisterAllProvidersIP=0
e reiniciamos o cluster. No entanto, SQLAGL01
ainda resolve para o endereço DR metade do tempo.
No Gerenciador de Cluster de Failover, o nó proprietário do Ouvinte AG é o servidor primário e o endereço DR está offline . (Isso é normal?)
Aqui está uma captura de tela da função do cluster:
EDIT: RegisterAllProvidersIP
valor agregado.
PS C:\windows\system32> get-clusterresource "Cluster Name" | Get-ClusterParameter RegisterAllProvidersIP
Object Name Value Type
------ ---- ----- ----
Cluster Name RegisterAllProvidersIP 0 UInt32
EDIT 2: Adicionados valores de recursos de cluster AG. Não parece haver um RegisterAllProvidersIP
recurso para o AG Listener.
EDIT 3: Adicionado o valor real do recurso Listener.
PS C:\windows\system32> get-clusterresource KYHIXSQLAGL01_KYHIXSQLAGL01 | Get-ClusterParameter RegisterAllProvidersIP
Object Name Value Type
------ ---- ----- ----
KYHIXSQLAGL01_KYHIXSQLAGL01 RegisterAllProvidersIP 1 UInt32
Na sua pergunta, você incluiu a seguinte verificação para validar que definiu
RegisterAllProvidersIP
como false:Se você usou o nome do cluster , então você definiu o
RegisterAllProvidersIP
parâmetro no objeto errado.Existem vários objetos com nomes semelhantes em sua captura de tela:
WC01
AG01
AGListener01
Para validar como a configuração é definida, você deve usar o nome do ouvinte e não o nome do cluster ou do AG:
Ou, para fazer isso um pouco mais passo a passo, você pode fazer
Get-ClusterResource
e verá algo assim:De todas essas coisas, nos preocupamos apenas com os objetos que pertencem ao OwnerGroup para o AG. Podemos filtrar um pouco mais com
Get-ClusterResource | Where OwnerGroup -eq AG01
:Esses 4 itens representam os recursos que compõem meu AG: o próprio AG, o ouvinte (listado como "Nome da rede") e os dois endereços IP, cada um em sub-redes diferentes.
O item que eu quero verificar para o
RegisterAllProvidersIP
parâmetro é o recurso listener (Network name):Get-ClusterResource AGListener01 | Get-ClusterParameter
vai me dar a lista completa de parâmetros no objeto Listener:E eu posso obter o parâmetro específico pedindo explicitamente por ele
Get-ClusterResource AGListener01 | Get-ClusterParameter RegisterAllProvidersIP
Se não estiver definido como 0, você precisará usar o bloco de código descrito nos documentos e ter certeza de que está usando o nome do ouvinte e não o nome do cluster . O exemplo também recomenda definir o TTL (escolher um número exato é com você, embora os documentos sugiram 300 segundos). Observe que off-line e on-line o Listener é necessário para que as novas configurações sejam selecionadas pelo nome DNS:
Depois que isso for feito (e o TTL antigo expirou), você poderá ver que o Lister tem apenas um único endereço IP configurado:
Acredito que você esteja na configuração de cluster de failover de várias sub-redes. Isso é provavelmente você tem primário em um site e DR em outro.
Se for esse o caso, até onde eu saiba, outro IP de sub-rede sempre será exibido offline.
Também não tenho certeza se você tentou colocar manualmente online e obter esse erro. Se você puder atualizar sua pergunta com a configuração de várias sub-redes, caso seja ou não, provavelmente gostaria de colar mais detalhes do que está fazendo quando estiver recebendo esse erro durante o failover
Vou atualizar minha resposta com base nisso