Application Auto Scaling

PlAwAnSaI

Administrator
Feature Task Scale-in Protection สำหรับ Amazon ECS

Feature Task Scale-in Protection สำหรับ Amazon ECS ช่วยให้ผู้ใช้สามารถป้องกันไม่ให้ Task บางตัวที่สำคัญถูก Terminate โดยอัตโนมัติเมื่อเกิดเหตุการณ์ Scale-in ของบริการ (Service Auto Scaling) หรือเมื่อมีการ Deploy Task รุ่นใหม่

ผู้ใช้สามารถตั้งค่าว่างานที่สำคัญให้ได้รับการป้องกันจาก Scale-in ได้ โดยใช้ Endpoint ใหม่ของ ECS Agent หรือผ่าน API ใหม่ที่ AWS จัดไว้

ที่มาของความต้องการ:

  • Feature Service Auto Scaling ช่วยให้ ECS สามารถปรับจำนวน Task ขึ้นหรือลงตามความต้องการ (Load) โดยอัตโนมัติ

  • แต่ในบางกรณี ผู้ใช้ต้องการให้บาง Task ทำงานต่อไป แม้ในช่วงที่ Load ต่ำ เช่น งานที่ Run ยาวนาน (Long-running Job), Server Game ที่ต้องคงสถานะไว้, หรืองานที่ยังไม่เสร็จสิ้น

  • ก่อนหน้านี้ ไม่มีวิธีง่าย ๆ ที่ ECS จะรู้ว่างานใดควรได้รับการ “ไม่ถูกหยุด” เมื่อ Scale-in เกิดขึ้น จึงต้องทำ Workaround ซับซ้อน

แนวทางแก้ไข (Solution Overview):

Feature Task Scale-in Protection ให้ผู้ใช้สามารถใช้ Attribute ใหม่ชื่อ protectionEnabled เพื่อทำงาน 2 อย่าง:

  1. ตั้งค่าว่า Task ไหนให้ “ได้รับการป้องกัน” (Protection)
    ถ้าตั้ง protectionEnabled = true > Task นั้นจะไม่ถูกหยุดโดยการ Scale-in หรือ Deploy

  2. ปลดการป้องกันเมื่อไม่ได้ใช้งานแล้ว
    เมื่อ Task ทำงานเสร็จ ผู้ใช้สามารถตั้ง protectionEnabled = false ให้ Task กลับเข้าสู่สถานะที่สามารถถูกหยุดได้

มี 2 วิธีหลักในการตั้ง/ปลด Protection:

  • ภายใน Container / ผ่าน ECS Agent Endpoint
    Task สามารถ “รู้เอง” ว่าต้องการให้ตัวเองได้รับการป้องกัน (เช่น เมื่อเริ่มงานจาก Queue) แล้วตั้ง Protection ผ่าน Endpoint ภายใน Container

  • ผ่าน API (UpdateTaskProtection)
    ส่วนควบคุมภายนอกสามารถ Management หลาย Task พร้อมกัน โดยเรียก API เพื่อ Mark งานที่ต้องป้องกัน

ตัวอย่างการใช้งาน

  • SQS Queue Consumer:
    งานดึงข้อความจาก Queue มา แล้วประมวลผล เมื่องานกำลังประมวลผล จะตั้ง Protection เพื่อให้ ECS ไม่หยุดงานกลางทาง และเมื่อเสร็จแล้วจึงปลด Protection

  • บริการ WebSocket / Game / Server ที่ใช้งานตลอด:
    ถ้ามีการเชื่อมต่อ Active อยู่ จะตั้ง Protection เพื่อไม่ให้ถูกหยุดกลางทาง และเมื่อลูกค้า (Client) ปิดการเชื่อมต่อทั้งหมด จึงปลด Protection

สรุป

