[AWS] Chapter 8: AWS ELB, ASG Hands On

  • Kai
  • August 25, 2024

Trong bài blogs này, chúng ta sẽ thực hành với AWS Elastic Load Balancer (ELB) và Auto Scaling Group (ASG).

I. Thực hành với ALB - Application Load Balancer

Đầu tiên chúng ta cần phải tạo các EC2 Instance để có thể thực hành với ALB.
alter-text
Màn hình EC2.
Chúng ta vẫn sẽ setup như những lần tạo EC2 Instance lần trước với script.
#!/bin/bash
yum update -y
yum install -y httpd
systemctl start httpd
systemctl enable httpd
echo "<h1>K.Kloud Tarus $(hostname -f)</h1>" > /var/www/html/index.html
  • *=Number of Instances: 2 - Chúng ta sẽ setup bằng 2, để có thể launch 2 instance.
  • Lựa chọn Security Group đã tạo trước đó.
  • Lựa chọn Key Pair đã tạo trước đó.
  • Nhấn Launch Instance để tạo EC2 Instance.
    alter-text
    Màn hình Launch Instance.
    alter-text
    Màn hình Launch Instance.
    alter-text
    Màn hình Launch Instance.
Chúng ta đã có 2 Instance, sửa tên để có thể phân biệt được.
  • Nhấn chọn Load Balancer từ menu bên trái.
    alter-text
    Màn hình EC2.
Tại màn hình Load Balancer, chúng ta chọn Create Load Balancer.
  • Nhấn chọn Application Load Balancer, nhấn Create.
    alter-text
    Màn hình Load Balancer
Tại màn hình Create Load Balancer, chúng ta cần phải điền thông tin như sau:
  • Name: Tên của Load Balancer.
  • Ở mục Schema, ta có 2 options là Internet-facingInternal.
    • Internet-facing: Load Balancer sẽ được sử dụng để phân phối traffic từ Internet đến các EC2 Instance.
    • Internal: Load Balancer sẽ được sử dụng để phân phối traffic giữa các EC2 Instance trong cùng một VPC.
  • Ở mục Load Balancer IP Address Type, ta sẽ chọn IPv4.
alter-text
Màn hình Tạo Load Balancer.
  • Chúng ta sẽ chọn VPC Default, trong mục Availability Zones, chúng ta sẽ chọn cả 3 AZ hiện có.
    alter-text
    Màn hình tạo Load Balancer.
Chúng ta sẽ tạo 1 Target Group để có thể thêm các EC2 Instance vào và 1 Security Group dành riêng cho ALB.
  • Nhấn chọn Create new security group
    alter-text
    Màn hình tạo Load Balancer.
  • Điền các thông tin cần thiết cho Security Group.
    alter-text
    Màn hình tạo Security Group.
  • Trong mục Inboud rules, chúng ta sẽ thêm 1 rule để có các request HTTP đi vào.
  • Nhấn Create Security Group
    alter-text
    Màn hình tạo Security Group.
Chúng ta sẽ tạo Target Group để có thể thêm các EC2 Instance vào.
  • Chọn Instance Types chọn Instance.
  • Chọn ProtocolHTTPPort80.
  • Chọn VPCDefault VPC.
    alter-text
    Màn hình Target Group.
    alter-text
    Màn hình Target Group.
  • Chọn Health CheckHTTPPath/.
  • Nhấn Next.
    alter-text
    Màn hình Target Group.
  • Chọn 2 EC2 Instance đã tạo ở trước đó.
  • Nhấn Include as pending below.
  • Nhấn Create Target Group.
    alter-text
    Màn hình Target Group.
Quay lại màn hình tạo Load Balancer, chúng ta sẽ chọn Target Group và Security Group đã tạo ở trên.
alter-text
Màn hình Tạo Load Balancer.
  • Nhấn Create Load Balancer.
    alter-text
    Màn hình Load Balancer.
Sau khi tạo xong, chúng ta sẽ thấy được thông tin của Load Balancer.
  • Từ đây chúng ta có thể thấy được DNS Name của Load Balancer. Truy cập vào domain này có thể trỏ vào trong các EC2 Instances.
    alter-text
    Màn hình Load Balancer.

Bây giờ các EC2 Instance đã có thể được truy cập vào từ Load Balancer. Vậy giờ chúng ta sẽ tiến hành tắt Allow HTTP traffic từ Security Group của EC2 Instances để thử nghiệm xem Load Balancer có hoạt động không.

Chọn Security Group của EC2 Instances.
  • Nhấn Edit inbound rules.
    alter-text
    Màn hình Launch Instance.
    alter-text
    Màn hình Launch Instance.
  • Chọn Delete để xóa rule HTTP.
  • Thêm 1 rule mới để cho phép HTTP traffic từ Load Balancer. Với Source là Security Group của Load Balancer.
  • Nhấn Save rules.

