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.
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:
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:
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:
Al seleccionar el check será necesario configurar el mismo:
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:
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:
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.
Espero que sea de utilidad.
¡Saludos!