0Pricing
AWS Solutions Architect · บทเรียน

การรีเฟรชอินสแตนซ์และฮุกวงจรชีวิต

ทยอยนำเทมเพลตการเปิดใช้งานใหม่มาใช้ด้วยการรีเฟรชอินสแตนซ์ และใช้ฮุกวงจรชีวิตเพื่อเรียกใช้ตรรกะกำหนดเองก่อนเปิดใช้งานหรือยุติอินสแตนซ์

การรีเฟรชอินสแตนซ์และฮุกวงจรชีวิต เป็นบทเรียน AWS Solutions Architect ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน AWS Solutions Architect และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส AWS Solutions Architect มีบทเรียนทั้งหมด 4 บทเรียน

ปัญหาของการอัปเดตอินสแตนซ์แบบทยอย

เมื่อคุณอัปเดต Launch Template (AMI ใหม่ ข้อมูลผู้ใช้ใหม่ หรือประเภทอินสแตนซ์ใหม่) อินสแตนซ์ที่กำลังทำงานอยู่ใน ASG จะไม่ถูกแทนที่โดยอัตโนมัติ แต่ยังคงใช้การกำหนดค่าเดิมต่อไป หากต้องการเผยแพร่การเปลี่ยนแปลง คุณต้อง แทนที่อินสแตนซ์ การยุติและเปิดใช้อินสแตนซ์ใหม่ด้วยตนเองมีความเสี่ยงและอาจเกิดข้อผิดพลาดได้ง่าย Instance Refresh จะทำให้กระบวนการนี้เป็นอัตโนมัติ พร้อมการควบคุมความปลอดภัยที่กำหนดค่าได้

Instance Refresh: วิธีการทำงาน

Instance Refresh จะแทนที่อินสแตนซ์ของ ASG เป็นชุด ๆ แบบทยอย ในแต่ละขั้น ระบบจะยุติอินสแตนซ์เก่าหนึ่งชุด รอให้อินสแตนซ์ใหม่ผ่านการตรวจสอบสถานะ แล้วจึงดำเนินการต่อกับชุดถัดไป คุณควบคุมความเร็วได้ด้วย MinHealthyPercentage (เปอร์เซ็นต์ขั้นต่ำของความจุที่ต้องยังคงมีสถานะปกติระหว่างการรีเฟรช) และเวลา InstanceWarmup ซึ่งเป็นตัวเลือกเสริม

aws autoscaling start-instance-refresh \
  --auto-scaling-group-name 'MyAppASG' \
  --preferences '{
    "MinHealthyPercentage": 80,
    "InstanceWarmup": 300,
    "CheckpointPercentages": [20, 50, 100],
    "CheckpointDelay": 600
  }'

MinHealthyPercentage และขนาดชุด

MinHealthyPercentage กำหนดขีดต่ำสุดของความจุที่มีสถานะปกติระหว่างการรีเฟรช หากกำหนดเป็น 90% ระบบจะแทนที่ฟลีตครั้งละเพียง 10% ทำให้ช้าลงแต่ปลอดภัยกว่า ค่า 50% จะแทนที่ฟลีตครึ่งหนึ่งในครั้งเดียว ทำให้เร็วกว่าแต่มีความซ้ำซ้อนน้อยลง ASG จะคำนวณขนาดชุดโดยอัตโนมัติตามเปอร์เซ็นต์นี้และความจุเป้าหมายปัจจุบันของคุณ สำหรับเวิร์กโหลดในระบบจริง ควรเลือกเปอร์เซ็นต์ที่สูงกว่าเพื่อรักษาความพร้อมใช้งาน

จุดตรวจสอบสำหรับการทยอยเปิดตัวแบบคานารี

Checkpoints ช่วยให้คุณหยุด Instance Refresh ชั่วคราวที่จุดเปอร์เซ็นต์ที่กำหนดไว้ล่วงหน้าได้ ตัวอย่างเช่น คุณสามารถรีเฟรชอินสแตนซ์ 20% หยุดชั่วคราว 10 นาทีเพื่อเรียกใช้การทดสอบเบื้องต้น แล้วดำเนินการต่อ หากตรวจพบปัญหาที่จุดตรวจสอบใด ๆ คุณสามารถยกเลิกการรีเฟรชได้ โดย ASG จะหยุดการแทนที่อินสแตนซ์เพิ่มเติม แต่ปล่อยให้อินสแตนซ์ที่แทนที่ไปแล้วทำงานต่อ (อินสแตนซ์เหล่านั้นใช้เทมเพลตใหม่อยู่แล้ว) รูปแบบนี้ถือเป็นการนำไปใช้งานแบบคานารีสำหรับ EC2

การยกเลิกและการตรวจสอบ Instance Refresh

