Página web de alta disponibilidad 2 con aws Beanstalk

Antes de empezar con AWS Beanstalk, hay algunas cosas que se deben tener en cuenta antes de empezar a realizar webs de alta disponibilidad.

Nuestra manera de programar debe cambiar, si estamos acostumbrados a realizar aplicaciones web, accediendo directamente al código fuente de esta o almacenamos, generamos o editamos ficheros directamente en la estructura de archivos de nuestra web.

Si no estás familiarizado con esto, debes buscar información sobre «12 factores» e ir cambiando la forma de programar que tienes.

Creando una aplicación con AWS Beanstalk

Si nuestra aplicación va a necesitar una base de datos, recomendamos crear una de alta disponibilidad con AWS Aurora serverless, puedes seguir el anterior tutorial pinchando aquí.

Primero abriremos nuestra consola y buscaremos Beanstalk, cuando aparezca la opción pincharemos en ella.

Seguidamente pulsaremos en Empezar, el botón azul.

En la siguiente pantalla nos pedirá que le digamos el nombre de nuestra aplicación web y sobre que plataforma correrá.

Nombre podemos poner el que más nos guste y en plataforma seleccionaremos la correspondiente, en mi caso php.

Dejaremos la opción de sample application para que nos genere un proyecto de ejemplo, que será un solo fichero de php.

Una vez creada nuestra aplicación y esta tenga el estado ok, pulsaremos sobre ella para editar algunas opciones.

Paralelamente accederemos a la URL que nos ha generado para que podamos ver nuestro proyecto online, veremos una página de bienvenida creada por AWS

Cambiando la elasticidad de AWS Beanstalk

El entorno que hemos creado por defecto, es de un solo servidor y no tiene configurado ningún balanceador de carga.

Para aprovechar bien las ventajas que tiene Beanstalk, y ser realmente una web de alta disponibilidad. Debemos configurar el escalado de este.

Accedemos nuestro panel de nuestra nueva app, en el menú de la izquierda seleccionamos la opción de configuración, y en la caja de capacidad, pulsamos modificar

En el desplegable de Tipo de entorno seleccionamos «carga balanceada» y dejamos un mínimo de 1 y un máximo de 4 instancias, el resto lo dejamos como está.

En desencadenadores de escalado debemos configurar lo que más nos interese, por ejemplo si nuestra aplicación consume mucho procesador la métrica que debe disparar el escalado o desescalado es CPUUtilization. Pero si nuestra aplicación consume mucha conexión seleccionaremos NetworkOut. Latencia puede servir para cualquiera de los dos casos.

Nosotros seleccionaremos CPUUtilization, en estadística dejaremos promedio, en unidad Porcentaje, el resto podemos dejarlo a nuestro antojo, tener cuidado a la hora de configurar estas opciones ya que puede que nunca se llegue a disparar el proceso de escalado o de desescalado.

Una vez aplicado el cambio veremos que Beanstalk está regenerando todo el entorno, tardará un rato, ya que tendrá que crear un balanceador de carga y modificar el EC2 que tenía creado.

Ahora subiremos nuestro código fuente, el cual se aconseja también esté optimizado para un entorno de alta disponibilidad, pulsando el botón «Cargar e implementar».

Seleccionamos nuestro código, que debe estar comprimido en un archivo .zip y pulsamos implementar.

Al terminar de implementar, si todo ha ido bien, veremos en la URL nuestra aplicación funcionando, si algo ha ido mal, nos devolverá a la versión anterior que si que funcionaba.

Y revisamos que todo haya ido bien, accediendo a la URL de nuestro entorno de alta disponibilidad.

Como podemos ver en la imagen, solo hemos subido un fichero index.php, llamando a la función phpinfo(), lo que nos devuelve la configuración php de nuestro entorno de Beanstalk.

Deja un comentario