Site logo
Authors
  • avatar Nguyễn Đức Xinh
    Name
    Nguyễn Đức Xinh
    Twitter
Published on
Published on

Hướng dẫn tạo Application Load balancer trên AWS

Trong lĩnh vực điện toán đám mây, việc cấu hình Application Load Balancer (ALB) đúng cách là chìa khóa để đảm bảo tính khả dụng cao, khả năng mở rộng, và hiệu suất tối ưu cho ứng dụng web của bạn. Bài viết này sẽ hướng dẫn từng bước để bạn dễ dàng tạo và cấu hình ALB trên AWS.

Yêu cầu trước khi bắt đầu

Để thực hiện bài hướng dẫn này, bạn cần:

  • Tài khoản AWS
  • Kiến thức cơ bản về AWS EC2

Application Load Balancers là gì?

AWS Application Load Balancer là một load balancer ở layer 7, dùng để phân phối lưu lượng truy cập HTTP và HTTPS. ALB hoạt động dựa trên các quy tắc định tuyến nâng cao, cho phép định tuyến dựa trên tên miền hoặc đường dẫn URL. Đây là một giải pháp hiệu quả và đáng tin cậy để xử lý lưu lượng web.

Lợi ích chính của ALB:

  • Tính khả dụng cao: ALB đảm bảo cân bằng tải giữa nhiều server, giảm thiểu rủi ro downtime.
  • Hiệu suất tối ưu: Chuyển hướng traffic đến các máy chủ hoạt động hiệu quả nhất.
  • Tùy chỉnh mạnh mẽ: Định tuyến linh hoạt dựa trên nhu cầu cụ thể của ứng dụng.

Chuẩn bị EC2 Instances

Trước tiên, bạn cần chuẩn bị hai EC2 instances để làm mục tiêu cho ALB.