คุณสามารถ ยกเลิก Instance Refresh ที่กำลังดำเนินการได้ทุกเมื่อ การยกเลิกจะหยุดการแทนที่เพิ่มเติม แต่จะไม่ย้อนกลับรายการที่เสร็จสมบูรณ์แล้ว ใช้ describe-instance-refreshes เพื่อตรวจสอบสถานะ เปอร์เซ็นต์ความคืบหน้า และอินสแตนซ์ที่เปิดใช้งานไม่สำเร็จ ผสาน Instance Refresh เข้ากับไปป์ไลน์ CI/CD เพื่อเรียกใช้การรีเฟรชโดยอัตโนมัติหลังจากส่ง AMI ใหม่ไปยัง Launch Template ซึ่งจะทำให้เกิดการนำไปใช้งานแบบสีน้ำเงิน/สีเขียวที่ทำงานอัตโนมัติอย่างสมบูรณ์

aws autoscaling describe-instance-refreshes \
  --auto-scaling-group-name 'MyAppASG'

# Cancel a running refresh
aws autoscaling cancel-instance-refresh \
  --auto-scaling-group-name 'MyAppASG'

แนะนำ Lifecycle Hooks

Lifecycle Hooks จะหยุดการเปลี่ยนสถานะของอินสแตนซ์ใน ASG ณ ช่วงเวลาสำคัญ เพื่อให้คุณเรียกใช้ตรรกะแบบกำหนดเองก่อนที่อินสแตนซ์จะเริ่มทำงานหรือก่อนถูกยุติ มีจุดของฮุกสองจุด ได้แก่ EC2_INSTANCE_LAUNCHING (หลังการเปิดใช้งานและก่อนนำอินสแตนซ์เข้าสู่ InService) และ EC2_INSTANCE_TERMINATING (หลังการตัดสินใจยุติและก่อนยุติอินสแตนซ์จริง) ระหว่างที่ฮุกทำงาน อินสแตนซ์จะอยู่ในสถานะ Pending:Wait หรือ Terminating:Wait

กรณีการใช้งาน Lifecycle Hooks ขณะเปิดใช้งาน

ฮุกขณะเปิดใช้งานเหมาะอย่างยิ่งสำหรับงานที่ต้องเสร็จสิ้นก่อนที่อินสแตนซ์จะให้บริการทราฟฟิก เช่น การติดตั้งซอฟต์แวร์เพิ่มเติม การดึงการกำหนดค่าจาก Parameter Store การลงทะเบียนกับรีจิสทรีค้นหาบริการ หรือการเรียกใช้การทดสอบการผสานรวม ASG จะยังไม่เพิ่มอินสแตนซ์ไปยังกลุ่มเป้าหมายของตัวกระจายโหลดจนกว่าฮุกจะเสร็จสิ้น (หรือหมดเวลา) วิธีนี้จะป้องกันไม่ให้ทราฟฟิกเข้าถึงอินสแตนซ์ที่กำหนดค่าไม่เสร็จสมบูรณ์

aws autoscaling put-lifecycle-hook \
  --auto-scaling-group-name 'MyAppASG' \
  --lifecycle-hook-name 'AppInit' \
  --lifecycle-transition EC2_INSTANCE_LAUNCHING \
  --default-result ABANDON \
  --heartbeat-timeout 300

กรณีการใช้งาน Lifecycle Hooks ขณะยุติ

ฮุกขณะยุติจะทำงานก่อนที่อินสแตนซ์จะถูกยุติจริง กรณีการใช้งาน ได้แก่ การระบายคำขอที่กำลังดำเนินการจากคิวระดับแอปพลิเคชัน การเขียนข้อมูลที่แคชไว้ลงในที่จัดเก็บถาวร การยกเลิกการลงทะเบียนจากรีจิสทรีบริการ หรือการคัดลอกไฟล์บันทึกไปยัง S3 หากไม่มีฮุกขณะยุติ งานที่กำลังดำเนินการบนอินสแตนซ์ที่กำลังยุติอาจสูญหายได้ ฮุกจะให้เวลาคุณสูงสุด 2 ชั่วโมง (หมดเวลาสัญญาณชีพ) เพื่อดำเนินงานปิดระบบอย่างราบรื่นให้เสร็จสิ้น

aws autoscaling put-lifecycle-hook \
  --auto-scaling-group-name 'MyAppASG' \
  --lifecycle-hook-name 'GracefulShutdown' \
  --lifecycle-transition EC2_INSTANCE_TERMINATING \
  --default-result CONTINUE \
  --heartbeat-timeout 120

การทำ Lifecycle Hook ให้เสร็จสมบูรณ์

ตรรกะแบบกำหนดเองที่ทำงานบนอินสแตนซ์หรือถูกเรียกใช้โดยอินสแตนซ์ต้องส่งสัญญาณให้ฮุกเมื่อทำงานเสร็จ ใช้ complete-lifecycle-action ร่วมกับ CONTINUE (ดำเนินการตามปกติ) หรือ ABANDON (สำหรับฮุกขณะเปิดใช้งาน ให้ยุติอินสแตนซ์ ส่วนฮุกขณะยุติ ให้ละเว้นและดำเนินการต่อ) คุณยังสามารถขยายเวลาหมดอายุของฮุกได้โดยส่ง สัญญาณชีพทุกช่วงเวลาจนถึงระยะเวลาสูงสุด หากฮุกหมดเวลา ระบบจะใช้ DefaultResult

