Managing high traffic applications with AWS Elastic Load Balancer and Terraform

Today we will explore Chapter 2 and Chapter 3 of our Terraform learning journey, focusing on state management and scaling infrastructure using a load balancer. We'll cover key concepts like Terraform state, shared storage for state files, and limitations, followed by a hands-on activity to scale a web server cluster.
Deploying a Load Balancer
A Load Balancer distributes incoming traffic across multiple servers to improve availability and fault tolerance. In our Terraform configuration, we deploy an Application Load Balancer - ALB, to manage traffic to our web servers.
Why Use a Load Balancer?
High Availability: If one instance fails, traffic routes to healthy instances.
Scalability: Easily add more instances behind the ALB.
Efficient Traffic Distribution: Balances load across multiple servers.
Activity: Scaling Web Servers & Managing State
Step 1: Modify Configuration for Multiple Instances
resource "aws_instance" "web_server" {
count = 3 # Creates 3 instances
ami = data.aws_ami.amazon_linux.id
instance_type = var.instance_type
vpc_security_group_ids = [aws_security_group.ec2_sg.id]
user_data = file("user_data.sh")
tags = {
Name = "WebServer-${count.index}"
}
}
Step 2: Update ALB Target Group Attachments
resource "aws_lb_target_group_attachment" "web_attachment" {
count = length(aws_instance.web_server)
target_group_arn = aws_lb_target_group.web_tg.arn
target_id = aws_instance.web_server[count.index].id
port = 80
}
Step 3: Initialize & Apply
terraform init
terraform plan
terraform apply
Step 4: Verify Scaling
Check the AWS EC2 Console to see multiple instances.
Access the ALB DNS (
output "alb_dns_name"
) to confirm load balancing works.
Conclusion
Load Balancers improve scalability and availability.
Terraform State is crucial for tracking infrastructure.
Remote State Storage (S3, Terraform Cloud) enables team collaboration.
Avoid Manual State Edits to prevent corruption.
Subscribe to my newsletter
Read articles from Mwanza Simi directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
