Les équilibreurs de charge d'application offrent intelligemment évolutivité, performances et disponibilité. Ils garantissent également que vos serveurs ne sont pas surchargés et sont prêts à gérer les pics de trafic.

L'infrastructure de sécurité de toute équipe informatique est construite autour d'équilibreurs de charge. Les équilibreurs de charge garantissent que votre application peut gérer le trafic entrant. Dans cet article, nous discuterons plus en détail de l'équilibreur de charge d'application sur AWS.

What is an Application Load Balancer?

Application Load Balancer, alias ALB, est un Équilibreur de charge élastique ou ELB sur AWS. Il fonctionne au niveau de la couche application (la septième couche) du Modèle d'interconnexion de systèmes ouverts (OSI).

Les ALB ont trois composants : les écouteurs, l'équilibreur de charge et le groupe cible. Après avoir reçu une demande, le équilibreur de charge évalue le règles d'écoute par ordre de priorité (pour choisir la règle à exécuter). Il sélectionne ensuite une cible dans groupe cible pour l'action de la règle.

Vous pouvez configurer des règles d'écoute pour envoyer des demandes à différents groupes cibles en fonction du contenu du trafic de l'application. L'algorithme de routage par défaut pour les ALB est Round-robin ; cependant, vous pouvez choisir la technique de routage des demandes les moins en attente.

Au fur et à mesure que vos besoins évoluent, vous pouvez supprimer et ajouter des cibles à partir de votre équilibreur de charge sans interrompre le flux général de requêtes de votre application.

Équilibrage de charge élastique (ELB) vous permet de faire évoluer votre équilibreur de charge en fonction de l'évolution du trafic de votre application au fil du temps. Tous les Elastic Load Balancers peuvent s'adapter automatiquement à la grande majorité des charges de travail.

Vous pouvez également créer des vérifications de l'état pour surveiller l'état de votre application sur les cibles enregistrées afin que l'équilibreur de charge n'envoie des requêtes qu'aux cibles saines.

YouTube vidéo

Features of Application Load Balancers

Équilibrage de charge de couche 7

En fonction des attributs de la demande, vous pouvez équilibrer la charge du trafic HTTP/HTTPS et gRPC vers les instances Amazon EC2, les conteneurs ECS, AWS Lambda, des serveurs tiers ou sur site.

Caractéristiques de sécurité

ALB prend en charge les protections de désynchronisation basées sur la bibliothèque HTTP desync-guardian. Cette capacité protège les applications des clients contre les vulnérabilités HTTP causées par Desync sans sacrifier la disponibilité ou la latence. Les clients peuvent également définir leur niveau de tolérance pour les requêtes douteuses en fonction de l'architecture de leurs applications.

Soutien aux avant-postes

Avant-postes AWS est une solution entièrement gérée qui étend l'infrastructure, les services et les outils AWS à presque tous les centres de données, espaces de colocation ou installations sur site pour une expérience hybride vraiment cohérente. Vous pouvez utiliser des équilibreurs de charge d'application avec AWS Outposts. Les clients peuvent déployer des ALB sur les types d'instances pris en charge, et l'ALB s'adaptera automatiquement à la capacité du rack pour s'adapter à différents niveaux de charges de travail d'application sans nécessiter d'intervention manuelle.

Vous pouvez également configurer ALB pour qu'il reçoive des rappels/alertes afin de l'aider à gérer ses besoins en capacité d'équilibrage de charge. Les clients peuvent utiliser la même console AWS, CLI, et des API pour provisionner et gérer les ALB sur les Outposts qu'ils utilisent pour provisionner et gérer les ALB dans les régions AWS.

Terminaison HTTPS

Un équilibreur de charge d'application (ALB) prend en charge la terminaison HTTPS entre les clients et l'équilibreur de charge. Cela signifie que la connexion entre votre client et ALB est HTTPS, mais que la connexion entre ALB et les serveurs d'applications (EC2, ECS, etc.) est HTTP.

Étant donné que la connexion entre ALB et les serveurs d'application() est à l'intérieur de votre VPC, elle est protégée par des entités externes par défaut. Les ALB peuvent gérer Les certificats SSL en utilisant AWS Certificate Manager pour les politiques de sécurité prédéfinies et AWS Identity and Access Management (IAM).

Prise en charge HTTP/2 et gRPC

