Una tarea muy habitual al trabajar con Microsoft Cluster (MSCS) es configurar el servicio Microsoft Distributed Transaction Coordinator (MSDTC) en Cluster. Esto es debido a dos razones:
- Microsoft sólo permite la ejecución del servicio MSDTC sobre servidores configurados en un Cluster MSCS, si dicho servicio se configura como un Recurso del Cluster. Es decir, MSDTC no funciona como un recurso local a cada Nodo.
- Muchas aplicaciones que funcionan en Microsoft Cluster, utilizan o pueden utilizar el servicio MSDTC, como es el caso de Microsoft SQL Server y Microsoft Exchange Server.
Ante de instalar y configurar MSDTC en un Cluster MSCS, se debe elegir dónde (en qué Grupo de Recursos del Cluster MSCS) configurar el servicio MSDTC. Las posibles alternativas son:
- En el Grupo de Recursos del Cluster (el del Quorum). Esta es mi opción favorita. No quiero decir que siempre se deba de utilizar, pero en muchos casos (probablemente en la mayoría de las instalaciones) el servicio MSDTC tiene muy poca carga, y en consecuencia, configurarlo en el Grupo de Recursos del Cluster (el del Quorum) no tiene ningún impacto.
- En un Grupo de Recursos independiente (exclusivo para MSDTC). Esta opción es la preferida en aquellos escenarios que se espere una gran actividad por parte del servicio MSDTC.
- En el Grupo de Recursos de la aplicación (ej: el utilizado por SQL Server o por Exchange Server). Esta es una posibilidad más. Personalmente, decidiría entre las dos anteriores (si MSDTC tiene mucha carga, no deberíamos juntarlo con SQL Server o con Exchange, y si no tiene carga, no hay problema en que se ejecute en el Grupo de Recursos del Quorum) y descartaría ésta tercera posibilidad, pero siempre se puede encontrar algún caso que pudiera ser apropiado para ésta configuración.
Para instalar y configurar el servicio MSDTC en un Cluster MSCS, primero se debe habilitar el servicio MSDTC en cada Nodo del Cluster MSCS. Esto se realiza desde la herramienta Agregar o Quitar Programas (Start -> Settings -> Control Panel -> Add or Remove Programs), seleccionando la opción Application Server, y en sus detalles (click Details), seleccionar la opción Enable network DTC access. Finalizando el asistente, quedará habilitado el servicio MSDTC (recordar que se debe habilitar MSDTC en cada Nodo del Cluster MSCS).
Una vez que está habilitado el servicio MSDTC en ambos Nodos del Cluster, tan sólo queda configurarlo como un servicio en Cluster (es decir, como un Recurso de un Grupo de Recursos del Cluster). Esta tarea se puede realizar de dos formas, con la herramienta administrativa Cluster Administrator o con la herramienta de símbolo del sistema Cluster.exe. Personalmente, prefiero la herramienta administrativa Cluster Administrator, ya que ésta no es una tarea que se realice tan habitualmente como para que interese realizarla por comandos, pero en cualquier caso, para gustos hay colores.
Con independencia del método elegido para su configuración (Cluster Administrator o Cluster.exe), se debe de disponer de un Grupo de Recursos, con al menos tres Recursos (uno de tipo IP Address, otro de tipo Network Name con dependencia al Recurso de tipo IP Address, y otro de tipo Physical Disk). Con esto, será suficiente crear un nuevo Recurso, de tipo Distributed Transaction Coordinator, con dependencias sobre un Recurso de tipo Network Name y otro de tipo Physical Disk. Si deseamos reutilizar el Grupo de Recursos del Quorum, será suficiente con crear el Recurso de tipo Distributed Transaction Coordinator, y aprovechar el Network Name, IP Address y Physical Disk del Quorum. Si deseamos un Grupo de Recursos exclusivo para MSDTC, será necesario crearlo junto con los Recursos de los tipos indicados.
Realizado todo esto, tan sólo tendremos que poner OnLine (Bring Online) el Grupo de Recursos (en caso de que estuviese OffLine), y ya habremos finalizado la instalación y configuración de Microsoft Distributed Transaction Coordinator (MSDTC) en un Cluster MSCS.
También recordar un pequeño detalle: cuando un servicio está configurado para funcionar en un Cluster MSCS queda configurado con inicio Manual (se puede comprobar a través de la consola services.msc), en vez de con inicio Automático. Esta es la situación normal con Microsoft Cluster (MSCS), ya que desde el momento en que un servicio está configurado en Cluster, su inicio (y parada) es responsabilidad del servicio de Cluster, y no debe configurarse para ser iniciado por el sistema en el arranque del Sistema Operativo (vamos a ver... al arrancar las Windows, arrancarán el servicio de Cluster, que a su vez arrancará el servicio de nuestra aplicación, pero eso sí, con cuidado de arrancarlo en un sólo Nodo... y si se cae el Nodo se preocupará de arrancar el servicio en otro Nodo vivo, etc...). Este pequeño detalle no tiene mayor importancia, pero si es cierto, que en algún cliente los Operadores me ha llamado asustados porque en todas las máquinas que tienen MSDTC lo tienen con inicio automático y en las máquinas del Cluster está con el inicio Manual. Que todos los problemas sean estos ;-)
Hasta aquí llega la instalación y configuración básica de Microsoft Distributed Transaction Coordinator (MSDTC) en un Cluster MSCS. Sin embargo, puede ser que necesitemos realizar una configuración específica de MSDTC.
Para configurar MSDTC, será necesario abrir una nueva consola MMC (Start -> Run -> mmc.exe). En la nueva consola MMC, seleccionaremos la opción Add/Remove Snap-in del menú File. En el diálogo Add/Remove Snap-in, seleccionaremos el Snap-in de Component Services, como se muestra en la siguiente pantalla capturada.
Una vez que hemos añadido el Snap-in de Component Services a la consola MMC, expandiremos los nodos Component Services y Computers. Finalmente, mostraremos el diálogo de Propiedades de My Computer, como se muestra en la siguiente pantalla capturada:
En el diálogo de Propiedades de My Computer, seleccionaremos la pestaña MSDTC. Aquí es dónde queríamos llegar. En esta pantalla podremos configurar las opciones básicas de MSDTC. A continuación se muestra una pantalla capturada con la configuración por defecto, tras la instalación de MSDTC en Cluster.
Una de las principales configuraciones, es la configuración de seguridad (botón Security Configuration del recuadro Transaction Configuration). A continuación se muestra una pantalla capturada del diálogo Security Configuration, de nuevo, con la configuración por defecto tras la instalación de MSDTC en Cluster.
Recordar que es posible utilizar la utilidad DTCPing.exe (descargable de forma gratuita desde la Web de Microsoft) para ayudarnos en la validación y diagnóstico de configuraciones de MSDTC y RPC (si tenemos problema de comunicación RPC entre dos servidores, probablemente la comunicación MSDTC entre los mismos no será posible). A continuación se incluye un enlace a la KB 928331, que presenta la utilidad DTCPing.exe, he incluye un enlace para descargar DTCPing.exe.
How to troubleshoot connectivity issues in MS DTC by using the DTCPing tool
Para la utilización de DTCPing.exe, es recomendable leer previamente los ficheros HowtoAnalyze_Dtcping_Output.txt y readme.txt incluidos en la propia descarga del DTCPing.exe.
Por último, aprovecho para incluir un par de enlaces a un par de KBs de Microsoft: