Giới thiệu

Giới thiệu

ℹ️ Thông tin: Trong workshop này, chúng ta sẽ triển khai một ứng dụng sử dụng Amazon EC2 Auto Scaling để đảm bảo khả năng mở rộng linh hoạt dựa trên nhu cầu của người dùng. Ngoài ra, chúng ta sẽ thiết lập Elastic Load Balancing để phân phối lưu lượng truy cập và quản lý hiệu quả các yêu cầu của người dùng đến tầng ứng dụng.

Trước khi tiếp tục, vui lòng xem lại tài liệu Deploying FCAJ Management Application on a Windows/Amazon Linux Virtual Machine để hiểu quy trình triển khai cơ bản. Chúng ta sẽ sử dụng máy ảo đã được cài đặt FCAJ Management làm nền tảng cho việc cấu hình Auto Scaling Group.

Amazon EC2 Auto Scaling

ℹ️ Thông tin: Khi các ứng dụng đi vào vận hành thực tế, lưu lượng người dùng sẽ biến động tự nhiên theo thời gian. Để duy trì hiệu suất tối ưu và hiệu quả về chi phí, chúng ta cần điều chỉnh số lượng các (instances) một cách tương ứng. Amazon EC2 Auto Scaling cung cấp một giải pháp tự động giúp quá trình mở rộng này trở nên linh hoạt và không cần can thiệp thủ công.

Amazon EC2 Auto Scaling tự động điều chỉnh số lượng EC2 instances dựa trên nhu cầu của ứng dụng. Nó có khả năng scale out (thêm instances) khi lưu lượng tăng lên và scale in (loại bỏ instances) khi lưu lượng giảm xuống, giúp tối ưu hóa việc sử dụng tài nguyên và giảm chi phí. Nó cũng tăng cường tính sẵn sàng cao bằng cách phân phối các instances trên nhiều Availability Zones, đảm bảo vận hành liên tục ngay cả khi một phần hạ tầng gặp sự cố.

Scaling strategy

Trong workshop này, chúng ta sẽ tìm hiểu các chiến lược mở rộng sau:

  1. Manual Scaling: Điều chỉnh thủ công số lượng EC2 instances trong Auto Scaling group dựa trên nhu cầu dự kiến. Phương pháp này yêu cầu sự can thiệp của con người và không tự động phản hồi theo các chỉ số (metrics).

  2. Dynamic Scaling: Tự động điều chỉnh dung lượng dựa trên các chỉ số thời gian thực như CPU utilization, lưu lượng mạng hoặc các chỉ số CloudWatch tùy chỉnh. Dynamic scaling bao gồm ba cách tiếp cận chính:

    • Target Tracking Scaling: Duy trì một giá trị chỉ số cụ thể (ví dụ: 50% CPU utilization).
    • Step Scaling: Phản hồi các ngưỡng chỉ số bằng cách điều chỉnh dung lượng theo tỷ lệ.
    • Simple Scaling: Điều chỉnh dung lượng dựa trên một ngưỡng chỉ số duy nhất.
  3. Scheduled Scaling: Cấu hình các mốc thời gian cụ thể để tự động tăng hoặc giảm số lượng instances, chẳng hạn như tăng dung lượng trong giờ làm việc và giảm trong giờ nghỉ. Cách này hoạt động tốt cho các mô hình lưu lượng có thể dự đoán được.

  4. Predictive Scaling: Dự báo nhu cầu dung lượng trong tương lai bằng cách phân tích các mô hình tải lịch sử. Cách tiếp cận chủ động này cho phép Amazon EC2 Auto Scaling thực hiện scale out trước khi lưu lượng tăng lên theo dự kiến, đảm bảo hiệu suất tối ưu trong các giai đoạn cao điểm.

Launch Templates

ℹ️ Thông tin: Một Launch Template là một cấu hình chứa tất cả các tham số cần thiết để khởi chạy các EC2 instances. Nó lưu trữ các thông số kỹ thuật như instance type, Amazon Machine Image (AMI), key pair, cài đặt mạng, security groups và các chi tiết cấu hình EC2 khác. Launch Templates đơn giản hóa quá trình tạo instance và cho phép các Auto Scaling groups triển khai nhất quán các instances đã được cấu hình đúng cách.

💡 Mẹo chuyên nghiệp: Launch Templates hỗ trợ tính năng versioning, cho phép bạn lặp lại các cấu hình của mình trong khi vẫn giữ khả năng khôi phục nếu cần thiết.

Elastic Load Balancing

ℹ️ Thông tin: Elastic Load Balancing tự động phân phối lưu lượng truy cập ứng dụng đến nhiều đích khác nhau, chẳng hạn như EC2 instances, containers và các địa chỉ IP. Nó giúp đảm bảo tính sẵn sàng cao và khả năng chịu lỗi bằng cách ngăn chặn bất kỳ tài nguyên đơn lẻ nào bị quá tải lưu lượng. Nếu một máy chủ gặp sự cố, lưu lượng sẽ tự động được chuyển hướng đến các máy chủ khỏe mạnh, duy trì trải nghiệm người dùng liền mạch.

🔒 Lưu ý về bảo mật: Elastic Load Balancing tích hợp với AWS Certificate Manager để cung cấp tính năng SSL/TLS termination, giúp tăng cường bảo mật cho ứng dụng của bạn mà không gây thêm tải tính toán cho các instances.

Target Groups

ℹ️ Thông tin: Một Target Group là một thành phần của Elastic Load Balancing dùng để xác định và quản lý các targets mà bộ cân bằng tải sẽ định tuyến lưu lượng truy cập. Target Groups cho phép bạn đăng ký nhiều EC2 instances, cấu hình kiểm tra sức khỏe và thiết lập các quy tắc định tuyến. Chúng đóng vai trò là cầu nối giữa bộ cân bằng tải và các instance ứng dụng, cho phép phân phối lưu lượng thông minh dựa trên tình trạng sức khỏe và tính sẵn sàng.