عمليات التحقق من الصحة

يوفر CycleCloud آليتين للتحقق من صحة الأجهزة الظاهرية: تعد عمليات التحقق من صحة العقدة ميزة أحدث تقوم بإجراء الفحوصات أثناء مرحلة التوفير وتمنع الأجهزة الظاهرية غير السليمة من الانضمام، بينما يقوم HealthCheck بتشغيلها بشكل دوري بعد انضمام الجهاز الظاهري إلى نظام المجموعة كعقدة.

عمليات التحقق من صحة العقدة

يمكن للفحوصات الصحية للعقدة الكشف عن الأجهزة غير السليمة قبل السماح للجهاز الظاهري بالانضمام إلى نظام مجموعة CycleCloud. سيقوم الإصدار الحالي من هذه الميزة بتشغيل البرامج النصية للتحقق من الصحة المضمنة في صور AzureHPC الرسمية التي يمكن العثور عليها ضمن /opt/azurehpc/test/azurehpc-health-checks/. يوجد مصدر هذه البرامج النصية في مستودع AzureHPC Node Health Checks، ولكن يرجى ملاحظة أن الإصدار المضمن في إصدار نظام المجموعة الخاص بك من صورة AzureHPC قد لا يكون أحدث إصدار متوفر في المستودع.

المتطلبات

يدعم الإصدار الحالي من Node Health Checks صور AzureHPC التي تم إصدارها بعد 7 نوفمبر 2023 فقط (التي تحتوي على إصدار azurehpc-health-checks v2.0.6 أو أحدث) والصور المخصصة المشتقة منها. عمليات التحقق من صحة العقدة غير مدعومة حاليا في Windows.

تمكين عمليات التحقق من صحة العقدة لمجموعات Slurm

يوفر نموذج إنشاء نظام مجموعة Slurm خانة اختيار لتمكين Node Health Checks الموجودة ضمن علامة التبويب Advanced Settings . يتيح تحديد المربع عمليات التحقق من صحة العقدة على صفيف عقدة HPC للمجموعة. إذا كنت تريد تمكين عمليات التحقق من صحة العقدة على صفائف العقد الأخرى (أو أنواع نظام المجموعة الأخرى)، يجب عليك استخدام قالب نظام مجموعة مخصص.

يمكن تعطيل عمليات التحقق من صحة العقدة على نظام مجموعة قيد التشغيل عن طريق إلغاء تحديد المربع ببساطة. ليست هناك حاجة لتوسيع نطاق صفيف العقدة حتى تسري التغييرات.

واجهة المستخدم الرسومية لعمليات التحقق من صحة العقدة

فهم نتائج عمليات التحقق من صحة العقدة

بعد أن يمر الجهاز الظاهري بالفحوصات الصحية، سينتقل إلى مرحلة تكوين البرنامج.

إذا فشل الجهاز الظاهري في أي من البرامج النصية للتحقق من الصحة، فسيتم إرسال رسالة خطأ إلى CycleCloud وسيتم منع الجهاز الظاهري تلقائيا من الانضمام إلى نظام المجموعة.

سجلات خطأ عمليات التحقق من صحة العقدة

إذا تم بدء تشغيل الجهاز الظاهري في NodeArray مع تمكين الإفراط في التوفير (مثل صفيف عقدة Slurm hpc) فيجب استبدال الجهاز الظاهري تلقائيا كجزء من الإفراط في التوفير. في هذه الحالة، لا يوجد أي إجراء مطلوب وسيتم تحديد الأجهزة الظاهرية السليمة للانضمام إلى نظام المجموعة (على الرغم من أنك سترى رسالة خطأ في صفحة نظام المجموعة تشير إلى فشل فحص واحد أو أكثر من الأجهزة الظاهرية).

إذا تم بدء تشغيل الجهاز الظاهري لعقدة واحدة، أو صفيف عقدة مع تعطيل الإفراط في التوفير (على سبيل المثال، صفيف عقدة Slurm htc)، أو إذا فشل عدد أكبر من الأجهزة الظاهرية في عمليات التحقق من الصحة مما يدعمه الإفراط في التوفير، فستنتقل العقدة إلى الحالة الفاشلة وسيفشل التخصيص. قد يحاول CycleCloud إعادة تصوير الجهاز الظاهري لتصحيح المشكلة، ولكن إذا فشلت إعادة الصورة، فستحتاج العقدة إلى إنهاءها واستبدالها (يدويا بواسطة مسؤول أو تلقائيا بواسطة التحجيم التلقائي).

ملاحظة

