Cours Aws

4.41 Qu'est ce que le load balancing

Un load balancer — équilibreur de charge — est un serveur qui reçoit tout le trafic externe et le redistribue vers plusieurs instances EC2 placées en aval. Concrètement, trois utilisateurs qui envoient chacun une requête arrivent sur le load balancer, qui les répartit sur trois instances EC2 distinctes : chaque instance répond à un seul utilisateur, et le trafic global se trouve réparti uniformément. C'est ce comportement qui donne son nom au load balancer.

Pourquoi utiliser un load balancer

  • Répartir la charge sur plusieurs instances EC2 en aval.
  • Exposer un point d'accès unique (DNS du load balancer) à l'extérieur.
  • Gérer de façon transparente les défaillances grâce aux health checks.
  • Terminer le SSL/TLS et fournir un endpoint HTTPS.
  • Assurer l'adhérence de session (stickiness) via cookies.
  • Apporter la haute disponibilité entre zones de disponibilité et séparer le trafic public du trafic privé.

Sur AWS, on utilise l'ELB (Elastic Load Balancer), un service managé : AWS garantit son fonctionnement, prend en charge les mises à niveau, la maintenance et la haute disponibilité. Il fournit des outils de configuration simples et coûte moins cher que de monter soi-même un load balancer sur une EC2 dédiée. Il est en outre intégré à de nombreux autres services AWS.

Le load balancer vérifie l'état de santé de chaque instance via un health check : il envoie une requête sur un port défini (par exemple 4567) et attend une réponse HTTP 200 OK. Toute autre réponse signifie que l'instance est considérée hors service et ne recevra plus de trafic. AWS propose trois familles d'ELB : le Classic Load Balancer (CLB v1) historique (HTTP, HTTPS, TCP), l'Application Load Balancer (ALB v2) moderne (HTTP, HTTPS, WebSocket) et le Network Load Balancer (NLB v2) (TCP, UDP, TLS). On recommande les versions v2.

On peut déployer un load balancer interne (privé, pour le trafic entre microservices) ou externe (public, pour l'entrée Internet). Côté sécurité, le groupe de sécurité du load balancer autorise 80/443 depuis Internet, et le groupe de sécurité des instances n'autorise le port 80 que depuis le groupe de sécurité du load balancer — ainsi, seul l'ELB peut joindre les EC2. Côté supervision, l'access log du load balancer trace toutes les requêtes, ce qui permet de débugger les erreurs 4XX (côté client) et 5XX (côté application). Un code 503 sur l'ELB signifie que la cible est saturée ou non enregistrée : il faut alors vérifier les groupes de sécurité et les ports ouverts.