Managing high traffic applications with AWS Elastic Load Balancer and Terraform

Mwanza SimiMwanza Simi
2 min read

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.

0
Subscribe to my newsletter

Read articles from Mwanza Simi directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Mwanza Simi
Mwanza Simi