HTTP/2 est un nouveau formulaire HTTP (HyperText Transfer Protocol) qui permet à de nombreuses requêtes d'être transmises sur la même connexion à l'aide d'une seule connexion multiplexée. Il fournit également des connexions SSL aux clients et compresse les données d'en-tête avant de les envoyer au format binaire.

Le trafic gRPC peut être acheminé et équilibré sur microservices ou entre des clients et des services compatibles gRPC à l'aide de l'équilibreur de charge d'application. Cela permet une intégration fluide de la gestion du trafic gRPC dans les architectures sans nécessiter de modifications de l'infrastructure sous-jacente du côté des clients ou des services.

gRPC est le protocole de choix pour les communications interservices dans les architectures de microservices, et il utilise HTTP/2 pour la transmission. Il possède des fonctionnalités telles qu'une sérialisation binaire efficace, la prise en charge d'une variété de langages, ainsi que les avantages inhérents à HTTP/2, tels qu'une empreinte réseau plus petite, une compression et un streaming bidirectionnel, ce qui le rend supérieur aux protocoles hérités comme REST.

Séances collantes

Les sessions persistantes permettent aux requêtes d'un même client d'être acheminées vers la même cible à l'aide de cookies. Nous pouvons facilement configurer des sessions persistantes en activant simplement les sessions persistantes et les cookies dans les attributs ALB. Application Load Balancer (ALB) prend en charge les cookies basés sur la durée et les cookies basés sur les applications.

Déterminer pendant combien de temps votre équilibreur de charge doit constamment envoyer la demande de l'utilisateur à la même cible est la clé de la gestion des sessions permanentes. Les sessions Sticky sont activées au niveau du groupe cible. Vous pouvez déployer une combinaison d'adhérence basée sur la durée, d'adhérence basée sur l'application et d'absence d'adhérence sur différents groupes cibles. 

Prise en charge native d'IPv6

Le protocole Internet natif version 6 (IPv6) est pris en charge par les équilibreurs de charge d'application dans un VPC. Cela permet aux clients de se connecter à l'équilibreur de charge d'application en utilisant IPv4 ou IPv6.

Suivi des demandes

Sur toutes les requêtes entrant dans l'équilibreur de charge, l'équilibreur de charge d'application injecte un nouvel en-tête HTTP d'identifiant personnalisé "X-Amzn-Trace-Id". Le suivi des demandes vous permet de suivre la progression d'une demande au fur et à mesure de son acheminement vers de nombreux services AWS à l'aide de son ID unique. Vous pouvez utiliser le suivi des demandes pour rechercher des problèmes de performances ou de goulot d'étranglement dans votre pile d'applications.

Les redirections

L'équilibreur de charge d'application (ALB) peut rediriger une demande entrante d'une URL vers une autre. Par exemple, vous pouvez rediriger les requêtes HTTP vers des requêtes HTTPS, ce qui vous permet d'atteindre votre objectif de conformité de navigation sécurisée tout en améliorant le classement de recherche de votre site et le score SSL/TLS. Les redirections peuvent également acheminer les utilisateurs vers un site Web différent, par exemple, une ancienne version d'une application vers une version plus récente.

YouTube vidéo

Réponse fixe

L'équilibreur de charge d'application peut gérer les demandes client que vos applications servent. Sans transmettre la demande à l'application, vous pouvez répondre aux demandes entrantes avec des codes de réponse d'erreur HTTP et des messages d'erreur personnalisés directement à partir de l'équilibreur de charge.

Prise en charge des WebSockets

Les équilibreurs de charge d'application prennent en charge les WebSockets. Les WebSockets permettent à un serveur d'envoyer des messages en temps réel aux utilisateurs finaux sans qu'ils aient à demander (ou à interroger) une mise à jour du serveur. Sur une longue durée Connexion TCP, le protocole WebSockets permet des canaux de communication bidirectionnels entre un client et un serveur.

Indication de nom de serveur (SNI)

SNI (Server Name Indication) est une extension du protocole TLS dans laquelle un client spécifie le nom d'hôte auquel se connecter dans la poignée de main TLS. L'équilibreur de charge peut présenter de nombreux certificats via un seul écouteur sécurisé, ce qui lui permet de prendre en charge plusieurs sites Web sécurisés avec un seul écouteur sécurisé. 

