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:
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:
Esta captura de tela mostra que eu posso configurar o DTC em um dos nós do FCI (o que estiver ativo):
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:
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
fonte