# From inside the instance or a Lambda triggered by EventBridge
aws autoscaling complete-lifecycle-action \
  --auto-scaling-group-name 'MyAppASG' \
  --lifecycle-hook-name 'AppInit' \
  --lifecycle-action-result CONTINUE \
  --instance-id 'i-0abc123def456'

การเรียกใช้ตรรกะด้วย EventBridge

วิธีที่สะอาดที่สุดในการตอบสนองต่อ Lifecycle Hooks คือใช้ Amazon EventBridge เมื่อ Lifecycle Hook ทำงาน ASG จะส่งเหตุการณ์ไปยัง EventBridge กฎของ EventBridge จะส่งต่อเหตุการณ์นี้ไปยัง ฟังก์ชัน Lambda ซึ่งดำเนินงานที่จำเป็นแล้วเรียกใช้ complete-lifecycle-action สถาปัตยกรรมนี้ไม่ต้องใช้เซิร์ฟเวอร์โดยสมบูรณ์ ไม่ต้องคอยตรวจสอบซ้ำ และปรับขนาดได้โดยอัตโนมัติ การแจ้งเตือนผ่าน SQS และ SNS เป็นทางเลือกแบบเก่ากว่า แต่ EventBridge เป็นตัวเลือกที่แนะนำสำหรับการออกแบบใหม่

Instance Refresh ทำงานร่วมกับ Lifecycle Hooks

เมื่อ Instance Refresh แทนที่อินสแตนซ์ ทั้งสอง Lifecycle Hooks จะยังคงทำงาน ได้แก่ ฮุกขณะยุติบนอินสแตนซ์เก่า และฮุกขณะเปิดใช้งานบนอินสแตนซ์ใหม่ ซึ่งหมายความว่าตรรกะการปิดระบบอย่างราบรื่นและการเริ่มต้นระบบของคุณจะทำงานโดยอัตโนมัติระหว่างการอัปเดตแบบทยอย ไม่ใช่เฉพาะในระหว่างเหตุการณ์การปรับขนาดตามปกติเท่านั้น ควรทดสอบตรรกะ Lifecycle Hook ระหว่าง Instance Refresh แบบเป็นระยะก่อนนำไปใช้ในระบบจริงเสมอ เพื่อตรวจสอบว่าการทำงานถูกต้อง

ตรวจสอบความเข้าใจอย่างรวดเร็ว

ทดสอบความเข้าใจแนวคิด AWS Solutions Architect (SAA-C03) จากบทเรียนนี้

สรุปบทเรียน

ในบทเรียนนี้ คุณได้เรียนรู้ว่า Instance Refresh แทนที่อินสแตนซ์ของ ASG เป็นชุด ๆ แบบทยอย โดยควบคุมด้วย MinHealthyPercentage และจุดตรวจสอบที่เป็นตัวเลือกเสริมสำหรับการตรวจสอบแบบคานารี Lifecycle Hooks หยุดการเปลี่ยนสถานะของอินสแตนซ์ขณะเปิดใช้งานหรือยุติ เพื่อเรียกใช้ตรรกะการเริ่มต้นระบบแบบกำหนดเองหรือการปิดระบบอย่างราบรื่น และ EventBridge + Lambda เป็นรูปแบบที่แนะนำสำหรับการตอบสนองต่อเหตุการณ์ของ Lifecycle Hook โดยไม่ต้องคอยตรวจสอบซ้ำ ต่อไปเราจะศึกษา ฟังก์ชัน AWS Lambda รันไทม์ ตัวเรียกใช้ และตัวจัดการ

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

บทเรียน “การรีเฟรชอินสแตนซ์และฮุกวงจรชีวิต” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การรีเฟรชอินสแตนซ์และฮุกวงจรชีวิต” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส AWS Solutions Architect ให้อัปเกรดเป็น CoddyKit PRO คอร์ส AWS Solutions Architect มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การรีเฟรชอินสแตนซ์และฮุกวงจรชีวิต”

ทยอยนำเทมเพลตการเปิดใช้งานใหม่มาใช้ด้วยการรีเฟรชอินสแตนซ์ และใช้ฮุกวงจรชีวิตเพื่อเรียกใช้ตรรกะกำหนดเองก่อนเปิดใช้งานหรือยุติอินสแตนซ์ คุณปฏิบัติ AWS Solutions Architect ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน AWS Solutions Architect หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน AWS Solutions Architect บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “การรีเฟรชอินสแตนซ์และฮุกวงจรชีวิต” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน AWS Solutions Architect นี้ได้ไหม

ได้ บทเรียน AWS Solutions Architect ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. เทมเพลตการเปิดใช้งานและการกำหนดค่า ASG
  2. นโยบายการปรับขนาด: การติดตามเป้าหมายและการปรับขนาดเป็นขั้น
  3. การปรับขนาดตามกำหนดเวลาและการปรับขนาดเชิงคาดการณ์
  4. การรีเฟรชอินสแตนซ์และฮุกวงจรชีวิต
← กลับไปที่ AWS Solutions Architect