ข้ามไปเนื้อหาหลัก
ประมวลผล· ~16 นาที· อัปเดตล่าสุด

Auto Scaling Group และ Launch Template

เพิ่ม/ลดเครื่องอัตโนมัติตามโหลด

ผู้จัดการเรียกลูกจ้างพาร์ทไทม์

ระบบขยายอัตโนมัติก็เหมือนร้านอาหารที่มีผู้จัดการคอยสังเกตการณ์ — พอช่วงเที่ยงลูกค้าแห่เข้าจนพนักงานเสิร์ฟไม่ทัน (โหลดหนัก) ผู้จัดการจะกดเรียกพนักงานพาร์ทไทม์มาเพิ่มทันที และพอลูกค้ากลับหมด ร้านโล่ง ก็จะสั่งให้พาร์ทไทม์เลิกงานกลับบ้านเพื่อประหยัดค่าแรง ไม่ต้องจ้างคนเยอะๆ มายืนรอเก้อตลอดทั้งวัน

Auto Scaling Group (ASG - กลุ่มการขยายขนาดอัตโนมัติ) คือตัวจัดการที่จะเพิ่มหรือลดจำนวนเซิร์ฟเวอร์ EC2 ให้สอดคล้องกับความต้องการใช้งานจริง (Elasticity) โดยเราจะเป็นคนกำหนดกรอบขีดจำกัด (ค่าต่ำสุด/ค่าที่ต้องการ/ค่าสูงสุด) และให้ ASG ใช้ Launch Template (แบบแปลน) เป็นแม่พิมพ์ว่าจะปั๊มเครื่องหน้าตาแบบไหนออกมา

Auto Scaling Simulator

ASG เพิ่ม/ลดจำนวนเครื่องอัตโนมัติตามโหลด — จ่ายเท่าที่ใช้ ไม่ต้องเปิดเครื่องสูงสุดทิ้งไว้ตลอด

Auto Scaling Group (min 2 / max 10) · 1 เครื่องรับ ~100 ผู้ใช้

EC2
EC2
EC2
EC2
EC2
EC2
EC2
EC2
EC2
EC2
3
เครื่องที่รัน
~$108
ค่าใช้จ่าย/เดือน

โหลดเพิ่มขึ้น ASG ขยายเป็น 3 เครื่องอัตโนมัติ พอคนน้อยลงก็จะลดเครื่องเพื่อประหยัด

เลื่อนจำนวนผู้ใช้ดูเครื่องเพิ่ม/ลดและค่าใช้จ่าย
  • Launch Template (แบบแปลนการสร้าง) — ตัวกำหนดว่าเครื่องใหม่จะใช้ AMI ไหน, สเปกรุ่นใด (Instance type), ฝัง User Data สคริปต์อะไร, และใช้ Security Group วงไหน
  • Scaling Policy (เงื่อนไขการขยาย) — เราตั้งกฎว่าจะเพิ่มเครื่องจากอะไร เช่น ตาม Metric (ถ้ายอด CPU เฉลี่ย > 70%) หรือตั้งขยายตามตารางเวลาล่วงหน้า (Scheduled) เช่น ทุกเช้าวันศุกร์ 8 โมง
  • High Availability (HA) — การวาง ASG ให้ครอบคลุมหลาย AZ จะช่วยให้ระบบมีความทนทาน หากศูนย์ข้อมูลหนึ่งพัง ASG จะฉลาดพอที่จะไปปั๊มเครื่องใหม่ที่โซนที่เหลือมาทดแทนอัตโนมัติ

สรุป Key Takeaways

  • ASG ปรับจำนวนเครื่องอัตโนมัติในกรอบ min/desired/max
  • Launch Template = แบบของเครื่อง, scaling policy = เงื่อนไขเพิ่ม/ลด
  • กระจายข้าม AZ ได้ทั้ง elasticity และ HA

คำถามที่พบบ่อย

Auto Scaling ต้องมี ELB ไหม

ไม่บังคับแต่มักใช้คู่กัน — ASG ทำหน้าที่เพิ่ม/ลดเครื่อง ส่วน ELB กระจาย traffic ไปเครื่องที่มี ถ้าผูกกันแล้ว ASG ใช้ health check ของ ELB ได้ (เครื่องที่ตอบ HTTP ไม่ได้จะถูกแทนที่ ไม่ใช่แค่เครื่องที่ดับ) — คู่ ELB + ASG คือโครงมาตรฐานของทุกโจทย์เว็บ scalable

Scaling policy แบบไหนควรใช้เป็นค่าเริ่มต้น

Target tracking — ตั้งเป้าเดียว เช่น CPU เฉลี่ย 60% แล้วระบบคุมจำนวนเครื่องให้เอง ง่ายและพอสำหรับงานส่วนใหญ่ ส่วน scheduled scaling ใช้เมื่อรู้ pattern ล่วงหน้า (เที่ยงคนเข้าเยอะ) และ predictive scaling ให้ ML ทำนาย — ข้อสอบให้เลือกตามลักษณะโหลดในโจทย์

ทำยังไงไม่ให้ ASG เพิ่มๆ ลดๆ เครื่องถี่เกินไป (flapping)

มี cooldown/warm-up ระหว่างการ scale, ตั้ง threshold ขาขึ้นกับขาลงห่างกันพอ และ scale ขึ้นไว-ลงช้า (aggressive out, conservative in) เพราะเพิ่มช้าคือผู้ใช้เดือดร้อน แต่ลดช้าแค่เสียเงินเพิ่มนิดหน่อย

ลองทำ Quiz ท้ายบท

คำถามแนวข้อสอบของโมดูลนี้ 5 ข้อ · เฉลยทันที

อ่านจบแล้วอย่าลืมทำเครื่องหมาย