Feature Task Scale-in Protection ช่วยให้ผู้ใช้ควบคุมได้มากขึ้นว่างานใดควร “คงอยู่” เมื่อเกิด Scale-in หรือ Deploy และช่วยลดความยุ่งยากในการสร้างเครื่องมือเฉพาะทางเพื่อจัดการเรื่องนี้
Code:
https://aws.amazon.com/blogs/containers/announcing-amazon-ecs-task-scale-in-protection
:cool:
 
Last edited:

PlAwAnSaI

Administrator
วิธีการทำงานของ Target Tracking Scaling สำหรับ Application Auto Scaling

ภาพรวม:

เมื่อใช้ นโยบายปรับขนาดแบบ Target Tracking (Target Tracking Scaling Policy) จะกำหนด:

  • Metric — ที่ต้องการติดตาม เช่น ค่าเฉลี่ยการใช้งาน CPU หรือ จำนวนคำขอเฉลี่ยต่อ Target

  • Target Value — ค่าที่ต้องการให้ Metric อยู่ใกล้เคียง เช่น CPU ใช้งาน 50% หรือ 1,000 คำขอ/Target/นาที

ระบบ Application Auto Scaling จะสร้างและจัดการ Alarm ของ CloudWatch ให้โดยอัตโนมัติ แล้วคำนวณการปรับเพิ่มหรือลดทรัพยากร (Capacity) เพื่อให้ Metric ใกล้เคียงค่า Target ที่ตั้งไว้

  • ถ้า Metric สูงกว่าค่า Target → ระบบจะ Scale Out (เพิ่มทรัพยากร) เพื่อดึงค่า Metric ลง

  • ถ้า Metric ต่ำกว่าค่า Target → ระบบจะ Scale In (ลดทรัพยากร) เพื่อให้ทรัพยากรถูกใช้งานเต็มที่

เพื่อป้องกันการปรับขนาดบ่อยเกินไป (Oscillation) จะมีช่วงพักหน่วงเวลา (Cooldown Period) ระหว่างการ Scaling ต่าง ๆ

target-tracking-scaling-policy.png


ระบบมักจะ “Aggressive” เมื่อต้องเพิ่มทรัพยากร (Scale Out) มากกว่าการลดทรัพยากร (Scale In) — ถ้า Metric ถึงค่า Target แล้ว ระบบจะเพิ่มทรัพยากรทันที และจะลดทรัพยากรอย่างระมัดระวังเท่านั้นเมื่อ Metric ต่ำลงพอสมควร

การเลือก Metrics:
  • สามารถใช้ Metric ที่กำหนดไว้ล่วงหน้า (Predefined) หรือ Metric แบบกำหนดเอง (Custom)
  • Metric ที่เลือกต้องเป็น Metric ที่บ่งบอก “การใช้งาน” ของ Scalable Target ได้ (เช่น ค่าจะเพิ่มหรือลดตามทรัพยากรที่มี)
  • ถ้าใช้ Metric ALBRequestCountPerTarget (จำนวนคำขอต่อ Target) ต้องระบุ ResourceLabel เพื่อบอกกลุ่ม Target ที่เกี่ยวข้อง
  • ถ้า Metric ส่งค่า 0 จริง ๆ ไปยัง CloudWatch (เช่น เมื่อไม่มีการเข้าถึง) Application Auto Scaling อาจปรับ Scale In ให้ถึง 0 ถ้าตั้งขั้นต่ำ (Minimum Capacity) ของ Scalable Target เป็น 0
  • แทนที่จะสร้าง Metric ใหม่ อาจใช้ Metric Math รวม Metric ที่มีอยู่เพื่อใช้ในการ Scaling Policy ได้
  • ระบบ Target Tracking จะประเมิน Metric ที่รวมข้อมูลเป็นช่วงเวลา 1 นาที (One-minute Granularity) เพื่อให้ตอบสนองได้เร็วขึ้น
Code:
https://docs.aws.amazon.com/autoscaling/application/userguide/target-tracking-scaling-policy-overview.html
:cool:
 
Last edited:
Top