إذا قمت بتمكين Node Health Checks، ولكن صورة الجهاز الظاهري لا تفي بالمتطلبات أعلاه، فسيسمح لجميع الأجهزة الظاهرية بالانضمام إلى نظام المجموعة، ولكن الحالة ستحتوي على تحذير يشير إلى أن عمليات التحقق غير مدعومة. تفاصيل خطأ عمليات التحقق من صحة العقدة

مرجع السمة

السمة النوع التعريف
EnableNodeHealthChecks منطقي (اختياري) تمكين عمليات التحقق من صحة العقدة عند التمهيد لهذه العقدة أو صفيف العقدة

التحقق من الصحة

يوفر Azure CycleCloud آلية لإنهاء الأجهزة الظاهرية (VMs) الموجودة في حالة غير صحية تسمى HealthCheck. يتم تشغيل كل من البرامج النصية المعرفة من قبل النظام والمستخدم (Python و Bash) بشكل دوري (5 دقائق على Windows، 10 دقائق على Linux) لتحديد الصحة العامة للجهاز الظاهري. تسمح HealthCheck للمسؤولين بتحديد الشروط التي يجب إنهاء الأجهزة الظاهرية بموجبها دون الحاجة إلى المراقبة والمعالجة يدويا.

مضمن في البرامج النصية HealthCheck

تأتي الأجهزة الظاهرية الممكنة ل CycleCloud مع برنامجين نصيين افتراضيين ل HealthCheck:

  • سيقوم البرنامج النصي converge_timeout بإنهاء مثيل لم ينته من تكوين البرنامج في غضون أربع ساعات من التشغيل. يمكن التحكم في فترة المهلة cyclecloud.keepalive.timeout هذه مع الإعداد (المحدد بالثوان).
  • يبحث البرنامج النصي scheduled_shutdown عن ملفات صانع في $JETPACK_HOME/run/scheduled_shutdown التي تحتوي على سطر واحد يعطي وقت إيقاف التشغيل في ثوان الطابع الزمني Unix وسطر ثان اختياري مع شرح. عندما يكون الوقت الحالي أحدث من أقرب طابع زمني في الملفات، يعتبر الجهاز الظاهري غير صحي.

كيف تعمل هذه الميزة

توجد البرامج النصية HealthCheck في الدليل $JETPACK_HOME/config/healthcheck.d . يدعم Linux كلا من البرامج النصية Python وBash، بينما يدعم Windows برامج Python النصية فقط. يجب أن يحدد البرنامج النصي صحة الجهاز الظاهري. إذا تم العثور على الجهاز الظاهري غير صحي، فيجب إنهاء البرنامج النصي بحالة 254، مما يشير إلى CycleCloud إلى أن الجهاز الظاهري غير صحي ويجب إنهاؤه.

عند تسجيل الدخول إلى جهاز ظاهري يقوم بتشغيل HealthCheck، يمكنك منع إيقاف تشغيل الجهاز الظاهري عن طريق تشغيل الأمر jetpack keepalive. في مثيلات Linux، يمكنك تحديد إطار زمني بالساعات أو forever أثناء تشغيل Windows forever هو الخيار الوحيد.

ملاحظة

عندما يتم تحديد الجهاز الظاهري على أنه غير صحي، سيقوم عامل HealthCheck بإجراء طلب ل CycleCloud لإنهاء الجهاز الظاهري، لن يتم إيقاف تشغيل الجهاز الظاهري محليا عبر shutdown الأمر. في حالة عدم تمكن الجهاز الظاهري من الاتصال ب CycleCloud، سيبقى الجهاز الظاهري لأعلى على الرغم من أنه غير صحي حتى يمكن الوصول إلى CycleCloud.

مثال

كمثال بسيط، سنكتب البرنامج النصي HealthCheck الذي سيضمن أن جهاز Linux الظاهري غير نشط لأكثر من 24 ساعة. يمكن استخدام هذا البرنامج النصي لمحاكاة عمليات الإخلاء ذات الأولوية المنخفضة لاختبار كيفية تفاعل سير العمل مع جهاز ظاهري تم إخلائه. سيتم وضع هذا البرنامج النصي في /opt/cycle/jetpack/config/healthcheck.d/healthcheck_example.sh

#!/bin/bash

# Get the uptime of the system (in seconds) and check to see if it is
# greater than 86,400 (24 hours in seconds). If it is, exit 254 to
# signal that the VM is unhealthy.
if (( $(cat /proc/uptime | awk '{print ($1 > 86400)}'))); then
  exit 254
fi

ملاحظة

يمكن وضع هذا البرنامج النصي على جهاز ظاهري عبر CycleCloud Project أو بإضافته مباشرة عند إنشاء صورة مخصصة.