Problema: ¿Cómo puedo ejecutar el Coordinador de transacciones distribuidas (DTC) en todos los servidores de un grupo de disponibilidad AlwaysOn (AG)? NO necesito mantener transacciones sobre eventos de conmutación por error / conmutación.
Configuración: Tengo un Clúster de conmutación por error de Windows (WSFC) con tres servidores Windows 2008 R2 donde todos ejecutan SQL 2012. Dos servidores están en un centro de datos y forman parte de un Clúster de conmutación por error (FCI) AlwaysOn, mientras que el tercer servidor está en Un segundo centro de datos. El WSFC es un clúster de subredes múltiples. Aquí hay un boceto de la configuración:
He podido instalar y configurar DTC para que funcione entre los dos nodos FCI porque están en la misma subred y comparten almacenamiento. He configurado un par de AG y han estado funcionando bien. Esta captura de pantalla muestra el DTC instalado en la FCI:
Esta captura de pantalla muestra que puedo configurar DTC en uno de los nodos de FCI (el que esté activo):
Me gustaría migrar una aplicación que usa DTC a este clúster y usar un AG. He leído que DTC no es compatible con AG ( referencia ). No he podido encontrar una manera de configurar DTC en el tercer nodo en el segundo centro de datos. Cuando intento configurar DTC en el tercer nodo, parece que no está disponible, como se muestra en esta captura de pantalla:
En el PDF de la Lista de verificación de configuración gratuita de Brent Ozar para Grupos de disponibilidad, enumera:
Instalación del clúster ...
29. Si hay una FCI involucrada, configure el DTC según las decisiones de su sección de Planificación.
En los comentarios sobre los Grupos de disponibilidad AlwaysOn de SQL Server 2012, Rock Brent dice que "... nada cambia cuando los AG están en juego. Solo tenga en cuenta que las bases de datos en un Grupo de disponibilidad no admiten la consistencia transaccional cuando se conmutan por error a otra réplica. .. "
Esto hace que parezca que DTC se puede usar en Grupos de disponibilidad siempre que comprenda que las transacciones no se mantendrán en un cambio de AG. No lo necesitaría para mantener transacciones de los nodos de FCI. Solo necesitaría DTC disponible para que la aplicación lo use en el caso de un desastre catastrófico (donde perdí mi centro de datos principal).
¿Cómo configuro DTC en mi tercer nodo? ¿O es que no tengo suerte cuando se trata de usar AG y una aplicación que necesita DTC?
ACTUALIZACIÓN: La solución que he decidido es usar Log Shipping. Sin embargo, en el caso de una conmutación por error, todavía necesito que DTC esté disponible en Node3. Descubrí que está disponible al desinstalar la instancia agrupada MSDTC-MSSQLSERVERCLU de DTC que se comparte entre Node1 y Node2. Una vez eliminado, puedo configurar y configurar una instancia LocalDTC en Node3. Después, puedo reinstalar la instancia agrupada MSDTC-MSSQLSERVERCLU. Hacer la secuencia de instalación en ese orden parece funcionar. He estado corriendo así por un tiempo y no he descubierto ningún efecto negativo. Parece que esto también funcionaría para ejecutar un grupo de disponibilidad AlwaysOn. Entiendo que las transacciones distribuidas no se conservarán en una conmutación por error AG, solo necesitaría otras nuevas para trabajar después de la conmutación por error. Pero no tengo
fuente