Windows Azure IaaS: Balancear la carga entre VMs

Cuando trabajamos con PaaS, una de las tareas de la que no debemos de preocuparnos en absoluto es del balanceo. En este tipo de arquitectura creamos nuestra aplicación y Windows Azure se encarga de la configuración pertinente. Sin embargo, cuando trabajamos con IaaS debemos tener en cuenta este punto: Si queremos tener diferentes máquinas trabajando en el mismo rol, debemos configurar el balanceo entre ellas.

loadbalancing

Para aquellos que venimos de PaaS es importante saber que cuando creamos una máquina virtual, la misma necesita de un Cloud Service para funcionar, ya que hace de contenedor de nuestra imagen. Un vhd por si sólo no sirve de nada si no tenemos una máquina virtual ejecutándose.

Configuración

Para este ejemplo vamos a crear una máquina virtual con Windows Server 2012 llamada VM1. Para que quede más claro el ejemplo, vamos a cambiar el nombre del cloud service a myiisservice como se muestra en la imagen:

DNS cloud service LB

El siguiente paso es crear una segunda máquina pero, en lugar de crear un nuevo cloud service para la misma, utilizamos el ya creado por la primera, es decir myiisservice:

VM2 same cloud service

En este ejemplo lo que voy a hacer es montar un IIS en cada una de las máquinas y exponer el puerto 80. Para añadir el rol de Internet Information Services basta con conectarse de manera remota a cada una de las VM y añadirlo a través del Dashboard –> Manage –> Add Roles and Features y dentro del listado de Roles debes elegir Web Server (IIS). Por otro lado, he cambiado la imagen que muestra el servidor web recién instalado, para comprobar que efectivamente la carga se balancea 😉

De vuelta en el portal, seleccionamos VM1 y accedemos al apartado Endpoints. Dentro del mismo hacemos click en la acción ADD, en la parte inferior de la pantalla, y mantenemos la opción ADD A STAND-ALONE ENDPOINT. En la siguiente pantalla seleccionamos el name HTTP y marcamos la opción CREATE A LOAD-BALANCED SET:

Create a load-balanced set

Al seleccionar el check será necesario configurar el mismo:

Configure Load Balanced set

En ella debemos indicar el nombre y, en cuanto al resto, tenemos asignados los valores por defecto (qué protocolo, puerto, intervalo y número de exploraciones).

Para la segunda máquina virtual, creamos otro endpoint seleccionando en esta ocasión ADD AN ENDPOINT TO AN EXISTING LOAD-BALANCED SET:

Add an enpoint to an existing load-balanced set

La configuración siguiente cambia, donde sólo podemos indicar el nombre y, si se quiere, reconfigurar el load-balanced set al que nos vamos a unir:

VM2 Endpoint configuration

A partir de este momento, toda petición que intente acceder a nuestro cloud service por el puerto 80 se balanceará entre estas dos máquinas.

Load-balanced set finished

Espero que sea de utilidad.

¡Saludos!