AWS Auto Scaling

Dynamic Scaling

  • Target Tracking: Theo dõi 1 chỉ số và duy trình quanh ngưỡng đó tự động
  • Simple/Step Scaling: Tự tạo Alarm và chỉ định số instance add/remove
  • Scheduled: Scale theo event đã đặt trước, vd như 10h tối ngày xyz hoặc hàng ngày lúc abc giờ.

Predictive Scaling

Dựa theo lịch sử Load/Capacity của group để dự đoán các action scaling.

Mặc định EC2 không có EC2 memory utilization, phải cài cloudwatch agent mới có metric đó. AWS recommend metric 1 minute cho ASG.

  • ASGAverageCPUUtilization
  • ASGAverageNetworkIn
  • ASGAverageNetworkOut
  • ALBRequestCountPerTarget

Scaling Cooldown

Khoảng thời gian không thực hiện terminate/launch instance, khi có 1 event Scaling vừa được thực hiện trước đó

Lifecycle Hook

  • Define script sẽ run trước khi vào trạng thái InService hoặc trước khi bị terminate
  • Tích hợp cùng EventBridge, SNS, SQS
    • Sử dụng EventBridge sẽ có nhiều option để gửi noti hơn là sử dụng trực tiếp SNS
Ví dụ Lifecycle Hook

Termination Policy

  • Default: AZ nhiều instance nhất -> launch template/configuration cũ nhất -> gần billing hour nhất
  • AllocationStrategy
  • OldestLaunchTemplate
  • OldestLaunchConfiguration
  • ClosestToNextInstanceHour
  • NewestInstance
  • OldestInstance
  • Có thể chỉ định nhiều policy và sẽ được apply theo thứ tự
  • Có thể sử dụng lambda để tính toán instance nào sẽ terminate

Warm Pool

  • Instance đã được cài đặt sẵn, khi có scale out sẽ chuyển sang group ngay, giảm thời gian scaleout
  • Chỉ định size
    • Min: luôn luôn trong warm pool
    • Max prepared: Max của Group hoặc set 1 số cụ thể
  • Instance State có thể là Running, Stopped, Hibernated
  • Không tác động tới Metric của ASG
  • Re-use Policy: Có thể setting để khi Scale-in, instance không bị terminate mà quay trở lại warm pool, chờ event Scale-out
Sự khác biệt giữa các Instance State
Warm Pools – Lifecycle Hooks

Scaling Process

Scaling Setting

Suspended Processes của Auto Scaling có thể hữu ích trong một số trường hợp sau:

  1. Thực hiện cập nhật hệ thống: Nếu bạn đang thực hiện cập nhật một số thành phần của ứng dụng, bạn có thể đình chỉ quá trình Auto Scaling trong khi các thay đổi được triển khai và kiểm tra tính ổn định của hệ thống trước khi kích hoạt Auto Scaling trở lại.
  2. Thực hiện bảo trì hệ thống: Nếu bạn cần thực hiện bảo trì hệ thống, đình chỉ quá trình Auto Scaling trong khi bạn thực hiện các tác vụ bảo trì sẽ giúp bạn tránh mất mát dữ liệu và giảm thiểu các vấn đề xảy ra trong quá trình bảo trì.
  3. Kiểm tra thử nghiệm: Nếu bạn đang kiểm tra thử nghiệm một số thay đổi trên ứng dụng của mình, đình chỉ quá trình Auto Scaling có thể giúp bạn tạm dừng các thay đổi đó và kiểm tra tính ổn định của ứng dụng trước khi kích hoạt Auto Scaling trở lại.

Instance Refresh

Khi tạo Launch template mới, xoá các instance có launch template cũ và tạo các instance mới theo Launch template mới(Sử dụng API StartInstanceRefresh). Có thể chỉ định warm-up time để chỉ khoảng thời gian trước khi instance có thể healthy

Application Auto Scaling

  • Monitor app, tự động điều chỉnh capacity để phù hợp performance
  • Setup Scaling cho nhiều resource trên nhiều service từ 1 nơi duy nhất
  • Chọn App, Service và resource, phần còn lại để service làm
  • Tìm kiếm resource bằng CloudFormation Stack, Tag, hoặc EC2 ASG
  • Sử dụng Scaling Plan để tự động add/remove capacity
Các service được support bởi Application Auto Scaling

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *