Kiểm tra giải pháp dynamic scaling

Tổng quan

ℹ️ Thông tin: Dynamic scaling tự động điều chỉnh dung lượng ứng dụng của bạn dựa trên các số liệu theo thời gian thực được thu thập bởi Amazon CloudWatch. Khi được cấu hình đúng cách, Auto Scaling Group (ASG) của bạn sẽ khởi chạy hoặc chấm dứt các instances để phản hồi lại những thay đổi về nhu cầu workload, đảm bảo hiệu suất tối ưu và tối ưu hóa chi phí.

Hiểu về các số liệu của Dynamic Scaling

Dynamic scaling có thể được kích hoạt (triggered) bởi nhiều metrics khác nhau, bao gồm:

  • Phần trăm CPU utilization
  • Khối lượng network traffic
  • Số lượng request trên mỗi target của Application Load Balancer
  • Các custom metrics cụ thể cho ứng dụng của bạn

💡 Mẹo chuyên nghiệp: Việc lựa chọn scaling metric nên phù hợp với các điểm nghẽn hiệu suất của ứng dụng. Đối với các ứng dụng web, số lượng request trên mỗi target thường cung cấp hành vi scaling phản hồi nhanh và chính xác nhất.

Cấu hình Dynamic Scaling

Bây giờ, hãy tiến hành cấu hình dynamic scaling:

  1. Điều hướng đến tab Automatic scaling của ASG của bạn
  2. Nhấp vào Create dynamic scaling policy

Create Dynamic Scaling Policy

  1. Cấu hình policy với các tham số sau:
    • Policy type: Target tracking scaling
    • Scaling policy name: Request Over 500 per target
    • Metric type: Application Load Balancer request count per target
    • Target group: FCJ-Management-TG
    • Target value: 500 (requests)
    • Instance warmup: 60 seconds
    • Nhấp vào Create để triển khai policy

Dynamic Scaling Policy Configuration

ℹ️ Thông tin: Tham số Instance warmup xác định khoảng thời gian mà một instance mới khởi chạy sẽ bị loại trừ khỏi các aggregated metrics. Điều này cho phép instance khởi tạo đầy đủ trước khi nó được xem xét trong các quyết định scaling. Đối với các production workloads, hãy cân nhắc đặt giá trị này cao hơn (120-300 giây) tùy thuộc vào yêu cầu khởi tạo của ứng dụng.

Sau khi tạo thành công, bạn sẽ thấy dynamic scaling policy của mình trong danh sách:

Dynamic Scaling Policy Created

Kiểm tra Dynamic Scaling

Để đánh giá hiệu quả của dynamic scaling:

  1. Bắt đầu chương trình load testing của bạn với cùng cấu hình đã sử dụng trong các bài kiểm tra trước

Load Testing Program

  1. Quay lại tab Activity của ASG để giám sát các hành động scaling

Load Testing Program

  1. Giám sát EC2 Console để quan sát các request metrics cho các instances của bạn ⚠️ Cảnh báo: CloudWatch metrics có thể mất vài phút để cập nhật. Hãy kiên nhẫn và quan sát các đường xu hướng khi chúng bắt đầu ổn định hoặc tăng lên.

ASG Scaling Activities

ℹ️ Thông tin: Trong ví dụ này, ASG đã xác định rằng cần ba instances để xử lý khối lượng request hiện tại, mở rộng quy mô đến maximum desired capacity (dung lượng mong muốn tối đa) mà chúng ta đã cấu hình.

  1. Trong EC2 Console, chọn tất cả các instances để so sánh các performance metrics của chúng

Multi-Instance Performance Metrics

💡 Mẹo chuyên nghiệp: Hãy chú ý cách đường màu xanh lá cây (đại diện cho instance ban đầu của bạn) giảm dần khi các instances mới (được đại diện bởi các màu khác) bắt đầu xử lý các phần của traffic. Điều này chứng minh việc load balancer đang phân phối các requests qua tất cả các instances khả dụng.

  1. Dừng chương trình load testing để quan sát hành vi thu hẹp quy mô

  2. Giám sát tab Activity của ASG khi các instances không cần thiết bị chấm dứt

Scale-In Activities

⚠️ Cảnh báo: Các hành động scale-in thường có một khoảng thời gian chờ để ngăn chặn các dao động scaling liên tục. Điều này có nghĩa là việc chấm dứt các instances dư thừa có thể mất vài phút sau khi tải giảm.

Những thông tin chuyên sâu và Best Practices

ℹ️ Thông tin: Dynamic scaling phản hồi lại các metrics theo thời gian thực, khiến nó trở nên lý tưởng cho các workloads có traffic patterns không thể đoán trước. Tuy nhiên, có những lưu ý quan trọng sau:

  1. Metric Selection: Chọn các metrics có tương quan trực tiếp đến trải nghiệm người dùng và hiệu suất hệ thống.
  2. Target Values: Đặt các giá trị mục tiêu phù hợp dựa trên performance testing và các yêu cầu của ứng dụng.
  3. Warmup Periods: Cấu hình thời gian warmup thực tế để cho phép ứng dụng của bạn khởi tạo đầy đủ.
  4. Scale-In Protection: Cân nhắc bật tính năng instance scale-in protection cho các workloads quan trọng.
  5. Monitoring: Thường xuyên xem xét các hoạt động scaling để tối ưu hóa cấu hình của bạn.

🔒 Lưu ý về bảo mật: Khi triển khai dynamic scaling, hãy đảm bảo các security groups, IAM roles và network configurations của bạn được thiết lập đúng cách để duy trì trạng thái bảo mật trong suốt các sự kiện scaling.

Kết luận

Dynamic scaling cung cấp một cách hiệu quả để tự động điều chỉnh dung lượng dựa trên nhu cầu theo thời gian thực. Mặc dù nó mang lại những lợi thế đáng kể so với manual hoặc scheduled scaling cho các workloads không thể đoán trước, nhưng nó vẫn có những hạn chế cố hữu:

  • Luôn có một độ trễ không thể tránh khỏi giữa việc thu thập metric, đánh giá và thực hiện hành động scaling.
  • Các đợt tăng traffic đột biến có thể tạm thời làm giảm hiệu suất trước khi quá trình scaling hoàn tất.
  • Việc xác định các target values tối ưu đòi hỏi quá trình kiểm tra và tinh chỉnh.

Đối với các workloads có patterns dễ đoán hơn hoặc những workloads yêu cầu phản hồi nhanh hơn với các điều kiện thay đổi, hãy cân nhắc triển khai predictive scaling, phần mà chúng ta sẽ khám phá trong phần tiếp theo.