Balanceo de carga con AWS ELB

¡Hola a todos! Hoy comienza el curso «AWS para desarrolladores», por lo que realizamos un seminario web temático correspondiente, dedicado a la revisión de ELB. Hablamos sobre los tipos de balanceadores y creamos varias instancias EC2 con un balanceador. También estudiamos otros ejemplos de uso.

Balanceo de carga con AWS ELB

Al escuchar el seminario web, usted estará:

  • entendiendo qué es el balanceo de carga de AWS;
  • conociendo los tipos de Elastic Load Balancer y sus componentes;
  • utilizando AWS ELB en su práctica.

¿Por qué es importante saber esto:

  • es útil si planea presentar exámenes de certificación de AWS;
  • es una forma sencilla de distribuir la carga entre servidores;
  • es una manera fácil de añadir Lambda a su servicio (ALB).

La clase abierta fue conducida por Rishat Teregulov, ingeniero de sistemas en una empresa de marketing dedicada al desarrollo y soporte de sitios web.

Introducción

Qué es Elastic Load Balancer se puede ver en el diagrama a continuación, donde se presenta un ejemplo básico:

Balanceo de carga con AWS ELB

El Load Balancer acepta solicitudes y las distribuye entre instancias. Tenemos una instancia separada, funciones Lambda y un grupo de AutoScaling (grupo de servidores).

Tipos de AWS ELB

1. Revisemos los tipos principales:

Classic Load Balancer. El primer balanceador de AWS, funciona tanto en el nivel 4 como en el nivel 7 del OSI, soporta HTTP, HTTPS, TCP y SSL. Proporciona una balanceo básico de carga entre varias instancias de Amazon EC2 y opera tanto a nivel de solicitudes como a nivel de conexiones. Vamos a abrirlo (destacado en gris):

Balanceo de carga con AWS ELB

Este balanceador se considera obsoleto, por lo que se recomienda usarlo solo en casos específicos. Por ejemplo, para aplicaciones que fueron construidas en la red EC2-Classic. En principio, no hay nada que nos impida crearlo:

Balanceo de carga con AWS ELB

2. Network Load Balancer. Adecuado para alta carga, funciona en el nivel 4 del OSI (se puede usar en EKS y ECS), soporta TCP, UDP y TLS.

Network Load Balancer dirige el tráfico a objetos objetivo en Amazon VPC y puede manejar millones de solicitudes por segundo con latencias ultrabajas. Además, está optimizado para manejar patrones de tráfico con cargas repentinas y cambiantes.

3. Application Load Balancer. Funciona en el nivel 7, tiene soporte para Lambda, soporta reglas a nivel de encabezados y rutas, soporta HTTP y HTTPS.
Proporciona un enrutamiento de solicitudes avanzado, orientado a la entrega de aplicaciones construidas sobre arquitecturas modernas, incluyendo microservicios y contenedores. Dirige el tráfico a los destinos dentro de Amazon VPC, basándose en el contenido de la solicitud.

Para muchos usuarios, el Application Load Balancer ha reemplazado en primer lugar al Classic Load Balancer, ya que TCP no es tan común en comparación con HTTP.

Creemos uno también, como resultado de lo cual ya tendremos dos equilibradores de carga:

Balanceo de carga con AWS ELB

Componentes de Load Balance

Componentes generales de Load Balance (compartidos por todos los equilibradores):

  • Política de registro de acceso

— tus registros de acceso a ELB. Para realizar la configuración, puedes ir a Descripción y seleccionar el botón «Editar atributos»:

Balanceo de carga con AWS ELB

Luego especificamos S3Bucket — el almacén de objetos de Amazon:

Balanceo de carga con AWS ELB

  • Scheme

— equilibrador interno o externo. La idea es si tu LoadBalancer debe recibir direcciones externas para estar disponible desde fuera, o si puede ser tu equilibrador interno;

  • Grupos de seguridad

— control de acceso al equilibrador. En esencia, es un firewall de alto nivel.

Balanceo de carga con AWS ELB

Balanceo de carga con AWS ELB

  • Subredes

— subredes dentro de tu VPC (correspondientemente, y zonas de disponibilidad). Las subredes se especifican al crear. Si VPC está restringido por región, entonces las subredes están restringidas por zonas de disponibilidad. Al crear un Load Balancer, es mejor crearlo en al menos dos subredes (ayuda si hay problemas con una zona de disponibilidad);

  • Listeners

— tus protocolos del equilibrador. Como se mencionó anteriormente, para el Classic Load Balancer esto puede ser HTTP, HTTPS, TCP y SSL, para el Network Load Balancer — TCP, UDP y TLS, para el Application Load Balancer — HTTP y HTTPS.

Ejemplo para el Classic Load Balancer:

Balanceo de carga con AWS ELB

Aquí, en el Application Load Balancer, vemos una interfaz algo diferente y, en general, una lógica diferente:

Balanceo de carga con AWS ELB

Componentes del Load Balancer v2 (ALB y NLB)

Ahora examinemos más de cerca los equilibradores de la segunda versión: Application Load Balancer y Network Load Balancer. Estos equilibradores tienen sus propias características de componentes. Por ejemplo, ha surgido el concepto de Target Groups — instancias (y funciones). Gracias a este componente, tenemos la capacidad de especificar a cuál de las Target Groups queremos dirigir el tráfico.