alter-text
Màn hình Launch Instance.
Bây giờ khi chúng ta truy cập vào từ Public IPv4 sẽ không truy cập vào được Instance nữa, tuy nhiên nếu truy cập từ Load Balancer sẽ truy cập vào được.

Giờ chúng ta sẽ thử tính năng Rule của Load Balancer.
  • Nhấn chọn vào Rules hiện có của ALB.
    alter-text
    Màn hình tạo Rule.
  • Nhấn chọn Add Rule.
    alter-text
    Màn hình tạo Rule.
  • Điền tên của Rule.
  • Nhấn Next
    alter-text
    Màn hình tạo Rule.
  • Tại màn hình chúng ta có thể thấy một số options như:
    • Host Headers: Chúng ta có thể chọn host mà chúng ta muốn chuyển hướng.
      alter-text
      Màn hình tạo Rule.
    • Path Patterns: Chúng ta có thể chọn path mà chúng ta muốn chuyển hướng.
      alter-text
      Màn hình tạo Rule.
    • HTTP Request Methods: Chúng ta có thể chọn method mà chúng ta muốn chuyển hướng.
      alter-text
      Màn hình tạo Rule.
    • Source IP: Chúng ta có thể chọn IP mà chúng ta muốn chuyển hướng.
      alter-text
      Màn hình tạo Rule.
    • HTTP Headers: Chúng ta có thể chọn Header mà chúng ta muốn chuyển hướng.
      alter-text
      Màn hình tạo Rule.
    • Query Strings: Chúng ta có thể chọn Query String mà chúng ta muốn chuyển hướng. Với bài blogs này, chúng ta sẽ chọn Query String. Với key là nhatnghia, value là tarus.
      alter-text
      Màn hình tạo Rule.
    • Rule Limits: Chúng ta có thể chọn số lượng rule mà chúng ta muốn tạo.
    • Nhấn Next
      alter-text
      Màn hình tạo Rule.
  • Tại màn hình này, chúng ta sẽ thấy những routing actions.
    • Forward to Target Group: Chúng ta có thể chọn Target Group mà chúng ta muốn chuyển hướng.
      alter-text
      Màn hình tạo Rule.
    • Redirect to URL: Chúng ta có thể chọn URL mà chúng ta muốn chuyển hướng.
      alter-text
      Màn hình tạo Rule.
    • Fixed Response: Chúng ta có thể chọn response mà chúng ta muốn trả về. Ở bài blogs này, chúng ta sẽ chọn Fixed Response. Và trả về 503 Service Unavailable.
      alter-text
      Màn hình tạo Rule.
    • Nhấn Next.
    • Nhấn Create.
      alter-text
      Màn hình Launch Instance.
      Sau khi đã tạo xong Rules thì chúng ta sẽ thử nghiệm bằng cách truy cập vào Load Balancer với Query String nhatnghia=tarus. Đây là kết quả postman khi gọi tới
      alter-text
      Kết quả Postman.

II. Thực hành với NLB - Network Load Balancer

Tại màn hình Load Balancer, chúng ta chọn Create Load Balancer.
  • Nhấn chọn Network Load Balancer, nhấn Create.
    alter-text
    Màn hình tạo Load Balancer.
  • Điền thông tin cần thiết cho Load Balancer.
    alter-text
    Màn hình tạo Load Balancer.
  • Về Network Mappings, chúng ta chọn giống như khi làm việc với ALB
    alter-text
    Màn hình tạo Load Balancer.
Chúng ta cũng sẽ tạo Security Group và Target Group cho NLB.

alter-text
Security Group.
alter-text
Security Group.

Tại màn hình tạo Target Group, chúng ta cũng chọn như khi làm việc với ALB.
  • Chúng ta chọn Instance.
    alter-text
    Target Group.
  • Chúng ta chọn ProtocolTCPPort80.
  • Nhấn Advanced health check settings. Ta sẽ có những thông số cần quan tâm là:
    • Healthy threshold: Số lần kiểm tra mà EC2 Instance phải pass để được coi là healthy.
    • Unhealthy threshold: Số lần kiểm tra mà EC2 Instance phải fail để được coi là unhealthy.
    • Timeout: Thời gian mà EC2 Instance phải trả về response.
    • Interval: Thời gian giữa các lần kiểm tra.
    • Success codes: Các mã code mà EC2 Instance trả về để được coi là healthy.
  • Nhấn Next.
    alter-text
    Target Group.
  • Tương tự với ALB, ta sẽ chọn những EC2 Instance vào Target Group.
  • Nhấn Include as pending below.
  • Nhấn Create Target Group.
    alter-text
    Target Group.
Quay về màn hình tạo Load Balancer, chúng ta chọn Target Group và Security Group đã tạo ở trên.
alter-text
Màn hình tạo Load Balancer.
  • Nhấn Create Load Balancer.
    alter-text
    Màn hình tạo Load Balancer.
    LƯU Ý: Chúng ta cần phải mở port 80 trên Security Group của EC2 Instance allow Security Group của NLB để có thể truy cập vào được.
    alter-text
    Màn hình tạo Load Balancer.