Avec SNI, les équilibreurs de charge d'application utilisent un processus de sélection de certificat intelligent pour faire correspondre le nom d'hôte dans la demande au certificat SSL correspondant. Si le nom d'hôte d'un client correspond à plusieurs certificats, l'équilibreur de charge choisit le certificat optimal en fonction de plusieurs paramètres, notamment les capacités du client.

Adresses IP comme cibles

En utilisant les adresses IP des backends d'application comme cibles, vous pouvez utiliser des ALB pour équilibrer la charge de n'importe quelle application hébergée sur AWS, sur site ou même d'autres fournisseurs de cloud. Cela permet d'équilibrer la charge vers n'importe quelle adresse IP et interface sur un backend d'application.

adresses IP peut également être utilisé comme cible pour les applications d'équilibrage de charge hébergées sur site (via Direct Connect ou VPN), les VPC appairés et EC2-Classic (à l'aide de ClassicLink). Vous pouvez migrer vers le cloud, basculer vers le cloud ou basculer vers le cloud avec la possibilité d'équilibrer la charge entre les ressources sur site et AWS.

Lambda fonctionne comme cibles

Les utilisateurs peuvent accéder aux applications sans serveur à partir de n'importe quel client HTTP, y compris les navigateurs Web, grâce à la prise en charge des équilibreurs de charge d'application pour l'exécution des fonctions Lambda afin de fournir des requêtes HTTP(S). Vous pouvez utiliser la prise en charge des règles de routage basées sur le contenu pour diriger les demandes vers des fonctions Lambda distinctes en enregistrant des fonctions Lambda en tant que cibles d'équilibreur de charge.

Un équilibreur de charge d'application peut être utilisé comme point de terminaison HTTP standard pour les applications qui exploitent les serveurs et l'informatique sans serveur. Pour développer des applications, vous pouvez utiliser les fonctions Lambda pour créer un site Web complet ou les combiner avec des instances EC2, des conteneurs et des serveurs sur site.

Routage basé sur le contenu

Supposons que votre application soit composée de nombreux services indépendants. Dans ce cas, un équilibreur de charge d'application peut acheminer une demande vers un service en fonction du contenu de la demande, comme le champ Hôte, l'URL du chemin, l'en-tête HTTP, la méthode HTTP, la chaîne de requête ou l'adresse IP source.

Routage basé sur l'hôte : À l'aide du champ Hôte de l'en-tête HTTP, ALB peut acheminer une demande client vers plusieurs domaines à partir du même équilibreur de charge.

Routage basé sur le chemin : Le chemin URL de l'en-tête HTTP peut être utilisé pour acheminer une requête client.

YouTube vidéo

Routage basé sur l'en-tête HTTP : Toute valeur d'en-tête HTTP standard ou personnalisée peut être utilisée pour acheminer une demande client.

Routage basé sur la méthode HTTP : Toute méthode HTTP standard ou personnalisée peut être utilisée pour rediriger une requête client.

Routage basé sur des paramètres de chaîne de requête : Une requête client peut être acheminée en fonction de la chaîne de requête ou des paramètres.

Adresse IP source Routage basé sur CIDR : Une demande client peut être acheminée en fonction de l'adresse IP source CIDR dont elle provient.

YouTube vidéo

Prise en charge des applications conteneurisées

Application Load Balancer améliore la prise en charge des conteneurs en répartissant la charge sur plusieurs ports sur une seule instance Amazon EC2 (mappage dynamique des ports). Dans la définition de tâche ECS, vous pouvez spécifier un port dynamique, qui donne au conteneur un port inutilisé lorsqu'il est planifié sur l'instance EC2. Ce port est utilisé par le planificateur ECS pour ajouter la tâche à l'équilibreur de charge.

YouTube vidéo

ALB avec pare-feu d'application Web

À l'aide d'AWS WAF, vous pouvez désormais protéger vos applications Web sur vos équilibreurs de charge d'application. AWS WAF protège vos applications Web contre les exploits Web typiques qui peuvent entraîner des temps d'arrêt des applications, compromettre la sécurité ou consommer des ressources excessives.

Mode de démarrage lent avec algorithme d'équilibrage de charge