Ở bài này sẽ tập trung vào Elastic Load balancer nên bạn có thể tìm hiểu cách tạo EC2 Instances chi tiết tại đây: [Hướng dẫn cách tạo AWS EC2] (https://www.ducxinh.com/techblog/huong-dan-cach-tao-aws-ec2)

Vào AWS Management Console và chọn Launch Instances. Thiết lập như sau:

  • Name: machine-group001
  • Number of instances: 2
  • AMI - Application and OS Images: Chọn Amazon Linux 2023
  • Instance type: t2.micro (miễn phí theo gói Free Tier)
  • Security Group: Tạo hoặc sử dụng Security Group có sẵn đảm bảo các port sau được mở:
    • HTTP (80)
    • HTTPS (443)
    • SSH (22) (chỉ cho phép IP của bạn).
  • Trong phần Advanced details, nhập script vào mục User data để tự động cài đặt Nginx:
#!/bin/bash

dnf update -y
dnf install nginx -y
systemctl start nginx
systemctl enable nginx

sudo echo "<h1>EC2 Linux Instance: $(hostname -f)</h1>" > /usr/share/nginx/html/index.html

Giải thích:

  • User data là là các đoạn script sẽ được tự động thực thi(với quyền Root) khi instance khởi động lần đầu(và sẽ chỉ chạy 1 lần duy nhất)
  • Ở đây tôi sẽ nhập 1 số script để cài đặt Nginx trên Amazon Linux 2023

EC2 User data Nginx

Nhấn Launch Instance và chờ quá trình hoàn tất.

EC2 User data Nginx

Sau khi khởi tạo xong, mở trình duyệt và nhập Public IP của từng instance để kiểm tra nội dung hiển thị.

EC2 User data Nginx

Tạo target group

Target Group là một tập hợp các mục tiêu (có thể là instances) mà ALB sẽ phân phối lưu lượng truy cập đến. Target Group giúp bạn tổ chức và quản lý các mục tiêu dễ dàng hơn. Ví dụ: bạn có thể nhóm các EC2 instances phục vụ một ứng dụng web cụ thể vào một Target Group. ALB sử dụng Target Group để kiểm tra sức khỏe (Health Check) và đảm bảo chỉ những mục tiêu "khỏe mạnh" mới nhận được traffic.

Thực hiện tạo Target Group:

  • Để tạo Tạo target group, Vào EC2 Dashboard → Load Balancing → Target Groups

EC2 User data Nginx

  • Nhấn Create target group và điền thông tin:

Cài đặt Basic configuration

ở mục Basic configuration bạn cài đặt như sau:

  • Target type: Ở mục này có các lựa chọn: Instances, IP addresses, Lambda function, Application Load Balancer. Ở ví dụ này chúng ra sẽ chọn Instances
  • Target group name: TG-group-001
  • Protocol: HTTP
  • Port: 80
  • VPC: Chọn VPC giống với EC2 instances
  • Protocol version: HTTP1

EC2 User data Nginx

EC2 User data Nginx

Health checks

ở mục Health checks bạn cài đặt như sau:

  • Health check protocol: HTTP
  • Health check path: /
  • Phần Advanced health check settings, hãy dùng mặc định và sẽ tìm hiểu ở các bài biết sau.
    • Health check port: Traffic port
    • Healthy threshold: 5
    • Unhealthy threshold: 2
    • Timeout: 5
    • Interval: 30
    • Success codes: 200

Tiếp theo hãy bấm nút Next để cài đặt Targets

Đăng ký targets

Ở mục Register targets, hãy chọn 2 instance vừa tạo và bấm Include as pending below

EC2 User data Nginx

Tiếp theo bạn bấm Create target group để xác nhận

EC2 User data Nginx

Tạo Application Load balancer

Thực hiện tạo ALB:

  • Vào EC2 Dashboard → Load Balancing → Load Balancers.
  • Nhấn Create load balancer → chọn loại Application Load Balancer.
    • Ngoài Application Load Balancer thì còn các loại khác như Network Load Balancer, Gateway Load Balancer

EC2 User data Nginx

  • Cấu hình các thông tin sau:
Basic configuration
  • Load balancer name: ALB-group-001
  • Scheme: Internet-facing (cho phép truy cập công khai).
    • Internet-facing - cho truy cập công khai
    • Internal - ứng dụng nội bộ
  • Load balancer IP address type: IPv4
    • Các lựa chọn khác: IPv4, Dualstack, Dualstack without public IPv4

EC2 User data Nginx

Network mapping
  • VPC: Chọn VPC giống với EC2 instances
  • Availability Zones: Chọn tất cả các Subnets để đảm bảo tính dự phòng và truyền tải lưu lượng đến tất cả.

EC2 User data Nginx

Security groups

Sử dụng Security Group đã mở port 80 và 443.

Listeners and routing

Ở đây sẽ sẽ cấu hình Listener như sau:

  • Protocol: HTTP
  • Port: 80
  • Default action: Gán Target Group vừa tạo.

EC2 User data Nginx

Optimize

AWS hổ trợ tích hợp 1 số các Service khác để tối ưu hệ thống(Phần này ta sẽ tìm hiểu sau.).

  • Amazon CloudFront + AWS Web Application Firewall (WAF): Tích hợp để Performance, Availability(Tính khả dụng), Security
  • AWS Web Application Firewall (WAF): Tích hợp để tối ưu Security
  • AWS Global Accelerator: Tích hợp để tối ưu Performance, Availability(Tính khả dụng)

Ok. bây giờ hãy review và bấm vào Create load balancer để tiến hành tạo Application Load Balancers

Create load balancer

Lúc này Load balancer sẽ có status là Provisioning. Bạn chờ tầm 2 tới 3 phút về kiểm tra lại. Lúc này status đã status đã chuyển sang Active

Overview & Resource map

Create load balancer

Target groups

Create load balancer

Kiểm tra và sử dụng Load Balancer

Bây giờ chúng ta bắt đầu test Load Balancer bằng cách sao chép DNS name của Load Balancer và dán vào trình duyệt. http://ALB-group-001-774493454.ap-northeast-1.elb.amazonaws.com Bạn sẽ thấy ứng dụng web được host trên 2 EC2 instance vừa được tạo

Khi reload trang, nội dung từ hai instances sẽ hiển thị xen kẽ, xác nhận rằng ALB đã phân phối lưu lượng thành công tới 2 instance.

Load balancer đang hiển thị Nội dung của Instance 1

Application Load balancer demo 1

Load balancer đang hiển thị Nội dung của Instance 2

Application Load balancer demo 2

Kết luận

Application Load Balancer là thành phần không thể thiếu trong việc xây dựng hệ thống ứng dụng hiện đại với khả năng mở rộng và dự phòng cao. Bài hướng dẫn này cung cấp đầy đủ các bước giúp bạn dễ dàng cấu hình ALB trên AWS.

Mở rộng

  • Sticky Sessions: Đảm bảo tất cả yêu cầu từ một client đến cùng một instance.
  • Listener Rules: Định tuyến nâng cao dựa trên điều kiện từ yêu cầu của client.
  • Tích hợp CloudFront & WAF: Tăng cường hiệu suất và bảo mật