Retour sur l'Elastic Load Balancer
Lancé au printemps 2009, l’Elastic Load Balancer est devenu une brique clé des architectures AWS. Couplé à l’auto-scaling, l’ELB simplifie grandement la scalabilité des applications portées dans le Cloud d’Amazon. Ce répartiteur de charge a en effet comme fonction première de vérifier que les instances EC2 du groupe d'autoscaling dont il s'occupe sont saines, avant d'y répartir équitablement la charge. Quand il détecte des instances Amazon EC2 défectueuses, il n'oriente plus le trafic vers ces dernières.
Quelle différence avec l'Application Load Balancer ?
Pour comprendre la différence majeure entre l'ELB et l'ALB, il faut se référer au modèle OSI (de l'anglais Open Systems Interconnection), un modèle de communications entre ordinateurs proposé par l'ISO.
l’ELB AWS repose à la fois sur la couche 4 dite « transport » et la couche 7 dite « application ». L'AWS Application Load Balancer quant à lui repose uniquement sur la couche 7, qui logiquement, se situe à un niveau plus élevé que la couche 4 : elle peut inspecter les paquets, a accès aux headers HTTP et HTTPS, et peut ainsi solliciter d'avantages d'informations pour diriger et répartir la charge.
Plus concrètement, l’Application Load Balancer propose un ensemble de nouvelles fonctionnalités :
- Du routing basé sur le contenu (Content-Based Routing)
Un Application Load Balancer a accès aux headers HTTP et vous permet de router les requêtes vers différents backends en fonction des informations lues. Par exemple, une requête qui inclura /api dans l’URL pourra être envoyée vers un autre groupe de serveurs qu’une requête qui inclura le chemin /mobile. Pour le moment, chaque ALB permet de définir 10 règles basées sur les chemins URL, mais cette limite devrait rapidement être augmentée.
- Support amélioré des applications reposant sur des conteneurs
De nombreux clients AWS packagent leurs micro-services dans des conteneurs et les hébergent sur Amazon ECS. Cette méthode permet à une instance EC2 de faire tourner un ou plusieurs services, mais peut représenter un nouveau défi pour les ELB classiques au niveau du mapping des ports ou des health checks. L’ALB permet de surmonter ces difficultés en comprenant et prenant en charge les applications tournant dans des conteneurs : il permet à une instance d’héberger plusieurs conteneurs qui vont écouter sur différents ports derrière un même groupe d’instances cibles, et la réalisation de health checks au niveau des ports.
- De meilleurs métriques
L'AWS Application Load Balancer peut réaliser des health checks au niveau d'un port spécifique en précisant l'ensemble des réponses HTTP acceptables, puis de livrer un rapport avec des codes d'erreurs détaillés.
Puisque l'ALB propose du Content-Based Routing, vous pourrez également collecter des métriques pour chacun de vos micro-services, vous donnant plus d'informations sur la performance d'un service particulier et son comportement.
Enfin, l'ALB propose un ensemble de nouvelles métriques CloudWatch, dont le trafic global (en GB), le nombre de connexions actives ou le taux de connexion par heure.
- Le support de nouveaux protocoles et workloads
L'AWS Application Load Balancer propose deux nouveaux protocoles : WebSocket et HTTP/2. WebSocket vous permet de conserver des connexions TCP ouvertes plus longtemps entre votre client et vos instances. C'est une alterntive plus efficace que de maintenir des connexions HTTP ouvertes artificiellement en envoyant des "heartbeats" à intervalle régulière. WebSocket se révèle être particulièrement utile sur mobile en envoyant du contenu "dynamique" - comme le score d'un match de foot - sans trop soliciter la batterie.
HTTP/2 est une amélioration du protocole HTTP 1.1. Cette nouvelle version du protocole qui permet de réduire le trafic global en permettant le multiplexage des requêtes au serveur.
Avec le support de ces deux protocoles, les Application Load Balancer permettent une approche davantage "streaming et temps-réel" que file d'attente de requêtes.
AWS Application Load Balancer : prix et disponibilité
Prix d'un ELB Classique :
-
En Irlande : $0.028 par heure d'utilisation d'un Elastic Load Balancer, soit 21 dollars par mois.
$0.008 par GB de donnée transitant par l'Elastic Load Balancer -
A Francfort : $0.030 par heure d'utilisation d'un Elastic Load Balancer, soit 22.5 dollars par mois.
$0.008 par GB de donnée transitant par l'Elastic Load Balancer
Prix d'un Application Load Balancer :
-
En Irlande : $0.0252 par heure d'utilisation d'un Elastic Load Balancer, 18.9 dollars par mois.
$0.008 par LCU par heure -
A Francfort : $0.0270 par heure d'utilisation d'un Elastic Load Balancer, soit 20.25 dollars par mois.
$0.008 par LCU par heure
Qu'est-ce qu'un LCU ? Bonne question !
Le LCU repose sur trois métriques principales du service :
- Le nombre de nouvelles connexions par secondes,
- Le nombre de connexions actives par minutes,
- Le débit du trafic en Mbps.
C'est la métrique la plus haute des trois qui détermine le nombre de LCU qu'il sera facturé. Un LCU comprend :
- 25 nouvelles connexions par seconde,
- 3000 connexions actives par minutes,
- 2,22 Mbps.
Prenons plutôt un exemple :
Imaginons que votre application reçoive une nouvelle connexion par seconde, chaque connexion durant 2 minutes et consommant 300KB de bande passante. Dans ce cas (dans la région US-East-1) :
- nombre de nouvelles connexions par seconde : chaque LCU comprend 25 nouvelles connexions par seconde en moyenne sur une heure. Comme votre application reçoit une connexion par seconde, nous consommons 0,04 LCU (1/25).
- nombre de connexions actives par minute : chaque LCU comprend 3000 connexions actives par minute. Comme votre application reçoit une connexion par seconde, chacune durant 2 minutes, nous avons 120 connexions actives par minute. Nous consommons 0,04 LCU (120/3000).
- débit du trafic en Mbps : chaque LCU comprend 2.22 Mbps en moyenne sur une heure. Comme votre application consomme 300KB par connexion, le débit est de 2,4 Mbps. Nous consommons 1,08 LCU (2,4 Mbps/2,22 Mbps).
Dès lors, c'est le débit du trafic qui sera retenu (1,08 LCU > 0,04 LCU). Soit un coût de 0,0086 USD par heure (1,08 LCU * 0,008 USD/LCU), ou 6,19 USD par mois (0,0086 USD * 24 heures * 30 jours). Ajoutés aux 18,9 USD par mois pour une utilisation continue, votre AWS Application Load Balancer vous coutera 25,09 USD par mois.
Autant dire qu'on ne le calculera pas souvent.
- Plus d'informations dans la page produit ALB (EN).
(Re)découvrez les derniers articles Osones !
Si vous les avez loupés, voici les nouveaux articles sur le Blog Osones :
- Présentation de Torus, un système de fichier distribué cloud natif
- Serverless avec AWS : cas concret
- C'était cette semaine, sur AWS - Lundi 27 juin 2016
- Comment TravelerCar et Osones ont vaincu l'effet Capital
- Des nouvelles fraiches d'OpenStack - 30 Juin 2016
Rejoignez vous aussi la conversation !
- Questions, remarques, suggestions... Contactez-nous directement sur Twitter sur @osones !
- Pour discuter avec nous de vos projets, nous sommes disponibles directement via contact@osones.com !
- Rejoignez VOTRE groupe LinkedIn dès maintenant : Utilisateurs Francophones d'Amazon Web Services (AWS).
Kevin MESSY
Découvrez les derniers articles d'alter way
- kubevpn
- Kubernetes 1.32
- re:Invent 2024 : AWS mise tout sur l'IA pour son Cloud
- OVHcloud Summit 2024 : L’innovation au cœur d’un cloud souverain et performant
- Big Data & AI Paris 2024 : L'IA au cœur de toutes les transformations.
- Un retour vers l'open-source ? Vos outils DevOps préférés et leurs equivalents open-source.