PERF05-BP04 Aprovechar el equilibrio de carga y la descarga de codificación
Utilice equilibradores de carga para lograr una eficiencia óptima del rendimiento de sus recursos de destino y mejorar la capacidad de respuesta de su sistema.
Resultado deseado: reduzca el número de recursos de computación necesarios para atender su tráfico. Evite el desequilibrio en el consumo de recursos en sus destinos. Descargue las tareas intensivas de computación en el equilibrador de carga. Aproveche la elasticidad y flexibilidad de la nube para mejorar el rendimiento y optimizar su arquitectura.
Antipatrones usuales:
-
No se tienen en cuenta los requisitos de la carga de trabajo al elegir el tipo de equilibrador de carga.
-
No se aprovechan las características del equilibrador de carga para optimizar el rendimiento.
-
La carga de trabajo se expone directamente a Internet sin un equilibrador de carga.
Nivel de riesgo expuesto si no se establece esta práctica recomendada: alto
Guía para la implementación
Los equilibradores de carga actúan como punto de entrada de la carga de trabajo y, a partir de ahí, distribuyen el tráfico a los destinos de backend, como instancias de computación o contenedores. La elección del tipo de equilibrador de carga adecuado es el primer paso para optimizar su arquitectura.
Comience por enumerar las características de su carga de trabajo, como el protocolo (por ejemplo, TCP, HTTP, TLS o WebSockets), el tipo de destino (como instancias, contenedores o sin servidor), los requisitos de la aplicación (como conexiones de larga duración, autenticación de usuarios o permanencia) y la ubicación (como región, Local Zone, Outpost o aislamiento zonal).
Una vez elegido el equilibrador de carga adecuado, puede empezar a utilizar sus características para reducir el esfuerzo que debe realizar su backend para atender al tráfico.
Por ejemplo, al utilizar tanto Application Load Balancer (ALB) como Network Load Balancer (NLB), puede realizar la descarga de cifrado SSL/TLS, lo que da la oportunidad de evitar que sus destinos completen el establecimiento de comunicación TLS, que consume mucha CPU, y también para mejorar la administración de certificados.
Cuando configura la descarga SSL/TLS en el equilibrador de carga, este se ocupa del cifrado del tráfico desde y hacia los clientes, al tiempo que entrega el tráfico sin cifrar a sus backends, lo que libera recursos de backend y mejora el tiempo de respuesta para los clientes.
Application Load Balancer también puede atender el tráfico HTTP2 sin necesidad de soporte en sus destinos. Esta simple decisión puede mejorar el tiempo de respuesta de su aplicación, ya que HTTP2 utiliza las conexiones TCP de forma más eficiente.
Los equilibradores de carga también se pueden utilizar para hacer que su arquitectura sea más flexible al distribuir el tráfico a través de diferentes tipos de backend, como contenedores y sin servidor. Por ejemplo, Application Load Balancer se puede configurar con reglas de agente de escucha que reenvían el tráfico a diferentes grupos de destino en función de los parámetros de la solicitud, como el encabezado, el método o el patrón.
Los requisitos de latencia de la carga de trabajo también deben tenerse en cuenta a la hora de definir la arquitectura. Por ejemplo, si tiene una aplicación sensible a la latencia, puede decidir utilizar Network Load Balancer, que ofrece latencias extremadamente bajas. Como alternativa, puede decidir acercar su carga de trabajo a sus clientes con Application Load Balancer en AWSLocal Zones
Otra consideración para las cargas de trabajo sensibles a la latencia es el equilibrio de carga entre zonas. Con el equilibrio de carga entre zonas, cada nodo del equilibrador de carga distribuye el tráfico entre los destinos registrados en todas las zonas de disponibilidad habilitadas. Esto mejora la disponibilidad, aunque puede añadir un milisegundo de un solo dígito a la latencia de ida y vuelta.
Por último, tanto ALB como NLB ofrecen recursos de supervisión como registros y métricas. Una configuración adecuada de la supervisión contribuirá a recopilar información sobre el rendimiento de la aplicación. Por ejemplo, puede utilizar los registros de acceso de ALB para averiguar qué solicitudes tardan más en responderse o qué objetivos de backend causan problemas de rendimiento.
Pasos para la implementación
-
Elija el equilibrador de carga adecuado para su carga de trabajo.
-
Utilice Application Load Balancer para cargas de trabajo HTTP/HTTPS.
-
Utilice Network Load Balancer para cargas de trabajo distintas de HTTP que se ejecuten en TCP o UDP.
-
Utilice una combinación de ambos (ALB como destino de NLB
) si desea aprovechar las características de ambos productos. Por ejemplo, puede hacerlo si desea utilizar las IP estáticas de NLB junto con el enrutamiento basado en encabezado HTTP de ALB, o si desea exponer su carga de trabajo HTTP a una AWS PrivateLink. -
Para obtener una comparación completa de los equilibradores de carga, consulte la comparación de productos de ELB
.
-
-
Utilice la descarga SSL/TLS.
-
Configure los agentes de escucha HTTPS/TLS con Application Load Balancer y Network Load Balancer integrados con AWS Certificate Manager
. -
Tenga en cuenta que algunas cargas de trabajo pueden requerir cifrado de extremo a extremo por motivos de conformidad. En este caso, es un requisito habilitar el cifrado en los destinos.
-
Para conocer las prácticas recomendadas de seguridad, consulte SEC09-BP02 Aplicar el cifrado en tránsito.
-
-
Seleccione el algoritmo de enrutamiento adecuado.
-
El algoritmo de enrutamiento puede marcar la diferencia en el grado de utilización de sus destinos de backend y, por lo tanto, en su repercusión en el rendimiento. Por ejemplo, ALB proporciona dos opciones para los algoritmos de enrutamiento:
-
Solicitudes menos pendientes: utilícelo para lograr una mejor distribución de la carga a sus destinos de backend para los casos en que las solicitudes de la aplicación varíen en complejidad o los destinos varíen en capacidad de procesamiento.
-
Distribución: utilícelo cuando las solicitudes y los destinos sean similares, o si necesita distribuir las solicitudes equitativamente entre los destinos.
-
-
Considere el aislamiento entre zonas o zonal.
-
Desactive el aislamiento entre zonas (aislamiento zonal) para mejorar la latencia y los dominios de error zonal. Está desactivado de forma predeterminada en NLB y, en ALB, puede desactivarlo por grupo de destino.
-
Active el aislamiento entre zonas para aumentar la disponibilidad y flexibilidad. Está activado de forma predeterminada en ALB y, en NLB, puede activarlo por grupo de destino.
-
-
Active la conexión persistente HTTP para sus cargas de trabajo HTTP.
-
Para cargas de trabajo HTTP, active la conexión persistente HTTP en la configuración del servidor web para sus destinos de backend. Con esta característica, el equilibrador de carga puede reutilizar las conexiones de backend hasta que expire el tiempo de espera activo, lo que mejora el tiempo de solicitud y respuesta HTTP, además de reducir la utilización de recursos en los destinos de backend. Para obtener información detallada sobre cómo hacer esto para Apache y Nginx, consulte What are the optimal settings for using Apache or NGINX as a backend server for ELB?
(¿Cuál es la configuración óptima para utilizar Apache o NGINX como servidor backend para ELB?)
-
-
Utilice integraciones de Elastic Load Balancing para conseguir una mejor orquestación de los recursos de computación.
-
Utilice Auto Scaling integrado con su equilibrador de carga. Uno de los aspectos clave de un sistema con un rendimiento eficiente tiene que ver con el redimensionamiento correcto de sus recursos de backend. Para ello, puede aprovechar las integraciones del equilibrador de carga para los recursos de destino de backend. Mediante la integración del equilibrador de carga con los grupos de Auto Scaling, los destinos se añadirán o eliminarán del equilibrador de carga según sea necesario y en respuesta al tráfico entrante.
-
Los equilibradores de carga también pueden integrarse con Amazon ECS y Amazon EKS para cargas de trabajo en contenedores.
-
-
Supervise su equilibrador de carga para detectar cuellos de botella en el rendimiento.
-
Habilite los registros de acceso para su Application Load Balancer y Network Load Balancer.
-
Los principales campos a tener en cuenta para ALB son
request_processing_time
,request_processing_time
yresponse_processing_time
. -
Los principales campos a tener en cuenta para NLB son
connection_time
ytls_handshake_time
. -
Esté preparado para consultar los registros cuando los necesite. Puede utilizar Amazon Athena para consultar tanto los registros de ALB como los registros de NLB.
-
Cree alarmas para las métricas relacionadas con el rendimiento, como
TargetResponseTime
para ALB.
-
Recursos
Prácticas recomendadas relacionadas:
Documentos relacionados:
-
ELB product comparison
(Comparación de productos ELB) -
Improving Performance and Reducing Cost Using Availability Zone Affinity
(Mejora del rendimiento y reducción de costes mediante la afinidad de zonas de disponibilidad) -
Step by step for Log Analysis with Amazon Athena
(Paso a paso del análisis de registro con Amazon Athena) -
Querying Application Load Balancer logs (Consulta de los registros de Application Load Balancer)
-
Monitor your Application Load Balancers (Supervise sus Application Load Balancer)
-
Monitor your Network Load Balancers (Supervise sus Network Load Balancer)
Vídeos relacionados:
-
AWS re:Invent 2018: [REPEAT 1] Elastic Load Balancing: Deep Dive and Best Practices (NET404-R1)
(AWS re:Invent 2018: [REPETICIÓN 1] Elastic Load Balancing: Profundización y prácticas recomendadas) -
AWS re:Invent 2021 - How to choose the right load balancer for your AWS workloads
(AWS re:Invent 2021: Cómo elegir el equilibrador de carga adecuado para sus cargas de trabajo de AWS) -
AWS re:Inforce 2022 - How to use Elastic Load Balancing to enhance your security posture at scale (NIS203)
(AWS re:Inforce 2022: Cómo utilizar Elastic Load Balancing para mejorar la postura de seguridad a escala) -
AWS re:Invent 2019: Get the most from Elastic Load Balancing for different workloads (NET407-R2)
(AWS re:Invent 2019: Sacar el máximo partido de Elastic Load Balancing para diferentes cargas de trabajo)
Ejemplos relacionados:
-
CDK and CloudFormation samples for Log Analysis with Amazon Athena
(CDK y ejemplos de CloudFormation para análisis de registros con Amazon Athena)