Compartir a través de


Distribución de cargas

Windows Azure provee de una serie de servicios haciendo que los usuarios de la plataforma puedan olvidarse de algunos conceptos básicos de los cuáles deberían preocuparse si tuvieran la solución desplegada sobre sus propios servidores..

  • Gestión del Sistema Operativo sobre el que se ejecutan las aplicaciones y servicios.
  • Configuración de servicios "base": S.O., servidor de datos, Servidor de aplicaciones...
  • Gestión de actualizaciones y parches de los servicios "base"
  • Diagnóstico de fallos de servicios "base"
  • Respuesta a fallos de hardware
  • Disponibilidad de capacidad de almacenamiento adecuada, lo que puede llegar a ser muy complejo.
  • Monitorización
  • Respuesta ante desastres
  • Configurar balanceado de carga
  • Gestionar incrementos súbitos de tráfico y, por ende, potencia de proceso.
  • Etc...

Desde el punto de vista del diseño de una aplicación escalable, interesa conocer en profundidad las opciones que la plataforma ofrece para poder conseguir este objetivo.

Uno de los principales componentes de la plataforma es el Windows Azure Fabric. "El Fabric", como se conoce familiarmente, es el componente de la arquitectura que se encarga de proporcionar los servicios base de Windows Azure de manera transparente respecto a la infraestructura IT subyacente. El desarrollador no sabrá nunca en que máquina concreta del centro de datos de Microsoft se está ejecutando la aplicación Azure.

El Fabric se encarga de asegurar que la aplicación recibe tiempo de ejecución, ancho de banda y recursos en general para su ejecución, balanceando la carga a las máquinas virtuales que considere necesario de manera trasparente para la aplicación. Además orquesta para la aplicación el acceso a los recursos de almacenamiento y colas de la plaforma Windows Azure, siendo todo ello algo de lo que no se debe preocupar el desarrollador.


Figura 1.- Diagrama básico de la arquitectura de Windows Azure

Para sistema de alta escalabilidad Windows Azure permite la posibilidad de añadir el número de instancias de una aplicación casi de forma inmediata, sin que este cambio implique realizar un nuevo despliegue. Añadir una instancia es tan sencillo como cambiar un fichero de configuración.

En el momento de desplegar la aplicación es posible configurar el número de instancias a desplegar, estableciendo dicho valor en el fichero de configuración. El Fabric es capaz de interpretar la configuración y desplegar tantas instancias como se hayan configurado.

Del mismo modo será responsabilidad del Fabric distribuir la carga entre las diferentes instancias de la aplicación.

Una vez desplegada la aplicación, ya sea desde el portal de Windows Azure o desde herramientas que utilicen el API de administración, es posible cambiar el número de instancias de forma casi inmediata.


Figura 2.- Actualización de la configuración

El AppFabric también tiene la responsabilidad de asegurarse de que las instancias de la aplicación estén siempre accesibles y disponibles para atender peticiones.

AppFabric dispone de una serie de agentes que se encargan de monitorizar el estado de las diferentes instancias de la aplicación. Si detecta que una instancia no está funcionando correctamente elimina la instancia y añade una nueva que pueda atender las peticiones.

Por este motivo, es conveniente también disponer de más de una instancia por cada rol, para que en caso de que falle una instancia siempre haya otra que esté disponible mientras el Fabric "soluciona" el problema.

Para detectar el estado de las aplicaciones AppFabric dispone de una serie de procedimientos y reglas que debe cumplir una aplicación, información que está disponible dentro de la documentación de la plataforma. Adicionalmente, también puede configurarse la aplicación desplegada para que ofrezca información sobre su estado al Fabric y que éste pueda actuar teniendo en cuenta el estado reportado por la aplicación.

 public override RoleStatus GetHealthStatus() 
{
// return the health status of
worker role. return RoleStatus.Healthy;
}