Application Load Balancer and EC2 Auto Scaling Group
Phong Nguyen
Bài viết sẽ hướng dẫn cách sử dụng Application Load Balancer kết hợp với EC2 Auto Scaling Group để cân bằng tải cho web server EC2. Thực hiện Auto Scaling khi mức sử dụng CPU vượt mức quy định.
Tiền đề
- Đã hoàn thành bài thực hành với Application Load Balancer
(Vì một số resource như Taget group, ALB, SG được tạo ở bài trước nên nếu muốn thực hành bài này, đầu tiên phải làm bài Application Load Balancer)
Create Auto Scaling group
Parametter Setting
Auto Scaling group name:
d-asg-SAA-web-server
Create launch template:
- Template name:
d-lt-saa-web-server-template
- Template version description:
web server
- AMI:
Amazon Linux 2023
- Instance Type:
t2.micro
- Keypair:
d-key-SAA-common
- Security Group:
d-sg-SAA-web-server
- User data:
#!/bin/bash yum update -y yum install -y httpd.x86_64 systemctl start httpd.service systemctl enable httpd.service echo “Hello World from $(hostname -f)” > /var/www/html/index.html
- Template name:
Network mapping:
- VPC:
Chọn default VPC
- AZ: Chọn
us-east-1a
vàus-east-1b
- VPC:
Load balancer
- Attach to an existing load balancer
- Chọn target group đã tạo
- Health check elb
Desered: 1
Min: 1
Max: 3
Create launch template
Create ASG
Step2: Choose instance launch options
Step 3: Configure advanced options - optional
Step 4: Configure group size and scaling policies - optional
Step 5: Add notifications - optional
Step 7: Review and create ASG
Confirm TG (đợi đến khi EC2 khởi động hoàn toàn thì health check sẽ báo là Healthy)
Access DNS của ALB để check kết quả
Create Target Tracking Policy
Policy type: Target tracking scaling
Metric type: Average CPU Utilization
Target value: 50
Stress test
Sau khi tạo xong Target Tracking Policy, thì chỉ khi nào CPU vượt lên 50% thì ASG mới Scale out EC2. Chúng ta sẽ manual thực hiện stress test.
Để có thể Connect đến EC2 thông qua ssh, chúng ta cần modify SG của EC2
Edit SG: d-sg-SAA-web-server
, Add Inbound rule
Type | Protocol | Port range | Source |
---|---|---|---|
HTTP | TCP | 80 | Security group of ALB |
SSH | TCP | 22 | 0.0.0.0/0 |
Connect to EC2 and run command:
sudo yum install stress -y
sudo stress -c 4
Chúng ta cần đợi 5 - 10p để ASG collect Metrics
Khi CPU vượt ngưỡng 50%, EC2 sẽ được tạo thêm theo như scaling policy
Confirm ALB đã có thể Load balancer giữa 2 Instance
Clean up
- Delete ASG:
d-asg-SAA-web-server
- Delete Launch Template:
d-lt-saa-web-server-template
- Delete ALB:
d-alb-SAA-web-alb
- Delete Taget Group:
d-tg-SAA-web-server
Sau khi 2 EC2 đã ở trạng thái Terminated
- Delete Security Groups (lưu ý theo thứ tự)
- d-sg-SAA-web-server
- d-sg-SAA-alb