Microsoft Azure IaaS: Availability Sets sin alta disponibilidad de los servicios == FAIL

Hace unas semanas, estuve hablando de la importancia de los availability sets y la configuración del balanceo de carga en IaaS. Lo cierto es que estas dos configuraciones deben acompañarse la una a la otra ya que, en caso contrario, podemos pensar que la plataforma de Microsoft Azure se está comportando de manera sospechosa.

Para verlo claro, un escenario común puede ser el siguiente:

Dentro de IaaS, tenemos configurados varios availability sets. Es importante saber que a día de hoy cuando se tienen todas las máquinas dentro de availability sets, no se recibe notificación vía email, informando de que se va a llevar a cabo un mantenimiento de la plataforma y cuáles son los horarios en los que se va a producir el mismo. Este comportamiento tiene su lógica, ya que en teoría todas tus máquinas tienen alta disponibilidad y el impacto es el esperado, al igual que ocurre en PaaS. Un ejemplo de este tipo de notificaciones es el siguiente:

Upcoming maintenance Microsoft Azure

Una vez que el proceso ha finalizado, volvemos a recibir un nuevo correo confirmado que el mantenimiento ha sido completado.

Maintenance completed

La confusión viene cuando tenemos máquinas virtuales con alta disponibilidad (haciendo uso de load-balanced sets), donde el impacto es menor, y se tiene además un conjunto de máquinas dentro de un availability set que no tienen alta disponibilidad y, si una de ellas se cae, no hay otra que se encargue de “tomarla el relevo”, por lo que en ese escenario se perciben dos cosas: por un lado que, al tener las máquinas dentro de availability sets, no se está recibiendo la información relacionada con el mantenimiento y las caídas y, por otro lado, que tenemos unas máquinas sin alta disponibilidad que se están cayendo de manera “aleatoria”, lo cual no es del todo cierto.

Visto este escenario, la conclusión a día de hoy es la siguiente: por un lado es necesario identificar todas aquellas máquinas que no tienen alta disponibilidad y ver si es posible que la tengan y, un segundo punto, desligar aquellas máquinas que no tienen alta disponibilidad de los availability sets, porque no tiene sentido… (A no ser que se me escape algún escenario en el cual máquinas dentro de un availability set necesiten que se actualicen a horas distintas…Sin trabajar en conjunto). Al final necesito saber cuándo van a ocurrir los mantenimientos para aquellas máquinas que no tienen alta disponibilidad, para asumir la caída del servicio y que no pille de sorpresa.

En este post en inglés se detalla el mismo hecho y, si bien es cierto que podría ser necesario recibir dichas notificaciones independientemente de los availability sets que tengamos configurados, creo que la confusión sobre el funcionamiento de esta característica nos está dando algún que otro susto.

Por lo que recordad: Si no hay alta disponibilidad, no se incluye en un availability set.

¡Saludos!