dev-resources.site
for different kinds of informations.
AWS ALB + Sticky Sessions Configuraci贸n y Casos de Uso
En este post, exploraremos a fondo la configuraci贸n de AWS ALB con la funci贸n de Sticky Sessions habilitada y examinaremos escenarios pr谩cticos donde esta configuraci贸n es esencial.
驴Qu茅 es un ALB o Application Load Balancer?
Para comprender la importancia de la configuraci贸n de Sticky Sessions, es crucial repasar la funci贸n fundamental de un Application Load Balancer (ALB) en nuestra infraestructura. Este dispositivo desempe帽a un papel central al recibir las solicitudes de los usuarios destinadas a nuestra aplicaci贸n. Luego, de manera inteligente, distribuye estas peticiones entre las instancias disponibles que conforman nuestra aplicaci贸n, con el objetivo de optimizar el rendimiento. Este proceso se basa en la evaluaci贸n constante de la capacidad de cada instancia en tiempo real, asegur谩ndose de dirigir el tr谩fico hacia instancias saludables y disponibles.
Que es Sticky Session y para que sirve?
Las Sticky Sessions, o sesiones persistentes, juegan un papel fundamental en la optimizaci贸n del rendimiento de una aplicaci贸n. Esta funcionalidad permite que un usuario sea dirigido continuamente a la misma instancia de servidor durante un per铆odo de tiempo predefinido. La implementaci贸n de Sticky Sessions se logra mediante la asignaci贸n de una cookie espec铆fica que contiene informaci贸n crucial sobre la instancia a la cual se debe dirigir el tr谩fico del usuario. Esta estrategia se traduce en una experiencia m谩s coherente para el usuario, ya que mantiene la conexi贸n con la misma instancia, facilitando la persistencia de datos y la continuidad en la interacci贸n con la aplicaci贸n.
驴Cu谩les ser铆an algunos casos de uso?
La configuraci贸n de Sticky Sessions se torna imprescindible en escenarios espec铆ficos, como el comercio electr贸nico, donde la consistencia en la experiencia del usuario es crucial. Imaginemos un usuario que ha avanzado en su proceso de compra, llenando su carrito con productos. En una situaci贸n convencional, si el usuario actualiza la p谩gina o realiza una nueva petici贸n, podr铆a ser dirigido a una instancia diferente del servidor, perdiendo as铆 la informaci贸n del carrito de compras previamente configurado. No obstante, con la configuraci贸n de Sticky Sessions habilitada, durante el periodo definido, todas las peticiones del usuario se redirigir谩n a la misma instancia, asegurando que la informaci贸n del carrito de compras se mantenga intacta. Este nivel de persistencia es fundamental para ofrecer una experiencia de compra fluida y sin interrupciones, incluso en situaciones donde el usuario realiza acciones adicionales o actualizaciones en la interfaz. En resumen, la funcionalidad de Sticky Sessions se convierte en un aliado estrat茅gico para preservar la continuidad y consistencia en el proceso de compra en l铆nea.
Laboratorio de pr谩ctica: Configuraci贸n de Sticky Sessions en AWS ALB
En este laboratorio, guiaremos paso a paso la creaci贸n de una peque帽a infraestructura en AWS para poner a prueba la funcionalidad de Sticky Sessions en un Application Load Balancer (ALB).
Inicia sesion en la consola de AWS yo eligire la region de Virginia para este taller,ubicate en el servicio EC2 desde alli podras desarrollar todo lo necesario.
Tarea 1 Comenzaremos creando un grupo de seguridad SG que permita tr谩fico de entrada HTTP, ub铆cate en la columna izquierda en la secci贸n de redes y seguridad y veras la opci贸n grupos de seguridad.
Asigna el nombre SG-ALB-MyApp al grupo de seguridad. Agrega una descripci贸n opcional para mayor claridad.
En la opci贸n "VPC", puedes dejar la VPC predeterminada para efectos de esta pr谩ctica.
Selecciona "Agregar regla de entrada". En la secci贸n "Tipo", elige HTTP. En "Origen o Fuente", selecciona Anywhere IPv4 para permitir el tr谩fico de entrada desde cualquier lugar.
Haz clic en "Crear grupo de seguridad" para finalizar la creaci贸n del grupo.
Tarea 2 Crearemos un par de instancias que luego incluiremos en el grupo destino al cual apuntara nuestro ALB, as铆 que estando en el servicio EC2 en la consola ub铆cate en la columna izquierda en la opci贸n instancia y luego selecciona lanzar instancia.
Comencemos con la configuraci贸n de nuestra instancia, esta instancia la llamare instance-01 y utilizare la AMI de Amazon Linux que ser谩 el S.O de la instancia.
En tipo de instancia eligiremos la t2.micro que es m谩s que suficiente para completar esta actividad.
En par de claves, elegiremos la opci贸n proceder sin par de claves, ya que para efectos de este taller no es necesario.
Nos detendremos en Configuraci贸n de redes y le daremos a la opci贸n editar, donde seguiremos usando la VPC por default de AWS, en subnet elegiremos la zona de disponibilidad us-east-1a que ser谩 la ubicaci贸n donde estar谩 nuestra instancia, la asignaci贸n de direcci贸n ip publica tambi茅n la dejaremos habilitada y en grupos de seguridad seleccionaremos uno existente que sera el grupo de seguridad que creamos en el inicio y llamamos SG-ALB-MyApp.
Ahora iremos hasta detalles avanzados donde colocaremos estas peque帽as lineas de codigo que sera una configuracion inicial con la que se lanzara la instancia justamente en el apartado User Data
#!/bin/bash
sudo su
yum update -y
yum install httpd -y
echo "<h1>Hola mundo desde instance-01 $(hostname -f)</h1>" > /var/www/html/index.html
systemctl start httpd
systemctl enable http
Y procedemos a lanzar nuestra primera instancia.
- Lanza la segunda instancia siguiendo los mismos pasos asignandole el nombre instance-02 y en el script de user data recuerda tambien colocarle ese nombre que nos servira para diferencia cuando nuestra peticion se dirigida a una instancia u otra por el ALB
#!/bin/bash
sudo su
yum update -y
yum install httpd -y
echo "<h1>Hola mundo desde instance-02 $(hostname -f)</h1>" > /var/www/html/index.html
systemctl start httpd
systemctl enable http
Tarea 3 Crearemos nuestro grupo destino el cual estara compuesto por las instancias creadas anteriormente:
- Desde la seccion de EC2 en la columna izquierda nos ubicamos en el apartado de balanceadores de carga y eligiremos Grupos de destino y le damos crear.
En la primera secci贸n, no es mucho lo que haremos. El tipo de grupo objetivo ser谩 de tipo instancia. Asignaremos un nombre a nuestro grupo objetivo; podr铆a ser TG-MyApp. El resto de esta secci贸n puede quedar con los valores predeterminados, y pulsamos "Siguiente".
Para registrar objetivos en nuestro grupo, veremos un listado donde aparecer谩n nuestras instancias, las cuales debemos seleccionar y darle al bot贸n de "Incluir como pendiente".
- En este punto ya veremos el listado de las instancias que hacen parte de nuestro grupo objetivo y procedemos a darle "Crear grupo objetivo".
Tarea 4 Llego el momento de crear y configurar nuestro Application Load Balancer ALB.
Seguimos dentro del servicio EC2 en nuestra consola, columna izquierda, seccion Balanceadores de carga y Create Load Balancer
En el siguiente paso deberemos elegir el tipo de Balanceador de carga ya que en este momento hay 3 tipos, como lo hemos mencionado en todo el tutorial crearemos un ALB asi que esa es la opcion a elegir, dale al boton "Crear".
Asignamos un nombre a nuestro balanceador de carga, ALB-MyApp, lo cual es apropiado para este ejemplo. En el esquema, seleccionamos "Internet-facing", lo que significa que est谩 expuesto a Internet y puede recibir solicitudes a trav茅s de Internet y en direcciones IP, Elegimos "IPv4"
En el apartado de redes, dejamos la VPC por defecto, ya que es la que estamos utilizando. Debemos elegir al menos dos zonas de disponibilidad a las cuales nuestro ALB podr谩 redirigir tr谩fico. Esto brinda alta disponibilidad en infraestructuras, en caso de que deseemos tener nuestra aplicaci贸n en varias zonas de disponibilidad. En este caso, seleccion茅 us-east-1a y us-east-1b. Recuerda que nuestras instancias las creamos en us-east-1a, es decir, que esta debe ser una de las zonas de disponibilidad a las cuales debe apuntar nuestro ALB.
En Grupos de seguridad elegiremos nuestro grupo de seguridad SG-ALB-MyApp
En el apartado de Listeners, vamos a seleccionar nuestro grupo objetivo TG-MyApp. Recordemos que este grupo objetivo es el que recibir谩 el tr谩fico distribuido por nuestro ALB, y dicho grupo objetivo est谩 compuesto por nuestras dos instancias.
- Al final de la seccion podremos ver un resumen y crear nuestro ALB.
Llego el momento de hacer pruebas...
Con todos nuestros recursos en pleno funcionamiento, es hora de iniciar las pruebas y observar el rendimiento de nuestra infraestructura.
- Seleccionemos nuestro ALB previamente creado y, en la secci贸n de detalles, copiemos su DNS name y pegu茅moslo en el navegador.
- En este punto, ya visualizaremos nuestra aplicaci贸n web. Si enviamos peticiones en reiteradas oportunidades mediante el bot贸n de "Refresh" en el navegador, observaremos c贸mo nuestro balanceador de carga direcciona tr谩fico a ambas instancias, las cuales identificamos en el script que colocamos en user data al momento de lanzarlas.
Habilitar la funcionalidad de Sticky Session
En esta tarea, habilitaremos la funcionalidad de Sticky Session editando los atributos de nuestro grupo de destino. Esto asegura que las solicitudes futuras del mismo cliente siempre se redirijan a la misma instancia dentro de una ventana de tiempo espec铆fica, manteniendo la consistencia de datos y proporcionando una experiencia de usuario 贸ptima.
Para comenzar nos ubicamos en la seccion balanceadores de carga de la columna izquierda, seleccionamos grupo de destino, seleccionamos nuestro TG-MyApp, en la parte inferior seleccionamos la pesta帽a atributos y le damos al boton "Editar".
Ahora, nos dirigimos a la parte inferior y activamos la funcionalidad de Sticky Sessions coloc谩ndola en modo ON. En el tipo, seleccionamos que las cookies sean generadas por el ALB. Para esta pr谩ctica, estableceremos una ventana de tiempo de 2 minutos, como se muestra en la siguiente imagen.
Realizado esto, puedes utilizar nuevamente el DNS name del ALB para enviar peticiones. Al hacerlo en varias ocasiones, notar谩s que ser谩s redirigido siempre a la misma instancia. Esto se debe a que el sistema detecta que eres el mismo usuario y que a煤n est谩s dentro de la ventana de tiempo establecida. Solo dirigir谩 el tr谩fico a la otra instancia despu茅s de que haya transcurrido el periodo de dos minutos que hemos establecido en este caso. Puedes ajustar la duraci贸n de estas ventanas de tiempo seg煤n tus preferencias, ya sea optando por ventanas m谩s cortas o m谩s largas
Espero que te hayas animado a realizar este laboratorio. Recuerda que la pr谩ctica y la ense帽anza consolidan el conocimiento. No olvides dejar cualquier comentario; tambi茅n aprendo de ustedes. Comparte este post, a alguien le puede ser 煤til. Hasta la pr贸xima.
Featured ones: