PERF05-BP04 Tirer parti de l'équilibrage de charge et du déchargement du chiffrement - AWS Well-Architected Framework

PERF05-BP04 Tirer parti de l'équilibrage de charge et du déchargement du chiffrement

Utilisez des équilibreurs de charge pour obtenir une efficacité optimale de vos ressources cibles et améliorer la réactivité de votre système.

Résultat souhaité : réduire le nombre de ressources informatiques pour servir votre trafic. Évitez le déséquilibre de la consommation de ressources dans vos cibles. Déchargez les tâches de calcul intensif sur l'équilibreur de charge. Tirez parti de l'élasticité et de la flexibilité du cloud pour améliorer les performances et optimiser votre architecture.

Anti-modèles courants :

  • Vous ne tenez pas compte des exigences de votre charge de travail lorsque vous choisissez le type d'équilibreur de charge.

  • Vous ne tirez pas parti des fonctions d'équilibrage de charge pour optimiser les performances.

  • La charge de travail est exposée directement à Internet sans équilibreur de charge.

Niveau de risque exposé si cette bonne pratique n'est pas respectée : élevé

Directives d'implémentation

Les équilibreurs de charge servent de point d'entrée pour votre charge de travail et, de là, ils distribuent le trafic vers vos cibles dorsales, telles que les instances de calcul ou les conteneurs. Le choix du bon type d'équilibreur de charge est la première étape de l'optimisation de votre architecture.

Commencez par énumérer les caractéristiques de votre charge de travail, telles que le protocole (TCP, HTTP, TLS ou WebSockets), le type de cible (instances, conteneurs ou sans serveur), les exigences de l'application (connexions de longue durée, authentification de l'utilisateur ou permanence) et le placement (région, zone locale, Outpost ou isolement de zone).

Après avoir choisi le bon équilibreur de charge, vous pouvez commencer à tirer parti de ses fonctionnalités pour réduire les efforts que votre système dorsal doit fournir pour servir le trafic.

Par exemple, en utilisant à la fois Application Load Balancer (ALB) et Network Load Balancer (NLB), vous pouvez effectuer un déchargement du chiffrement SSL/TLS. Cela permet d'éviter que la liaison TLS, très gourmande en ressources CPU, ne soit effectuée par vos cibles, et permet également d'améliorer la gestion des certificats.

Lorsque vous configurez le déchargement SSL/TLS dans votre équilibreur de charge, celui-ci se charge du chiffrement du trafic en provenance et à destination des clients, tout en acheminant le trafic non chiffré vers vos systèmes dorsaux. Cela libère vos ressources dorsales et améliore le temps de réponse pour les clients.

Application Load Balancer peut également servir le trafic HTTP2 sans avoir besoin de le prendre en charge sur vos cibles. Cette simple décision peut améliorer le temps de réponse de votre application, car HTTP2 utilise plus efficacement les connexions TCP.

Les équilibreurs de charge permettent aussi de rendre votre architecture plus flexible en répartissant le trafic entre différents types de systèmes dorsaux, tels que les conteneurs et les sans serveur. Par exemple, Application Load Balancer peut être configuré avec des règles de l'écouteur qui transmettent le trafic à différents groupes cibles en fonction des paramètres de la demande tels que l'en-tête, la méthode ou le modèle.

Les exigences de latence de votre charge de travail doivent également être prises en compte lors de la définition de l'architecture. Par exemple, si vous avez une application sensible à la latence, vous pouvez décider d'utiliser Network Load Balancer, qui offre des latences extrêmement faibles. Vous pouvez également décider de rapprocher votre charge de travail de vos clients en tirant parti de Application Load Balancer dans les zones locales AWS ou même AWS Outposts.

L'équilibrage de charge entre zones est un autre élément à prendre en compte pour les charges de travail sensibles à la latence. Avec l'équilibrage de charge inter-zone, chaque nœud d'équilibreur de charge distribue le trafic sur les cibles enregistrées dans toutes les zones de disponibilité activées. Cela améliore la disponibilité, même si cela peut ajouter entre 1 et 9 millisecondes à la latence aller-retour.

Enfin, ALB et NLB offrent tous deux des ressources de surveillance telles que des journaux et des métriques. Une bonne configuration de la surveillance peut aider à recueillir des informations sur les performances de votre application. Par exemple, vous pouvez utiliser les journaux d'accès à l'ALB pour déterminer quelles demandes prennent plus de temps à être traitées ou quelles cibles dorsales causent des problèmes de performance.

Étapes d'implémentation

  1. Choisissez l'équilibreur de charge adapté à votre charge de travail.

    1. Utilisez Application Load Balancer pour les charges de travail HTTP/HTTPS.

    2. Utilisez Network Load Balancer pour les charges de travail non HTTP qui fonctionnent sur TCP ou UDP.

    3. Utilisez une combinaison des deux (ALB comme cible de NLB) si vous souhaitez tirer parti des fonctionnalités des deux produits. Par exemple, vous pouvez le faire si vous voulez utiliser les IP statiques de NLB avec l'itinéraire basé sur l'en-tête HTTP de ALB, ou si vous voulez exposer votre charge de travail HTTP à un AWS PrivateLink.

    4. Pour obtenir une comparaison complète des équilibreurs de charge, consultez la comparaison des produits ELB.

  2. Utilisez le déchargement SSL/TLS.

    1. Configurez des ports d'écoute HTTPS/TLS à la fois avec Application Load Balancer et Network Load Balancer, tous deux intégrés à AWS Certificate Manager.

    2. Notez que certaines charges de travail peuvent nécessiter un chiffrement de bout en bout pour des raisons de conformité. Dans ce cas, il est nécessaire d'activer le chiffrement au niveau des cibles.

    3. Pour découvrir les bonnes pratiques de sécurité, consultez SEC09-BP02 Appliquer le chiffrement en transit.

  3. Sélectionnez le bon algorithme de routage.

    1. L'algorithme de routage peut faire une réelle différence dans le degré d'utilisation de vos cibles dorsales et donc dans leur impact sur les performances. Par exemple, ALB propose deux options pour les algorithmes de routage :

    2. Demandes les moins en attente : permet d'obtenir une meilleure répartition de la charge sur vos cibles dorsales dans les cas où les demandes de votre application varient en complexité ou vos cibles varient en capacité de traitement.

    3. Tourniquet : utilisez cette méthode lorsque les demandes et les cibles sont similaires, ou si vous devez distribuer les demandes de manière égale entre les cibles.

  4. Envisagez un isolement inter-zone ou par zone.

    1. Utilisez les zones croisées désactivées (isolement par zone) pour améliorer la latence et les domaines de panne par zone. L'option est désactivée par défaut dans NLB et dans ALB, vous pouvez la désactiver par groupe cible.

    2. Utilisez les zones croisées activées pour une disponibilité et une flexibilité accrues. Par défaut, les zones croisées sont activées pour ALB et dans NLB, vous pouvez les activer par groupe cible.

  5. Activez l'option de persistance HTTP pour vos charges de travail HTTP.

    1. Pour les charges de travail HTTP, activez l'option de persistance HTTP dans les paramètres du serveur web de vos cibles dorsales. Grâce à cette fonction, l'équilibreur de charge peut réutiliser les connexions dorsales jusqu'à l'expiration du délai d'attente, ce qui améliore les temps de demande et de réponse HTTP et réduit également l'utilisation des ressources sur vos cibles dorsales. Pour obtenir plus de détails sur la façon de procéder pour Apache et Nginx, consultez Quels sont les paramètres optimaux pour utiliser Apache ou NGINX en tant que serveur principal pour ELB ?

  6. Utilisez les intégrations Elastic Load Balancing pour une meilleure orchestration des ressources de calcul.

    1. Intégrez Auto Scaling à votre équilibreur de charge. L'un des aspects essentiels d'un système performant est le dimensionnement adéquat de vos ressources dorsales. Pour ce faire, vous pouvez tirer parti des intégrations d'équilibreurs de charge pour les ressources cibles du système dorsal. Grâce à l'intégration de l'équilibreur de charge avec les groupes Auto Scaling, les cibles seront ajoutées ou retirées de l'équilibreur de charge selon les besoins en fonction du trafic entrant.

    2. Les équilibreurs de charge peuvent également s'intégrer à Amazon ECS et Amazon EKS pour les charges de travail conteneurisées.

  7. Surveillez votre équilibreur de charge pour détecter les goulots d'étranglement.

    1. Activez les journaux d'accès pour votre Application Load Balancer et votre Network Load Balancer.

    2. Les principaux champs à prendre en compte pour l'ALB sont les suivants : request_processing_time, request_processing_timeet response_processing_time. »

    3. Les principaux champs à prendre en compte pour le NLB sont les suivants : connection_time et tls_handshake_time. »

    4. Soyez prêt à interroger les journaux lorsque vous en avez besoin. Vous pouvez utiliser Amazon Athena pour interroger les journaux ALB et les journaux NLB.

    5. Créez des alarmes pour les métriques liées aux performances, telles que TargetResponseTime pour ALB.

Ressources

Bonnes pratiques associées :

Documents connexes :

Vidéos connexes :

Exemples connexes :