Application Load Balancer and EC2 Auto Scaling Group

Application Load Balancer and EC2 Auto Scaling Group

avatar

Phong Nguyen

2023.12.15

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.

Images

Tiền đề

(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
    
  • Network mapping:

    • VPC: Chọn default VPC
    • AZ: Chọn us-east-1aus-east-1b
  • 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

Images Images Images Images Advanced details Images

Create ASG

Step1: Choose launch template Images

Step2: Choose instance launch options Images

Step 3: Configure advanced options - optional Images Images

Step 4: Configure group size and scaling policies - optional Images

Step 5: Add notifications - optional Images

Step 6: Add tags - optional Images

Step 7: Review and create ASG

Kết quả Images

Confirm TG (đợi đến khi EC2 khởi động hoàn toàn thì health check sẽ báo là Healthy) Images

Access DNS của ALB để check kết quả Images

Create Target Tracking Policy

Policy type: Target tracking scaling
Metric type: Average CPU Utilization
Target value: 50

Images Images

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

TypeProtocolPort rangeSource
HTTPTCP80Security group of ALB
SSHTCP220.0.0.0/0

Images

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 Images

Khi CPU vượt ngưỡng 50%, EC2 sẽ được tạo thêm theo như scaling policy Images

Confirm ALB đã có thể Load balancer giữa 2 Instance Images Images

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