Application Load Balancer (ALB) prend en charge un algorithme d'équilibrage de charge circulaire. De plus, le mécanisme de tourniquet dans Application Load Balancer inclut un mode de démarrage différé qui vous permet d'ajouter de nouvelles cibles sans les surcharger de demandes. L'option de démarrage lent permettra aux cibles de s'échauffer avant de prendre leur juste part de demandes pendant une période de montée en puissance spécifiée. Le démarrage lent est bénéfique pour les applications qui reposent sur le cache et nécessitent une période de préchauffage avant de pouvoir réagir au mieux aux requêtes.

Authentification d'utilisateur

Vous pouvez utiliser Application Load Balancer pour décharger le mécanisme d'authentification de vos applications. Lorsque les utilisateurs accèdent aux applications cloud, l'équilibreur de charge d'application les authentifie. Les utilisateurs finaux peuvent s'authentifier via des fournisseurs d'identité sociale tels que Google, Facebook et Amazon, ainsi que des fournisseurs d'identité d'entreprise tels que Microsoft Active Directory via SAML ou tout fournisseur d'identité compatible OpenID Connect, grâce à l'intégration transparente d'Application Load Balancer avec Amazon Cognito.

Application Load Balancer peut également vérifier les utilisateurs de l'entreprise en se connectant directement à votre fournisseur d'identité si vous disposez déjà d'une solution IdP sur mesure compatible avec OpenID Connect.

Benefits of shifting from a Classic Load Balancer(CLB) to an Application Load Balancer(ALB)

Les équilibreurs de charge classiques étaient le premier type d'équilibreurs de charge d'AWS. Bien que puissants, avec l'introduction des ALB et des NLB, les équilibreurs de charge classiques deviennent lentement obsolètes. De nombreuses fonctionnalités désormais prises en charge par les nouvelles versions des équilibreurs de charge ne sont pas présentes dans l'équilibreur de charge classique.

  • Prise en charge des conditions de chemin : Vous pouvez configurer votre écouteur avec des règles qui transfèrent les demandes en fonction de l'URL de la demande. Cela vous permet de décomposer votre application en services plus petits (microservices) et d'acheminer les requêtes vers le service approprié en fonction du contenu de l'URL.
  • Prise en charge des conditions de l'hôte : Vous pouvez configurer votre écouteur avec des règles qui transfèrent les requêtes en fonction du champ hôte dans l'en-tête HTTP. Cela vous permet d'acheminer les demandes vers de nombreux domaines à l'aide d'un seul équilibreur de charge.
  • Le routage est pris en charge en fonction des informations de demande telles que les conditions et les méthodes d'en-tête HTTP, les paramètres de requête et les adresses IP source.
  • Vous pouvez envoyer des demandes de routage à de nombreuses applications sur un seul serveur EC2.
  • Une instance ou une adresse IP peut être enregistrée auprès de nombreux groupes cibles sur un port séparé.
  • Vous pouvez rediriger les requêtes d'une URL vers une autre.
  • Il est possible de renvoyer une réponse HTTP personnalisée.
  • Prise en charge de l'enregistrement des cibles pour l'équilibreur de charge par adresse IP, y compris les cibles en dehors du VPC.
  • Les fonctions Lambda peuvent être enregistrées en tant que cibles.
  • Avant d'acheminer les demandes, l'équilibreur de charge peut authentifier les utilisateurs de vos applications à l'aide de leur identité d'entreprise ou sociale.
  • Les applications conteneurisées sont prises en charge. Lors de la planification d'une tâche, Amazon Elastic Container Service (Amazon ECS) peut choisir un port inutilisé et l'utiliser pour enregistrer la tâche auprès d'un groupe cible. Cela vous permet de tirer le meilleur parti de vos clusters.
  • Les bilans de santé étant définis au niveau du groupe cible et CloudWatch les métriques sont publiées au niveau du groupe cible, un support pour surveiller la santé de chaque service individuellement est disponible. Lorsque vous ajoutez un groupe cible à un groupe Auto Scaling, vous pouvez dimensionner dynamiquement chaque service en fonction de la demande.
  • Des informations supplémentaires sont enregistrées au format compressé dans les journaux d'accès.

Mot de la fin

Les équilibreurs de charge d'application sont des équilibreurs de charge de nouvelle génération qui sont élastiques, évolutifs et dotés de nombreuses fonctionnalités différentes, en particulier pour les besoins des applications Web. Vous devrez peut-être utiliser des équilibreurs de charge classiques si vous avez des applications héritées hébergées sur le EC2 Réseau classique, mais pour toutes les charges de travail de nouvelle génération, les ALB vont être un choix évident.