Balanceo de carga con AWS ELB

Balanceo de carga con AWS ELB

Hablando en términos sencillos, en las Target Groups especificamos las instancias a las que llegará el tráfico. Si en el Classic Load Balancer conectas directamente las instancias al equilibrador, en el Application Load Balancer primero:

  • creas el Load Balancer;
  • creas el grupo de Target;
  • dirigir a los puertos adecuados o a las reglas del Load Balancer hacia los grupos de destino necesarios;
  • en los grupos de destino, asigna instancias.

Este tipo de lógica de trabajo puede parecer más compleja, pero en realidad es más conveniente.

El siguiente componente — reglas de Listener (reglas para el enrutamiento). Esto ya se refiere únicamente al Application Load Balancer. Si en el Network Load Balancer simplemente creas un Listener y envía el tráfico a un grupo de destino específico, en el Application Load Balancer todo es más divertido y conveniente..

Balanceo de carga con AWS ELB

Ahora hablemos un poco sobre el siguiente componente — Elastic IP (direcciones estáticas para NLB). Si las reglas para el enrutamiento de las reglas de Listener se referían solo al Application Load Balancer, entonces Elastic IP solo se refiere al Network Load Balancer.

Crearemos un Network Load Balancer:

Balanceo de carga con AWS ELB

Balanceo de carga con AWS ELB

Y justo en el proceso de creación veremos que se nos da la oportunidad de elegir un Elastic IP:

Balanceo de carga con AWS ELB

Elastic IP proporciona una única dirección IP que se puede vincular a diferentes instancias de EC2 a lo largo del tiempo. Si una instancia de EC2 tiene una dirección Elastic IP y esa instancia se termina o se detiene, se puede vincular inmediatamente una nueva instancia de EC2 a la dirección Elastic IP. De esta manera, tu aplicación actual no se detendrá, ya que las aplicaciones ven la misma dirección IP, incluso si la EC2 real ha cambiado.

Aquí otro caso de uso sobre por qué se necesita Elastic IP. Mira, vemos 3 direcciones IP, pero no permanecerán aquí para siempre:

Balanceo de carga con AWS ELB

Amazon las cambia con el tiempo, puede hacerlo cada 60 segundos (pero en la práctica, por supuesto, con menor frecuencia). Esto significa que las direcciones IP pueden cambiar. Y en el caso del Network Load Balancer puedes vincular la IP y especificarla en tus reglas, políticas, etc.

Balanceo de carga con AWS ELB

Sacamos conclusiones

ELB proporciona la distribución automática del tráfico entrante entre múltiples objetivos (contenedores, instancias de Amazon EC2, direcciones IP y funciones Lambda). ELB puede distribuir el tráfico con carga variable tanto en una zona de disponibilidad como entre varias zonas de disponibilidad. El usuario puede elegir entre tres tipos de balanceadores que garantizan tanto alta disponibilidad como escalabilidad automática y una buena protección. Todo esto es importante para garantizar la resistencia de sus aplicaciones.

Principales ventajas:

  • alta disponibilidad. El acuerdo de servicio implica un 99,99 % de disponibilidad para el balanceador de carga. Por ejemplo, varias zonas de disponibilidad garantizan que el tráfico solo sea manejado por instancias operativas. De hecho, se puede balancear la carga en toda la región, redirigiendo el tráfico a instancias operativas en diferentes zonas de disponibilidad;
  • seguridad. ELB funciona con Amazon VPC, proporcionando diversas capacidades para garantizar la seguridad: esto incluye la gestión integrada de certificados, autenticación de usuarios y la descifrado de SSL/TLS. Todo esto proporciona una gestión centralizada y flexible de la configuración de TLS;
  • elasticidad. ELB puede manejar cambios repentinos en el tráfico de red. Y la profunda integración con Auto Scaling proporciona suficientes recursos a la aplicación si cambia la carga, sin necesidad de intervención manual;
  • flexibilidad. Se pueden utilizar direcciones IP para enrutar solicitudes a las instancias de sus aplicaciones. Esto garantiza flexibilidad en la virtualización de las aplicaciones, permitiendo alojar varias aplicaciones en una misma instancia. Dado que las aplicaciones pueden usar un mismo puerto de red y tienen grupos de seguridad separados, se simplifica la interacción entre aplicaciones, especialmente en una arquitectura basada en microservicios;
  • monitoreo y auditoría. Es posible monitorear aplicaciones en tiempo real utilizando las funciones de Amazon CloudWatch. Esto incluye métricas, registros y seguimiento de solicitudes. En términos simples, podrá identificar problemas y determinar con mucha precisión los cuellos de botella en el rendimiento;
  • balanceo de carga híbrido. La capacidad de balancear la carga entre recursos locales y AWS utilizando el mismo balanceador simplifica la migración o la expansión de aplicaciones locales a la nube. También se facilita la gestión de fallos utilizando la nube.

Si desea más detalles, aquí hay un par de enlaces útiles desde el sitio oficial de Amazon:

  1. Elastic Load Balancing.
  2. Características de Elastic Load Balancing.

Fuente: habr.com

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster