BizTalk Server 2006 en alta disponibilidad

 

Un equipo de proyectos me mostró una propuesta de instalación de BizTalk para soportar alta disponibilidad y me preguntó si eso funcionaría.

La instalación de BizTalk era algo como se muestra en la figura 1. Es un balanceador de carga con dos nodos corriendo BizTalk y un cluster MSSQL 2005.

Ahora, la respuesta como siempre dice Dagum "depende". Voy a tratar de dar algunas luces de esto =) y asumiendo algunas cosas, evitar el depende.

Bueno, primero aclaremos algunas cosas. BizTalk Server 2006 está hecho por diseño para ser instalado en un ambiente "High Availability" [1].

La instalación de BizTalk Server en alta disponibilidad implica tener cada componente funcional en una instalación redundante. BizTalk server simplifica enfrentar estos escenarios separando conceptualmente las responsabilidades de almacenamiento de datos de las de procesamiento de estos. Por lo tanto, para tener una instalación de alta disponibilidad se necesitan correr múltiples Host de BizTalk contra un MSSQL en Cluster.

Fig1. Instalación BizTalk

Hasta ahora vamos bien. Avancemos un poco. ¿Qué pasa con la recepción de mensajes, orquestaciones y envío de mensajes si cae un Host de BizTalk?

Aquí hay que entender en concepto de Host y Host Instance de BizTalk Server antes de avanzar.

Un Host BizTalk es un contenedor lógico creado dentro de un BizTalk Server Group que puede contener objetos de BizTalk como Adapter Handler, recive Location (incluidos sus PipeLine) y orquestaciones. Típicamente se agrupan en un Host los objetos que son del mismo contexto de aplicación [3].

Una vez que se crean los Host (contenedores lógicos) estos se pueden asignar a diferentes nodos que tengan el servicio BizTalk corriendo, pasando a ser una "Host Instance".

La figura 2 muestra una instalación con dos nodos, 3 Host y 6 Host Instance que tienen como servidor de datos un cluster MSSQL. Un detalle de este ejemplo puede verse en MSDN [4].

Fig2. Instalación BizTalk de ejemplo con Host.

Ahora, qué diferencia hay entre el dibujo que se me presentó (Fig. 1) y la instalación la segunda instalación (Fig 2.). Principalmente dos puntos muy importantes.

Primero, en la segunda figura se presenta un esquema de Host BizTalk, que es la manera natural de hacer instalaciones en alta disponibilidad. Esto no está claro en el primer diagrama.

Segundo, en la primera instalación hay un SLB[3]. Si se trabaja con Host de BizTalk no es necesario usar un SLB porque BizTalk Server de manera automática distribuye la carga entre los múltiples nodos que corren una Host Instance. Esto es una muy buena solución! Pero tiene la limitante que si usted utiliza recepción de mensajes HTTP, SOAP o MSMQT va a necesitar un SLB para que los mensajes puedan ingresar a un Host por diferentes Host Instance.

Por eso, la respuesta por defecto "depende" sigue siendo válida, pero con un poco mas de información la respuesta podría ser categórica y precisa.

Referencias

[1] MSDN BizTalk Sever, http://msdn2.microsoft.com/en-us/library/aa560847.aspx

[2] MSDN BizTalk Server, http://msdn2.microsoft.com/en-us/library/aa577430.aspx

[3] Wikipedia, http://en.wikipedia.org/wiki/Load_balancing_(computing)

[4] MSDN ejemplo de instalación, http://msdn2.microsoft.com/en-us/library/aa578057.aspx

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s