This project demonstrates the implementation of a self-scaling and highly available web infrastructure on Amazon Web Services (AWS) using Auto Scaling Groups (ASG) and an Application Load Balancer (ALB).
The infrastructure automatically scales based on workload demand and distributes incoming traffic across multiple EC2 instances to ensure high availability, fault tolerance, and efficient resource utilization.
The architecture consists of an Application Load Balancer integrated with an Auto Scaling Group. Incoming requests are distributed across healthy EC2 instances while scaling policies dynamically adjust the number of instances based on CPU utilization.
- Elastic and Self-Scaling Infrastructure
- Application Load Balancer (ALB)
- Auto Scaling Groups (ASG)
- Dynamic Scale-Out and Scale-In
- CPU-Based Target Tracking Policy
- High Availability Architecture
- Automatic Traffic Distribution
- Improved Fault Tolerance
- Resource Optimization
- Amazon EC2
- Auto Scaling Groups (ASG)
- Application Load Balancer (ALB)
- Target Groups
- Amazon CloudWatch
- Security Groups
- Ubuntu Linux
- Ubuntu 20.04 AMI
- Instance Type: t3.micro
- Existing SSH Key Pair
- Security Group Configuration
- User Data Script
- Protocol: HTTP
- Port: 80
- Health Check Path: /
- Internet-Facing Load Balancer
- HTTP Listener (Port 80)
- Integrated with Target Group
- Desired Capacity: 2
- Minimum Capacity: 2
- Maximum Capacity: 4
- Target Tracking Scaling Policy
- CPU Utilization Threshold: 50%
- Create Launch Template
- Create Target Group
- Configure Application Load Balancer
- Create Auto Scaling Group
- Attach Target Group to ASG
- Configure Target Tracking Policy
- Generate CPU Load
- Observe Automatic Scaling
- Verify Traffic Distribution
The Application Load Balancer distributes incoming requests across healthy EC2 instances registered in the target group, ensuring application availability and fault tolerance.
The Auto Scaling Group manages EC2 instances and automatically adjusts capacity based on workload demand.
The scaling configuration defines the minimum, maximum, and desired instance capacity along with target tracking policies.
CPU load was generated using the Linux stress utility to simulate increased traffic and processing demand.
When CPU utilization exceeded the configured threshold, the Auto Scaling Group automatically launched additional EC2 instances to maintain performance and availability.
- Successfully implemented a self-scaling cloud infrastructure.
- Additional EC2 instances were launched automatically under increased load.
- Application Load Balancer distributed traffic across healthy instances.
- Infrastructure maintained high availability without manual intervention.
- Resource utilization was optimized through dynamic scaling.
This project demonstrates practical knowledge of:
- Auto Scaling Concepts
- Application Load Balancing
- Elastic Cloud Infrastructure
- High Availability Architecture
- Cloud Monitoring
- AWS Compute Services
- Cloud Resource Optimization
- Fault-Tolerant System Design
aws-auto-scaling-load-balancer
│
├── README.md
│
├── architecture
│ └── architecture-diagram.png
│
├── screenshots
│ ├── auto-scaling-group.png
│ ├── auto-scaling-group-config.png
│ ├── load-balancer-config.png
│ ├── load-balancer-listeners.png
│ ├── scaling-result-cpu-load.png
│ └── scaling-result-new-instances.png
│
└── docs
└── aws-auto-scaling-lab-report.pdf
Detailed implementation report is available in:
docs/aws-auto-scaling-lab-report.pdf
- HTTPS using AWS Certificate Manager
- Auto Scaling Based on Multiple Metrics
- CloudWatch Dashboards
- Infrastructure as Code using Terraform
- CI/CD Integration using GitHub Actions
- Multi-AZ Production Deployment
Utkarsh Mahajan
B.Tech Computer Science Engineering (Cloud Computing)
AWS | Cloud Infrastructure | DevOps | Auto Scaling | Load Balancing
GitHub: https://github.com/utkarshm1505





