π AWS Application Load Balancer (ALB) Masterclass β Complete Setup & Demo
π Service Full Forms & Purpose
| Short | Full Form | What it does |
|---|
| ALB | Application Load Balancer | Distributes HTTP/HTTPS traffic across servers |
| EC2 | Elastic Compute Cloud | Virtual servers to run your website/app |
| Target Group | Target Group | List of servers that receive traffic |
| VPC | Virtual Private Cloud | Private network in AWS |
| SG | Security Group | Firewall for AWS resources |
| IAM | Identity and Access Management | Controls permissions |
| ASG | Auto Scaling Group | Automatically add/remove servers based on demand |
π οΈ STEP 1 β Create Security Group (Firewall)
Security Group = Firewall rules for your resources
πΉ Steps
- AWS Console β EC2 β Security Groups β Create
πΉ Configuration
| Setting | Value |
|---|
| Name | alb-demo-sg |
| VPC | Select your VPC |
| Inbound Rules | See below |
πΉ Add Inbound Rules
| Type | Port | Source | Why |
|---|
| SSH | 22 | Anywhere (or your IP) | Remote login |
| HTTP | 80 | Anywhere | Website traffic |
| HTTPS | 443 | Anywhere | Secure traffic |
β
Click Create Security Group
π‘ Concept Check
- Security Group = Permission list
- Allows β traffic comes in
- Blocks β traffic rejected
π₯οΈ STEP 2 β Launch EC2 Instances (Web Servers)
π― Purpose
Backend servers where ALB sends traffic
πΉ Create 3 Instances
- AWS Console β EC2 β Launch Instances
πΉ Configuration
| Setting | Value |
|---|
| Name | web-server-1 / 2 / 3 |
| AMI | Ubuntu 22.04 LTS |
| Instance Type | t2.micro |
| Key Pair | Create/select .pem |
| Network | Your VPC |
| Subnet | Public |
| Auto Assign IP | Enable |
| Security Group | alb-demo-sg |
πΉ User Data Script
#!/bin/bash
apt update -y
apt install apache2 -y
echo "Hello from $(hostname -I) - Server $(hostname)" > /var/www/html/index.html
systemctl restart apache2
β
What this does
- Installs Apache
- Creates webpage
- Shows server identity
- Auto starts service
π‘ Concept Check
- EC2 = Servers
- User Data = Auto setup script
π― STEP 3 β Create Target Group
πΉ Why?
ALB communicates with EC2 via Target Group
πΉ Steps
- EC2 β Target Groups β Create
πΉ Configuration
| Setting | Value |
|---|
| Target Type | Instances |
| Name | demo-target-group |
| Protocol | HTTP |
| Port | 80 |
| VPC | Same as EC2 |
πΉ Health Check
| Setting | Value |
|---|
| Protocol | HTTP |
| Path | / |
| Healthy Threshold | 2 |
| Unhealthy Threshold | 2 |
| Timeout | 3 sec |
| Interval | 30 sec |
πΉ Register Targets
- Select all EC2 instances
- Include as pending
- Create
π‘ Concept Check
- Healthy β Receives traffic
- Unhealthy β Blocked automatically
π STEP 4 β Create Application Load Balancer
πΉ Steps
- EC2 β Load Balancers β Create
- Select Application Load Balancer
πΉ Configuration
| Setting | Value |
|---|
| Name | demo-alb |
| Scheme | Internet-facing |
| IP Type | IPv4 |
πΉ Network Mapping
| Setting | Value |
|---|
| VPC | Your VPC |
| AZs | At least 2 |
πΉ Security Group
πΉ Listener
| Protocol | Port | Action |
|---|
| HTTP | 80 | Forward β demo-target-group |
β
Click Create Load Balancer
β
STEP 5 β Verification (MOST IMPORTANT)
1. Check ALB Status
2. Check Target Health
- All instances β Healthy
3. Copy ALB DNS
Example:
demo-alb-1234567890.us-east-1.elb.amazonaws.com
4. Test in Browser
http://<your-alb-dns>
5. Refresh Multiple Times
π Expected Output
Hello from 10.0.1.50 - Server web-server-1
Hello from 10.0.2.100 - Server web-server-2
Hello from 10.0.3.75 - Server web-server-3
β
Output changes β Load Balancing works!
π§ Architecture Diagram
Internet
β
βΌ
ALB (Public)
β
βΌ
Target Group
β
ββββΌβββ
βΌ βΌ βΌ
Srv1 Srv2 Srv3
π Final Verification Checklist
| Check | Expected Result |
|---|
| EC2 Running | β
|
| Health Checks | 2/2 Passed |
| Target Group | Active |
| Targets | Healthy |
| ALB | Active |
| Browser Load | Works |
| Refresh Output | Changes |
π Success Indicators
β
ALB Active
β
Targets Healthy
β
Browser loads successfully
β
Output rotates between servers
β
Load balancing working
π Your AWS ALB setup is complete and working perfectly!