AlwaysOn AG, DTC com failover

14

Problema: Como executar o DTC (Coordenador de transações distribuídas) em todos os servidores em um grupo de disponibilidade AlwaysOn (AG)? NÃO preciso manter transações por eventos de failover / alternância.

Instalação: Eu tenho um WSFC (Windows Failover Cluster) com três servidores Windows 2008 R2 em que todos executam o SQL 2012. Dois servidores estão em um datacenter e fazem parte de um FCI (AlwaysOn Failover Cluster), enquanto o terceiro servidor está em um segundo data center. O WSFC é um cluster de várias sub-redes. Aqui está um esboço da configuração: insira a descrição da imagem aqui

Consegui instalar e configurar o DTC para funcionar entre os dois nós do FCI, porque eles estão na mesma sub-rede e compartilham armazenamento. Eu configurei alguns AGs e eles estão funcionando bem. Esta captura de tela mostra o DTC instalado no FCI:

insira a descrição da imagem aqui

Esta captura de tela mostra que eu posso configurar o DTC em um dos nós do FCI (o que estiver ativo): insira a descrição da imagem aqui

Eu gostaria de migrar um aplicativo que usa o DTC para esse cluster e use um AG. Eu li que o DTC não é suportado com AGs ( referência ). Não consegui encontrar uma maneira de configurar o DTC no terceiro nó no segundo data center. Quando tento configurar o DTC no terceiro nó, ele parece estar indisponível, conforme mostrado nesta captura de tela:

insira a descrição da imagem aqui

No PDF da lista de verificação gratuita de configuração de Brent Ozar para grupos de disponibilidade, ele lista:

Instalação de cluster ...

29. Se um FCI estiver envolvido, configure o DTC de acordo com as decisões da seção Planejamento.

Nos comentários dos Grupos de Disponibilidade AlwaysOn do SQL Server 2012, o Rock Brent diz que "... nada muda quando os AGs estão em jogo. Lembre-se de que os bancos de dados em um Grupo de Disponibilidade não suportam consistência transacional quando fazem failover em conjunto com outra réplica. .. "

Isso faz parecer que o DTC pode ser usado em grupos de disponibilidade, desde que você entenda que as transações não serão mantidas em uma alternância de AG. Eu não precisaria dele para manter transações dos nós da FCI. Eu precisaria apenas do DTC disponível para uso do aplicativo no caso de um desastre catastrófico (onde perdi meu data center primário).

Como eu configuro o DTC no meu terceiro nó? Ou será que estou sem sorte quando se trata de usar AGs e um aplicativo que precisa de DTC?

ATUALIZAÇÃO: A solução em que decidi é usar o Log Shipping. No entanto, no caso de um failover, ainda preciso que o DTC esteja disponível no Nó3. Descobri que ele fica disponível desinstalando a instância do DTC MSDTC-MSSQLSERVERCLU em cluster que é compartilhada entre o Nó1 e o Nó2. Depois de removido, posso instalar e configurar uma instância LocalDTC no Nó3. Posteriormente, posso reinstalar a instância em cluster MSDTC-MSSQLSERVERCLU. A execução da sequência de instalação nessa ordem parece funcionar. Estou correndo assim há um tempo e não descobri nenhum efeito negativo. Parece que isso também funcionaria para executar um AlwaysOn Availability Group. Entendo que as transações distribuídas não seriam preservadas em um failover de AG, eu precisaria apenas de novas para trabalhar após o failover. Mas eu não tenho

Elijah W. Gagne
fonte

Respostas:

15

Elijah. Há duas perguntas separadas aqui:

1. O DTC é suportado com os Grupos de Disponibilidade AlwaysOn?

Como a Microsoft diz em grandes letras, não. Entendo perfeitamente que você deseja tentar de qualquer maneira, mas lembre-se de que agora está colocando em produção algo que a Microsoft simplesmente não suporta, E você está usando dois recursos de nicho separados (AGs e DTC). Se algo der errado, você estará em um mundo de mágoa. Isso simplesmente não é algo que eu sequer pensaria em experimentar na produção.

Lembre-se de que, se seus gerentes descobrirem que você implantou algo que a Microsoft diz especificamente em grandes letras, "VOCÊ NÃO PODE FAZER ISSO", e você tiver qualquer tipo de interrupção em que precisar ligar para a Microsoft para obter suporte, você poderá tem alguma explicação feia para fazer.

2. Como o DTC deve ser configurado em um cluster com vários nós e várias sub-redes?

Leia a postagem de Allan Hirt sobre a configuração do DTC com várias instâncias do SQL Server em um cluster e certifique-se de ler todos os links também.

Brent Ozar
fonte
Ótima informação no post de Allan Hirt. Seu aviso me convenceu de que eu estou fora de sorte e não pode fazer isso
Elias W. Gagne