0Pricing
AWS Solutions Architect · درس

تحديث المثيلات وخطافات دورة الحياة

اطرحوا قالب إطلاق جديدًا تدريجيًا باستخدام تحديث المثيلات، واستخدموا خطافات دورة الحياة لتشغيل منطق مخصص قبل إطلاق المثيلات أو إنهائها.

تحديث المثيلات وخطافات دورة الحياة درس مجاني في AWS Solutions Architect على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في AWS Solutions Architect، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة AWS Solutions Architect 4 دروس في المجموع.

مشكلة تحديث المثيلات بالتتابع

عند تحديث Launch Template (بإضافة AMI جديدة أو user data جديدة أو نوع مثيل جديد)، لا تُستبدل المثيلات الحالية قيد التشغيل في 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 أحجام الدفعات تلقائيًا استنادًا إلى هذه النسبة والسعة المطلوبة الحالية. اختاروا نسبة أعلى لأحمال العمل الإنتاجية للحفاظ على التوافر.

نقاط التحقق لعمليات النشر بأسلوب Canary

تتيح Checkpoints إيقاف Instance Refresh مؤقتًا عند مراحل مئوية محددة مسبقًا. فعلى سبيل المثال، يمكنكم تحديث 20% من المثيلات، وإيقاف العملية 10 دقائق لإجراء اختبارات أولية، ثم متابعة التحديث. وإذا اكتشفتم مشكلة عند أي نقطة تحقق، يمكنكم إلغاء التحديث؛ إذ يتوقف ASG عن استبدال المثيلات الإضافية، لكنه يترك المثيلات التي استُبدلت بالفعل قيد التشغيل (فهي تستخدم القالب الجديد أصلًا). ويُعد هذا عمليًا نمط canary deployment لـ EC2.

إلغاء Instance Refresh ومراقبتها

يمكنكم إلغاء Instance Refresh قيد التنفيذ في أي وقت؛ إذ يوقف عمليات الاستبدال اللاحقة، لكنه لا يتراجع عن العمليات المكتملة. استخدموا describe-instance-refreshes للتحقق من الحالة ونسبة التقدم وأي مثيلات فشلت عملية تشغيلها. ادمجوا Instance Refresh مع مسار CI/CD لتشغيل التحديث تلقائيًا بعد دفع AMI جديدة إلى Launch Template، وبذلك تكتمل عملية نشر مؤتمتة بالكامل بأسلوب blue/green.

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 عند التشغيل

تُعد launching hook مثالية للمهام التي يجب إكمالها قبل أن يبدأ المثيل في خدمة حركة المرور، مثل تثبيت برامج إضافية، وجلب الإعدادات من 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 عند الإنهاء

تُنفَّذ termination hook قبل إنهاء المثيل فعليًا. وتشمل حالات استخدامها تصريف الطلبات قيد التنفيذ من قائمة انتظار على مستوى التطبيق، ودفع البيانات المخزنة مؤقتًا إلى مخزن دائم، وإلغاء التسجيل من سجل الخدمات، أو نسخ ملفات السجل إلى S3. ومن دون نقطة ربط للإنهاء، قد يُفقد العمل الجاري على المثيل الذي يجري إنهاؤه. وتمنحكم نقطة الربط مدة تصل إلى ساعتين (مهلة نبضات القلب) لإكمال مهام الإيقاف المنظم.

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 (في نقطة ربط التشغيل، لإنهاء المثيل؛ وفي نقطة ربط الإنهاء، للتجاهل والمتابعة). ويمكنكم أيضًا تمديد مهلة نقطة الربط بإرسال heartbeat في كل فترة حتى الوصول إلى المدة القصوى. وإذا انتهت مهلة نقطة الربط، فسيُطبَّق 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. فعند تشغيل نقطة ربط لدورة الحياة، يرسل ASG حدثًا إلى EventBridge. وتوجّه قاعدة EventBridge هذا الحدث إلى Lambda function تنفذ العمل المطلوب، ثم تستدعي complete-lifecycle-action. وتتميز هذه البنية بأنها بلا خوادم بالكامل، ولا تتطلب الاستقصاء، وتتوسع تلقائيًا. وتُعد إشعارات SQS وSNS بدائل أقدم، لكن EventBridge هي الخيار المفضل للتصاميم الجديدة.

تكامل Instance Refresh مع Lifecycle Hooks

عندما تستبدل Instance Refresh مثيلًا، تظل كلتا نقطتي ربط دورة الحياة تعملان: نقطة ربط الإنهاء على المثيل القديم، ونقطة ربط التشغيل على المثيل الجديد. وهذا يعني أن منطق الإيقاف المنظم والتهيئة الأولية يُنفَّذ تلقائيًا أثناء التحديث المتتابع، وليس فقط أثناء أحداث التوسعة العادية. اختبروا دائمًا منطق Lifecycle Hooks أثناء Instance Refresh مرحلية قبل النشر في بيئة الإنتاج للتحقق من صحة السلوك.

تحقق سريع

اختبروا مدى فهمكم لمفاهيم AWS Solutions Architect (SAA-C03) الواردة في هذا الدرس.

مراجعة الدرس

تعلّمتم في هذا الدرس أن Instance Refresh تستبدل مثيلات ASG على دفعات متتابعة يتحكم فيها MinHealthyPercentage، مع نقاط تحقق اختيارية للتحقق بأسلوب canary؛ وأن Lifecycle Hooks توقف انتقالات المثيلات عند التشغيل أو الإنهاء لتنفيذ منطق التهيئة المخصص أو الإيقاف المنظم؛ وأن EventBridge + Lambda هو النمط الموصى به للاستجابة إلى أحداث Lifecycle Hooks من دون استقصاء. بعد ذلك، سنستكشف وظائف AWS Lambda وبيئات التشغيل والمشغلات ومعالجات الأحداث.

الأسئلة الشائعة

هل درس «تحديث المثيلات وخطافات دورة الحياة» مجاني؟

نعم — نص درس «تحديث المثيلات وخطافات دورة الحياة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة AWS Solutions Architect، انتقل إلى CoddyKit PRO. تتضمن دورة AWS Solutions Architect 4 دروس في المجموع.

ماذا ستتعلم في «تحديث المثيلات وخطافات دورة الحياة»؟

اطرحوا قالب إطلاق جديدًا تدريجيًا باستخدام تحديث المثيلات، واستخدموا خطافات دورة الحياة لتشغيل منطق مخصص قبل إطلاق المثيلات أو إنهائها. تتمرن على AWS Solutions Architect مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ AWS Solutions Architect؟

لا تُشترط خبرة سابقة. AWS Solutions Architect على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.

كم من الوقت يستغرق درس «تحديث المثيلات وخطافات دورة الحياة»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس AWS Solutions Architect هذا؟

نعم. كل درس في AWS Solutions Architect يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. قوالب الإطلاق وإعداد ASG
  2. سياسات التوسّع: تتبّع الهدف والتوسّع المرحلي
  3. التوسّع المجدول والتوسّع التنبؤي
  4. تحديث المثيلات وخطافات دورة الحياة
← العودة إلى AWS Solutions Architect