Equilibrage de la charge avec la couche 7
Vous pouvez équilibrer la charge HTTP/HTTPS des applications et utiliser des fonctionnalités spécifiques de la couche 7, telles que les en-têtes X-Forwarded-For.
Prise en charge du protocole HTTPS
Un équilibreur de charge d'application prend en charge la terminaison HTTPS entre les clients et le programme d'équilibrage de charge. Les Application Load Balancers permettent également de gérer les certificats SSL via AWS Identity and Access Management (IAM) et AWS Certificate Manager afin de prédéfinir des politiques de sécurité.
Extension SNI (Server Name Indication)
SNI (Server Name Indication) est une extension au protocole TLS grâce auquel un client indique le nom d'hôte auquel se connecter au démarrage de l'acceptation TLS. L'équilibreur de charge peut présenter plusieurs certificats via le même auditeur sécurisé, ce qui lui permet de prendre en charge plusieurs sites Web sécurisés à l'aide d'un seul auditeur sécurisé. Les équilibreurs de charge d'application prennent également en charge un algorithme de sélection de certificat intelligent avec SNI. Si le nom d'hôte indiqué par un client correspond à plusieurs certificats, l'équilibreur de charge détermine le meilleur certificat à utiliser d'après plusieurs facteurs, dont les capacités du client.
Adresses IP en tant que cibles
Vous pouvez équilibrer les charges de n'importe quelle application hébergée dans AWS ou en local en utilisant les adresses IP des backends de l'application comme cibles. Cela permet d'équilibrer la charge vers un backend d'application hébergée sur n'importe quelle adresse IP ou n'importe quelle interface sur une instance. Chaque application hébergée sur la même instance peut disposer d'un groupe de sécurité et utiliser le même port. Vous pouvez également utiliser les adresses IP comme cibles pour équilibrer la charge d'applications hébergées en local (via une connexion Direct Connect ou VPN), sur des VPC appairés et EC2 Classic (avec ClassicLink). La possibilité d'équilibrer la charge sur AWS et sur des ressources locales simplifie migration vers le cloud, le passage au cloud et le basculement vers le cloud.
Haute disponibilité
Avec un équilibreur de charge d'application, vous devez spécifier plusieurs zones de disponibilité. Vous pouvez distribuer le trafic entrant sur vos cibles dans plusieurs zones de disponibilité. Un Application Load Balancer met automatiquement à l'échelle sa capacité de gestion des requêtes en réponse au trafic applicatif entrant.
Caractéristiques de sécurité
Lorsque vous utilisez Amazon Virtual Private Cloud (Amazon VPC), vous pouvez créer et gérer des groupes de sécurité associés à Elastic Load Balancing afin de définir des options supplémentaires de mise en réseau et de sécurité. Vous pouvez configurer un équilibreur de charge d'application de sorte qu'il dispose d'un accès Internet ou créer un programme d'équilibrage de charge sans adresses IP publiques afin de l'utiliser comme un équilibreur de charge interne (sans accès Internet).
Routage basé sur le contenu
Si votre application se compose de services individuels, un Application Load Balancer peut acheminer une requête en se basant sur le contenu de celle-ci.
Routage basé sur l'hôte
Vous pouvez acheminer une requête client basée sur le champ hôte de l'en-tête HTTP, ce qui vous permet de l'acheminer vers plusieurs domaines depuis le même équilibreur de charge.
Routage basé sur le chemin d'accès
Vous pouvez acheminer une requête client basée sur le chemin d'accès URL de l'en-tête HTTP.
Prise en charge des applications conteneurisées
L'Application Load Balancer offre une meilleure prise en charge des conteneurs grâce à un équilibrage de charge sur plusieurs ports sur une seule instance Amazon EC2. L'intégration profonde à Amazon EC2 Container Service (ECS) offre un conteneur entièrement géré. ECS vous permet de spécifier un port dynamique lors de la définition de tâches ECS, en attribuant au conteneur un port non utilisé lorsqu'il est programmé sur l'instance EC2. Le planificateur ECS ajoute automatiquement la tâche à l'équilibreur de charge via ce port.
Prise en charge du protocole HTTP/2
HTTP/2 est une nouvelle version du protocole HyperText Transfer Protocol (HTTP), qui utilise une connexion unique et multiplexée pour autoriser l'envoi de plusieurs requêtes sur la même connexion. Ce protocole compresse également les données de l'en-tête avant de les envoyer au format binaire et prend en charge les connexions TLS vers les clients.
Prise en charge de WebSockets
WebSockets permet à un serveur d'échanger des messages en temps réel avec des utilisateurs finaux, sans que ces derniers n'aient à demander une mise à jour au serveur (ou à l'interroger). Le protocole WebSockets fournit des canaux de communication bidirectionnels entre un client et un serveur, via une connexion TCP de longue durée.
Prise en charge IPv6 natif
Les Application Load Balancers prennent en charge le protocole Internet version 6 (IPv6) natif dans un VPC. Cela permet aux clients de se connecter à l'équilibreur de charge d'application via IPv4 ou IPv6.
Sessions permanentes
Les sessions permanentes désignent un mécanisme, qui permet d'acheminer les requêtes d'un même client vers la même cible. L'Application Load Balancer prend en charge les sessions permanentes à l'aide des cookies générés par l'équilibreur de charge. Si vous autorisez les sessions permanentes, la même cible reçoit la requête et peut utiliser le cookie pour retrouver le contexte de la session. La permanence est définie au niveau du groupe cible.
Vérifications de l'état de santé
Un équilibreur de charge d'application achemine uniquement le trafic vers des cibles saines. Cet équilibreur de charge d'application vous permet d'avoir un meilleur aperçu de l'état de santé de vos applications, et ce, de deux manières : (1) grâce à des améliorations des vérifications de l'état de santé, qui vous permettent de configurer des codes d'erreur détaillés à partir de 200-499. Ces vérifications vous permettent de surveiller l'état de santé de chacun de vos services derrière le programme d'équilibrage de charge, et (2) grâce à de nouvelles mesures qui vous donnent un aperçu du trafic pour chacun des services s'exécutant sur une instance EC2.
Surveillance des opérations
Amazon CloudWatch indique les mesures de l'équilibreur de charge d'application, telles que le nombre de requêtes, le nombre d'erreurs, les types d'erreurs et la latence des demandes.
Journalisation
Vous pouvez utiliser la fonctionnalité Journaux d'accès pour enregistrer toutes les requêtes envoyées à votre programme d'équilibrage de charge, puis stocker ces journaux dans Amazon S3 afin de pouvoir les analyser ultérieurement. Les journaux sont compressés et possèdent une extension de fichier GZIP. Les journaux compressés permettent d'économiser à la fois de l'espace de stockage et de la bande passante de transfert, et ils sont une aide précieuse pour le diagnostic des défaillances d'applications et l'analyse du trafic Web.
Vous pouvez utiliser AWS CloudTrail pour enregistrer les appels d'API d'équilibreur de charge d'application effectués sur votre compte et générer les fichiers journaux. L'historique des appels d'API vous permet de réaliser des analyses de sécurité, de suivre les modifications de ressources et d'assurer l'audit de conformité.
Protection contre la suppression
Vous pouvez activer une protection contre la suppression sur un équilibreur de charge d'application, afin d'éviter qu'il soit supprimé par accident.
Traçabilité des requêtes
Application Load Balancer injecte un nouvel en-tête HTTP d'identifiant personnalisé, « X-Amzn-Trace-Id », dans toutes les requêtes en provenance de l'équilibreur de charge. La traçabilité des requêtes vous permet de suivre une requête à partir de son identifiant unique tandis qu'elle transite par les différents services qui composent vos sites web et vos applications distribuées. Cet identifiant de suivi unique peut être utilisé pour identifier des problèmes de performance ou de temporisation dans votre stack d'application à l'échelle d'une requête individuelle.
Pare-feu de l'application Web
Vous pouvez à présent utiliser AWS WAF pour protéger vos applications Web sur vos Application Load Balancers. AWS WAF est un pare-feu d'application Web qui vous aide à protéger vos applications Web contre les codes malveillants les plus répandus pouvant affecter la disponibilité, compromettre la sécurité ou consommer de manière excessive les ressources de votre application.