Sau khi tạo xong thì chúng ta có thể truy cập vào được EC2 Instance thông qua NLB Domain.

III. Thực hành với ASG - Auto Scaling

Trước tiên, chúng ta sẽ tạo EC2 Template để có thể tạo Auto Scaling Group.
  • Chúng ta chọn Launch Templates từ menu bên trái.
  • Nhấn Create launch template.
  • Điền thông tin cần thiết cho Launch Template.
    alter-text
    Màn hình tạo EC2 Template.
Tại mục Application and OS Images, chúng ta chọn AMI mà chúng ta muốn sử dụng.
alter-text
Màn hình tạo EC2 Template.
Tại mục Instance Type, chúng ta chọn Instance Type mà chúng ta muốn sử dụng.
  • Chọn t2.micro.
  • Chọn Key Pair.
  • Chọn Security Group, chúng ta sẽ lựa chọn SG giống với 2 EC2 Instance đã tạo trước đó.
    alter-text
    Màn hình tạo EC2 Template.
  • Update User Data giống với 2 EC2 Instance đã tạo đầu bài.
  • Nhấn Create launch template.
    alter-text
    Màn hình tạo EC2 Template.
Tiếp theo, chúng ta sẽ tạo Auto Scaling Group.
  • Chúng ta chọn Auto Scaling Groups từ menu bên trái.
  • Nhấn Create Auto Scaling Group.
    alter-text
    Màn hình tạo ASG.
  • Điền thông tin cần thiết cho Auto Scaling Group.
  • Chúng ta chọn Launch Template mà chúng ta đã tạo ở trên.
    alter-text
    Màn hình tạo ASG.
  • Chúng ta chọn VPC mà chúng ta muốn sử dụng.
  • Chúng ta chọn AZ mà chúng ta muốn sử dụng.
    alter-text
    Màn hình tạo ASG.
  • Chúng ta sẽ Attach vào 2 ELB mà chúng ta đã tạo ở trên.
    alter-text
    Màn hình tạo ASG.
Ở Health Check Type, chúng ta chọn EC2, ELB.
alter-text
Màn hình tạo ASG.
  • Ở màn hình này chúng ta sẽ thấy được 3 tham số:
  • Desired Capacity: Số lượng EC2 Instance mà chúng ta muốn có.
  • Minimum Capacity: Số lượng EC2 Instance tối thiểu.
  • Maximum Capacity: Số lượng EC2 Instance tối đa.
    alter-text
    Màn hình tạo ASG.
  • Nhấn Next
    alter-text
    Màn hình tạo ASG.
  • Nhấn Create Auto Scaling Group.
    alter-text
    Màn hình tạo ASG.
Sau khi tạo xong, chúng ta sẽ thấy được thông tin của Auto Scaling Group. Và chúng ta có thể thấy được các EC2 Instance đã được tạo ra.
  • Các Instance này đã được Mappings vào trong ALB và NLB mà chúng ta đã tạo ở trên.
    alter-text
    Màn hình Resource Map của ALB.
    alter-text
    Màn hình Resource Map của NLB.
    alter-text
    Màn hình tạo EC2 Instance.

IV. Dọn dẹp tài nguyên

  • Chúng ta sẽ xóa tất cả các tài nguyên đã tạo ở trên để tránh tốn phí.
  • Đầu tiên chúng ta sẽ xoá Auto Scaling Group.
  • Sau đó chúng ta sẽ xoá Template.
  • Tiếp theo, chúng ta sẽ xoá Load Balancer.
  • Tiếp theo ta sẽ xoá Target Group.
  • Cuối cùng chúng ta sẽ xoá EC2 Instance.

Vậy là buổi hands on tới đây là hết. Hơi dài, mong các bạn có thể đọc từ từ và nghiền ngẫm chúng. Cảm ơn các bạn đã đọc bài viết của mình. Mong gặp các bạn lại ở bài viết sắp tới.

Bài Viết Liên Quan

[AWS] Chapter 7: AWS ELB - Elastic Load Balancing & Auto Scaling Groups

  • Kai
  • August 25, 2024

Xin chào các bạn, hôm nay mình sẽ tiếp tục với series bài viết về AWS. Trong bài viết này, mình sẽ giới thiệu với các bạn về AWS ELB - Elastic Load Balancing.

Đọc Thêm

[AWS] Chapter 6: AWS EC2 Storage Hands On

  • Kai
  • August 25, 2024

Xin chào các bạn, lại là mình đây. Trong chương này, chúng ta sẽ thực hành với các loại lưu trữ khác nhau trên EC2.

Đọc Thêm

[AWS] Chapter 5: AWS EC2 Storages

  • Kai
  • August 24, 2024

Xin chào các bạn, chúng ta đã tìm hiểu về EC2, cách tạo EC2, cách kết nối vào EC2 và cách sử dụng EC2.

Đọc Thêm