AWS Elastic Load Balancing
Photo de Derek Owens sur Unsplash

Le service Elastic Load Balancing distribue automatiquement votre trafic entrant sur plusieurs cibles, telles que des instances EC2, des conteneurs et des adresses IP, dans une ou plusieurs Availability Zones. Il surveille la santé de ses cibles enregistrées et achemine le trafic uniquement vers les cibles saines. Vous pouvez sélectionner le type d’équilibreur de charge qui convient le mieux à vos besoins.

Voyons comment il fonctionne.



Elastic Load Balancer

Exemple d'utilisation d'un ELB
Exemple d'utilisation d'un ELB

Un ELB est un élément central d’une architecture applicative. Il permet de:

  • RĂ©partir la charge sur plusieurs serveurs
  • Exposer un point d’entrĂ©e unique pour une application
  • SĂ©parer le trafic externe, de l’interne
  • Fournir une terminaison SSL/TLS
  • Effectuer des contrĂ´les de santĂ© des instances sous-jacentes
  • AffinitĂ© de session (Sticky Session)

L’ELB de AWS est entièrement managé ce qui signifie que AWS s’assure pour vous de son bon fonctionnement, ses mises à jour et de sa haute disponibilité.


Types d’ELB

A l’heure actuelle, il en existe 4 que nous allons détailler ci-dessous.

Classic Load Balancer

  • GĂ©nĂ©ration v1 d’ELB, vous ne devriez pas l’utiliser
  • Supporte les protocoles HTTP, HTTPS et TCP
  • Point d’entrĂ©e au moyen d’un nom DNS unique
  • RĂ©partit la charge sur plusieurs AZ (Multi-AZ)
  • Prend en charge une seule application

Application Load Balancer

  • GĂ©nĂ©ration v2 d’ELB la plus rĂ©cente
  • Supporte les protocoles HTTP, HTTPS (en HTTP/2) et WebSocket (Layer 7)
  • Point d’entrĂ©e au moyen d’un nom DNS unique
  • Peut prendre en charge plusieurs applications:
    • Plusieurs applications (multi Target Groups/ Containers) au moyen d’une table de routage (en fonction du Hostname, Path, Query String ou du Header)
    • Redirect HTTP -> HTTPS
    • Port mapping
  • VisibilitĂ© de l’IP Client:
    • L’ALB effectue une terminaison de connexion, les cibles ne voient que l’IP de l’ALB
    • L’IP du Client se trouve dans le header X-Forwarded-For (autres Forwarded: X-Forwarded-Port, X-Forwarded-Proto)
    • Le Security Group des cibles doit intĂ©grer le Security Group de l’ALB

Network Load Balancer

  • GĂ©nĂ©ration v2 d’ELB
  • Il prend en charge les protocoles TCP, UDP et TLS (Layer 4)
  • Son intĂ©rĂŞt face Ă  l’ALB est qu’il est beaucoup plus performant et peut traiter des millions de req./s avec des latences ultra-faibles
  • Point d’entrĂ©e, une IP statique par AZ ou une IP fixe (par AZ aussi) au moyen d’une Elastic IP
  • Tout comme l’ALB, il peut prendre en charge plusieurs applications au moyen de Target Groups
  • VisibilitĂ© de l’IP Client:
    • Le NLB ne touche pas Ă  la connexion, les cibles recoivent l’IP du Client
    • Le Security Group des cibles doit intĂ©grer les IPs des Clients (0.0.0.0/0 pour un accès public)

Gateway Load Balancer

  • GĂ©nĂ©ration v2 d’ELB, ce service est apparu cette annĂ©e.
  • Comme son nom l’indique, il s’agit d’une passerelle rĂ©seau qui redirige les flux appicatifs vers un appliance virtuelle. Cette redirection est complĂ©tement transparente pour le flux rĂ©seau et le serveur cible.
  • Une appliance virtuelle est une image de VM qui remplace un Ă©quipement hardware. Elle sert en gĂ©nĂ©ral Ă  faire de l’analyse de sĂ©curitĂ© (WAF, NGFW, anti-DDoS) ou bien Ă  monitorer et logguer les flux applicatifs.

AWS Auto Scaling

Exemple d'un Scale Out par un ASG
Exemple d'un Scale Out par un ASG

AWS Auto Scaling permet de dimensionner automatiquement le nombre de nos instances (Horizontal Scale). Il permet de diminuer (Scale In) ou d’augmenter (Scale Out) automatiquement ce nombre en fonction de critères prédéfinis.

Pour cela, on configure un Auto Scaling Group (ASG) avec un nombre minimal, maximal et initial d’instances à créer ainsi qu’une politique de Scaling.

Son grand avantage est qu’il enregistre automatiquement ces instances dans les ELB.


Notions liées

Voici quelques notions à connaitre et qui sont en rapport avec les Load Balancers en général ou bien spécifiques à AWS.

Target Group

Les Target Groups permettent d’associer plusieurs cibles sous une seule référence. Ces cibles peuvent être:

  • Des instances EC2 (qui peuvent ĂŞtre gĂ©rĂ©es par un Auto Scaling Group)
  • Des tâches ECS
  • Des fonctions Lambda
  • Des adresses IP (toujours privĂ©es)

Un ALB effectue son Health Check au niveau du Target Group.

Sticky Session

Les Sticky Sessions (affinité de sessions) sont un mécanisme permettant d’acheminer le trafic client vers une même cible dans un Target Group.

Cela est nécessaire pour les applications Stateful afin de ne pas perdre les informations client entre deux requêtes. Il est assuré par un cookie et est disponible pour tous les ELB.

Cross-Zone Load Balancing

  • Lorsque cette option est activĂ©e, les ELB distribuent le trafic Ă©quitablement vers toutes les cibles enregistrĂ©es quelques soient leur AZ.

  • Si cette option est dĂ©sactivĂ©e, le trafic est rĂ©parti entre les AZ uniquement sans tenir compte du nombre de cibles dans chaque AZ.

Selon le type d’ELB et la façon dont il a été créé (par API, CLI ou Console Management), cette option peut ou non être activée par défaut.

SSL/TLS and SNI

Un certificat SSL permet de chiffrer le trafic Internet et vérifier l’identité d’un serveur.

Il existe 2 protocoles pour assurer ce chiffrement:

  • SSL, Secure Sockets Layer, est l’ancien protocole de chiffrement et n’est plus utilisĂ© Ă  l’heure actuelle (mĂŞme si son nom est restĂ©)
  • TLS, Transport Layer Security, est le nouveau protocole, plus sĂ©curisĂ©.

SNI, Server Name Indication, fait partie du protocole TLS. Il permet d’indiquer à un serveur le nom du Hostname auquel on souhaite se connecter:

  • Cela permet aux Load Balancers qui gèrent plusieurs Hostnames de savoir quel certificat renvoyĂ© et d’effectuer le bon routage.
  • Seuls ALB et NLB, de gĂ©nĂ©ration v2, savent gĂ©rer le SNI.
Jean-Jerome Levy

Ecrit par

Jean-JĂ©rĂ´me LĂ©vy

Consultant DevOps

Professionnel chevronné dans le domaine de l’informatique, cumulant plus de 20 années d’expérience au sein de DSI de grandes entreprises, mon expertise diversifiée m’a permis de jouer un rôle clé dans de nombreux projets, caractérisés par la mise en place de pratiques DevOps innovantes.