Introduction
Le Cloud Load Balancing est essentiel pour distribuer le trafic sur plusieurs serveurs, garantir la haute disponibilité et améliorer les performances. En 2026, les entreprises exigent des architectures résilientes face aux pics de charge. Ce tutoriel vous montre comment déployer un Application Load Balancer (ALB) sur AWS avec Terraform. Vous apprendrez à créer VPC, sous-réseaux, groupes de sécurité, cibles et le load balancer lui-même. Chaque étape inclut du code prêt à l'emploi. L'approche IaC assure la reproductibilité et la gestion de version de votre infrastructure.
Prérequis
- Terraform 1.8+
- Compte AWS avec permissions IAM
- Connaissances de base en AWS (VPC, EC2)
- AWS CLI configuré
Configuration du provider et variables
terraform {
required_version = ">= 1.8"
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.0"
}
}
}
provider "aws" {
region = var.aws_region
}
variable "aws_region" {
description = "Région AWS"
default = "eu-west-3"
}Ce fichier initialise Terraform et configure le provider AWS. Il définit la région par défaut pour garantir que toutes les ressources sont créées dans la même zone.
Création du VPC et sous-réseaux
resource "aws_vpc" "main" {
cidr_block = "10.0.0.0/16"
enable_dns_hostnames = true
tags = { Name = "lb-vpc" }
}
resource "aws_subnet" "public" {
count = 2
vpc_id = aws_vpc.main.id
cidr_block = "10.0.${count.index}.0/24"
availability_zone = data.aws_availability_zones.available.names[count.index]
tags = { Name = "public-${count.index}" }
}
data "aws_availability_zones" "available" {}Nous créons un VPC avec deux sous-réseaux publics dans des zones de disponibilité distinctes pour assurer la redondance du load balancer.
Groupes de sécurité
resource "aws_security_group" "alb" {
name = "alb-sg"
vpc_id = aws_vpc.main.id
ingress {
from_port = 80
to_port = 80
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
egress {
from_port = 0
to_port = 0
protocol = "-1"
cidr_blocks = ["0.0.0.0/0"]
}
}Le security group autorise le trafic HTTP entrant sur le port 80 depuis n'importe quelle source et permet tout trafic sortant, configuration minimale pour un ALB public.
Target Group et instances
resource "aws_lb_target_group" "app" {
name = "app-tg"
port = 80
protocol = "HTTP"
vpc_id = aws_vpc.main.id
health_check {
path = "/health"
interval = 30
healthy_threshold = 2
unhealthy_threshold = 2
}
}Le Target Group définit le port et le protocole des instances cibles ainsi que les vérifications de santé essentielles pour retirer automatiquement les instances défaillantes.
Déploiement du Load Balancer
resource "aws_lb" "main" {
name = "app-alb"
internal = false
load_balancer_type = "application"
security_groups = [aws_security_group.alb.id]
subnets = aws_subnet.public[*].id
enable_deletion_protection = false
}
resource "aws_lb_listener" "http" {
load_balancer_arn = aws_lb.main.arn
port = 80
protocol = "HTTP"
default_action {
type = "forward"
target_group_arn = aws_lb_target_group.app.arn
}
}Ce code déploie l'ALB public, l'attache aux sous-réseaux et crée un listener HTTP qui route tout le trafic vers le Target Group configuré.
Bonnes pratiques
- Utilisez des sous-réseaux dans au moins deux AZ pour la haute disponibilité
- Activez l'access logging sur le load balancer
- Configurez des health checks adaptés à votre application
- Séparez les environnements avec des workspaces Terraform
- Versionnez systématiquement votre code IaC
Erreurs courantes à éviter
- Oublier d'associer des sous-réseaux dans plusieurs zones de disponibilité
- Configurer des security groups trop permissifs
- Ignorer les health checks personnalisés
- Ne pas activer la protection contre la suppression en production
Pour aller plus loin
Découvrez nos formations avancées sur l'infrastructure cloud et Terraform sur Learni Group.