Fault domains & Update domains

Ahora que poco a poco vuelvo a retomar mi vida, mi trabajo y la parte de Windows Azure :P, me gustaría hablaros de estos dos términos utilizados dentro de la nube. Si bien la plataforma de Windows Azure nos permite abstraernos de la infraestructura es necesario conocer algunos aspectos de su funcionamiento. Lo primero que debemos tener claro es qué es un role. Un role es en realidad una aplicación dentro de nuestro proyecto Cloud Service con una configuración personalizada. Como cualquier solución, podemos crear varios proyectos de distinto tipo. Con la plantilla de Visual Studio podemos ver claramente cuáles son los proyectos disponibles a día de hoy:

Por cada uno de esos roles podemos elegir el número de instancias que queremos desplegar en la nube, lo que supondrá una máquina virtual por instancia. Para modificar este valor, nos ubicamos en el proyecto de Cloud Service y, dentro de la carpeta Roles, hacemos doble clic en el rol que queramos configurar.

Ahora bien, cuando tenemos dos o más instancias de uno o más roles Windows Azure, más concretamente una parte llamada Fabric Controller, distribuye las instancias en diferentes racks en una determinada posición para conseguir la mayor disponibilidad del servicio en caso de fallo físico, lógico, debido a actualizaciones de los sistemas e incluso a nuevos deploys. Dicho esto ¿Qué es un Fault Domain y un Update Domain?

Fault Domain

Este término puede ser relacionado con el rack físico donde se alojan las instancias de los distintos roles. El objetivo del Fabric Controller es distribuir las instancias en estos faults domains a través de un algoritmo con el fin de no repetir la misma ubicación para instancias de un mismo rol en un mismo sitio físico. Por otro lado, si uno de los fault domains presenta algún problema de hardware que impida a una de nuestras instancias funcionar con normalidad, tendríamos el resto de ellas distribuidas por los otros fault domains con el objetivo de seguir prestando servicio. Cuando el Fabric Controller se percate de este incidente actuará para reubicar la instancia de nuestro rol en un fault domain operativo.

Update Domain

Si bien un fault domain puede relacionarse con una unidad física (un rack) donde quedan almacenados diferentes roles, procurando no duplicar varias instancias de uno de los integrantes, el término update domain trata de una unidad lógica donde Windows Azure consigue agrupar un conjunto de instancias de distintos roles con el fin de poder realizar una actualización progresiva sin anular el servicio de un role. Dicho de otra forma: El conjunto de instancias que forman un update domain consta de varios roles distintos con el fin de poder actualizar los mismos dejando operativos el resto de instancias de dichas aplicaciones. Podemos configurar el número de update domains a través del archivo ServiceDefinition.csdef. El número por defecto es 5 si no especificamos ningún valor.
<ServiceDefinition name=»CloudService» upgradeDomainCount=»2″
xmlns=»http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition»>

En este caso el Fabric Controller procurará tener las instancias de manera equilibrada entre el número de dominios de actualización para seguir manteniendo el servicio activo.


(Click para agrandar)

Si nos fijamos en la imagen anterior, podemos ver que tenemos 4 fault domains y 4 roles distintos con 4 instancias ubicadas en los distintos racks sin repetición en cuanto a la posición dentro del fault domain y el update domain. ¡Saludos!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *