تجمع Azure Batch وأخطاء العقدة

تحدث بعض عمليات إنشاء مجموعة Azure Batch وإدارتها على الفور. يعد الكشف عن حالات الفشل لهذه العمليات أمرا بسيطا، لأن الأخطاء عادة ما تعود مباشرة من واجهة برمجة التطبيقات أو سطر الأوامر أو واجهة المستخدم. ومع ذلك، بعض العمليات غير متزامنة، تعمل في الخلفية، وتستغرق عدة دقائق لإكمالها. توضح هذه المقالة طرق الكشف عن حالات الفشل التي يمكن أن تحدث في عمليات الخلفية للتجمعات والعقد وتجنبها.

تأكد من تعيين تطبيقاتك لتنفيذ التحقق الشامل من الأخطاء، خاصة بالنسبة للعمليات غير المتزامنة. يمكن أن يساعدك التحقق الشامل من الأخطاء في تحديد المشكلات وتشخيصها على الفور.

أخطاء التجمع

قد تكون أخطاء التجمع مرتبطة بتغيير حجم المهلة أو الفشل أو فشل التحجيم التلقائي أو فشل حذف التجمع.

تغيير حجم المهلة أو الفشل

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

تسرد الخاصية resizeError الأخطاء التي حدثت لآخر تقييم.

تشمل الأسباب الشائعة لأخطاء تغيير الحجم ما يلي:

  • تغيير حجم المهلة قصيرة جدا. عادة ما تكون المهلة الافتراضية البالغة 15 دقيقة طويلة بما يكفي لتخصيص عقد التجمع أو إزالتها. إذا كنت تخصص عددا كبيرا من العقد، مثل أكثر من 1000 عقدة من صورة Azure Marketplace، أو أكثر من 300 عقدة من صورة جهاز ظاهري مخصص (VM)، يمكنك تعيين مهلة تغيير الحجم إلى 30 دقيقة.

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

  • عناوين IP للشبكة الفرعية غير كافية عندما يكون التجمع في شبكة ظاهرية. يجب أن تحتوي الشبكة الفرعية للشبكة الظاهرية على عناوين IP كافية لتخصيصها لكل عقدة تجمع مطلوبة. خلاف ذلك، لا يمكن إنشاء العقد. لمزيد من المعلومات، راجع إنشاء تجمع Azure Batch في شبكة ظاهرية.

  • موارد غير كافية عندما يكون التجمع في شبكة ظاهرية. عند إنشاء تجمع في شبكة ظاهرية، يمكنك إنشاء موارد مثل موازنات التحميل وعناوين IP العامة ومجموعات أمان الشبكة (NSGs) في نفس الاشتراك مثل حساب Batch. تأكد من أن حصص الاشتراك النسبية كافية لهذه الموارد.

  • تجمعات كبيرة مع صور VM مخصصة. يمكن أن تستغرق التجمعات الكبيرة التي تستخدم صور الجهاز الظاهري المخصصة وقتا أطول للتخصيص، ويمكن أن تحدث مهلات تغيير الحجم. للحصول على توصيات حول الحدود والتكوين، راجع إنشاء تجمع باستخدام معرض الحوسبة Azure.

حالات فشل التحجيم التلقائي

يمكنك تعيين Azure Batch لتوسيع عدد العقد تلقائيا في تجمع، وتحديد معلمات صيغة التحجيم التلقائي للتجمع. ثم تستخدم خدمة Batch الصيغة لتقييم عدد العقد في التجمع بشكل دوري وتعيين أرقام هدف جديدة. لمزيد من المعلومات، راجع إنشاء صيغة تلقائية لتحجيم عقد الحوسبة في تجمع Batch.

يمكن أن تحدث المشكلات التالية عند استخدام التحجيم التلقائي:

  • حالات الفشل في تقييم التحجيم التلقائي.
  • فشل عملية تغيير الحجم الناتجة ووقت المهلة.
  • تؤدي مشكلة معادلة القياس التلقائي إلى قيم هدف عقدة غير صحيحة. قد يعمل تغيير الحجم أو تنتهي مهلته.

للحصول على معلومات حول آخر تقييم تلقائي للقياس، استخدم خاصية autoScaleRun. تقوم هذه الخاصية بالإبلاغ عن وقت التقييم والقيم والنتيجة وأي أخطاء في الأداء.

يلتقط حدث تغيير حجم التجمع بالكامل معلومات حول جميع التقييمات.

حالات الفشل في حذف التجمع

لحذف تجمع يحتوي على عقد، يقوم Batch أولا بحذف العقد، والتي قد تستغرق عدة دقائق لإكمالها. ثم تحذف Batch كائن التجمع نفسه.

يقوم Batch بتعيين poolState إلى deleting أثناء عملية الحذف. يمكن لتطبيق الاستدعاء اكتشاف ما إذا كان حذف التجمع يستغرق وقتا طويلا باستخدام الخاصيتين state و stateTransitionTime .

إذا استغرق حذف التجمع وقتا أطول من المتوقع، يعيد Batch المحاولة بشكل دوري حتى يتم حذف التجمع بنجاح. في بعض الحالات، يرجع التأخير إلى انقطاع خدمة Azure أو مشكلات مؤقتة أخرى. قد تتطلب منك العوامل الأخرى التي تمنع حذف التجمع الناجح اتخاذ إجراء لتصحيح المشكلة. يمكن أن تتضمن هذه العوامل المشكلات التالية:

  • قد يتم وضع تأمين الموارد على الموارد التي تم إنشاؤها بواسطة الدفعة، أو على موارد الشبكة التي تستخدمها Batch.

  • قد تعتمد الموارد التي قمت بإنشائها على مورد تم إنشاؤه بواسطة Batch. على سبيل المثال، إذا قمت بإنشاء تجمع في شبكة ظاهرية، فإن Batch ينشئ NSG وعنوان IP عام وموازن تحميل. إذا كنت تستخدم هذه الموارد خارج التجمع، فلا يمكنك حذف التجمع.

  • Microsoft.Batch قد يتم إلغاء تسجيل موفر الموارد من الاشتراك الذي يحتوي على التجمع الخاص بك.

  • بالنسبة إلى حسابات Batch لوضع اشتراك المستخدم، Microsoft Azure Batch قد لا يكون دور المساهم أو المالك للاشتراك الذي يحتوي على التجمع الخاص بك. لمزيد من المعلومات، راجع السماح للدفعة بالوصول إلى الاشتراك.

أخطاء العُقدة

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

حالات فشل بدء المهام

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

يمكنك الكشف عن بدء فشل المهمة باستخدام الخاصيتين taskExecutionResult و taskFailureInformation لخاصية عقدة startTaskInformation ذات المستوى الأعلى.

تؤدي مهمة البدء الفاشلة أيضا إلى تعيين Batch إلى computeNodeState إلى starttaskfailed، إذا waitForSuccess تم تعيين إلى true.

كما هو الحال مع أي مهمة، يمكن أن يكون هناك العديد من الأسباب لفشل بدء المهمة. لاستكشاف الأخطاء وإصلاحها، تحقق من stdout وstderr وأي ملفات سجل أخرى خاصة بالمهمة.

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

فشل في تنزيل حزمة التطبيق

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

إذا فشلت حزمة تطبيق في التنزيل وإلغاء الضغط، تقوم خاصية computeNodeError بالإبلاغ عن الفشل، وتعيين حالة العقدة إلى unusable.

فشل تنزيل الحاوية

يمكنك تحديد مرجع حاوية واحد أو أكثر في تجمع. تقوم الدُفعة بتنزيل الحاويات المحددة لكل عقدة. إذا فشلت الحاوية في التنزيل، تقوم خاصية computeNodeError بالإبلاغ عن الفشل، وتعيين حالة العقدة إلى unusable.

تحديثات نظام تشغيل العقدة

بالنسبة لتجمعات Windows، يتم تعيينها enableAutomaticUpdatesعلىtrue افتراضياً. على الرغم من أنه يوصى بالسماح بالتحديثات التلقائية، يمكن أن تؤدي التحديثات إلى مقاطعة تقدم المهمة، خاصة إذا كانت المهام طويلة الأمد. يمكنك تعيين هذه القيمة على falseإذا كنت تريد التأكد من عدم حدوث تحديث لنظام التشغيل بشكل غير متوقع.

العقدة في حالة غير صالحة للاستعمال

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

إذا كان بإمكان Batch تحديد السبب، تقوم خاصية computeNodeError بالإبلاغ عنه. إذا كانت العقدة unusable في حالة، ولكن ليس لديها حسابNodeError، فهذا يعني أن Batch غير قادر على الاتصال بالجهاز الظاهري. في هذه الحالة، تحاول الدُّفعة دائماً استرداد الجهاز الظاهري. ومع ذلك، لا تحاول Batch تلقائيا استرداد الأجهزة الظاهرية التي فشلت في تثبيت حزم التطبيقات أو الحاويات، حتى إذا كانت حالتها هي unusable.

قد تتضمن الأسباب الأخرى للعقد unusable الأسباب التالية:

  • صورة الجهاز الظاهري المخصصة غير صالحة. على سبيل المثال، الصورة غير معدة بشكل صحيح.
  • تم نقل الجهاز الظاهري بسبب فشل البنية التحتية أو ترقية منخفضة المستوى. تتم استعادة الدُفعة من خلال العقدة.
  • تم نشر صورة جهاز ظاهري على جهاز لا يدعمها.
  • الأجهزة الافتراضية موجودة في شبكة Azure الظاهرية، وتم حظر حركة المرور على المنافذ الرئيسية.
  • توجد الأجهزة الظاهرية في شبكة ظاهرية، ولكن يتم حظر نسبة استخدام الشبكة الصادرة إلى Azure Storage.
  • توجد الأجهزة الظاهرية في شبكة ظاهرية مع تكوين DNS مخصص، ولا يمكن لخادم DNS حل تخزين Azure.

ملفات سجل عامل العقدة

توفر عملية عامل الدفعة التي تعمل على كل عقدة تجمع ملفات سجل قد تساعد إذا كنت بحاجة إلى الاتصال بالدعم حول مشكلة عقدة التجمع. يمكنك تحميل ملفات السجل لعقدة عبر مدخل Microsoft Azure أو Batch Explorer أو واجهة برمجة تطبيقات Compute Node - Upload Batch Service Logs . بعد تحميل ملفات السجل وحفظها، يمكنك حذف العقدة أو التجمع لحفظ تكلفة تشغيل العقد.

قرص العقدة ممتلئ

يستخدم Batch محرك الأقراص المؤقت على جهاز ظاهري لتجمع عقدة لتخزين ملفات مثل ملفات الوظائف التالية وملفات المهام والملفات المشتركة:

  • ملفات حزمة التطبيق
  • ملفات موارد المهمة
  • تم تنزيل الملفات الخاصة بالتطبيقات إلى أحد مجلدات الدُفعات
  • ملفات Stdout وstderr لكل تنفيذ تطبيق مهمة
  • ملفات الإخراج الخاصة بالتطبيقات

تكتب الملفات مثل حزم التطبيقات أو بدء ملفات موارد المهمة مرة واحدة فقط عندما يقوم Batch بإنشاء عقدة التجمع. على الرغم من أنها تكتب مرة واحدة فقط، إذا كانت هذه الملفات كبيرة جدا، فإنها يمكن أن تملأ محرك الأقراص المؤقت.

تتم كتابة الملفات الأخرى، مثل stdout وstderr، لكل مهمة تقوم العقدة بتشغيلها. إذا تم تشغيل عدد كبير من المهام على نفس العقدة، أو كانت ملفات المهام كبيرة جدا، فقد تملأ محرك الأقراص المؤقت.

تحتاج العقدة أيضا إلى قدر صغير من المساحة على قرص نظام التشغيل لإنشاء مستخدمين بعد بدء تشغيله.

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

عند إضافة تجمع في مدخل Microsoft Azure، يمكنك عرض القائمة الكاملة لأحجام الأجهزة الظاهرية، بما في ذلك عمود حجم قرص الموارد. تحتوي المقالات التي تصف أحجام الأجهزة الظاهرية على جداول مع عمود Temp Storage . لمزيد من المعلومات، راجع حساب أحجام الجهاز الظاهري المحسنة. للحصول على مثال لجدول الحجم، راجع سلسلة Fsv2.

يمكنك تحديد وقت استبقاء للملفات المكتوبة بواسطة كل مهمة. يحدد وقت الاستبقاء المدة للاحتفاظ بملفات المهام قبل تنظيفها تلقائيا. يمكنك تقليل وقت الاستبقاء إلى متطلبات تخزين أقل.

إذا نفدت مساحة القرص المؤقت أو قرص نظام التشغيل، أو اقتربت من نفاد المساحة، تنتقل العقدة إلى unusable computeNoteState، ويقول خطأ العقدة إن القرص ممتلئ.

إذا لم تكن متأكدا مما يشغل مساحة على العقدة، فحاول الاتصال عن بعد بالعقدة والتحقيق يدويا. يمكنك أيضا استخدام File - List From Compute Node API لفحص الملفات، على سبيل المثال مخرجات المهام، في مجلدات Batch المدارة. تسرد واجهة برمجة التطبيقات هذه الملفات الموجودة في الدلائل المدارة بواسطة Batch فقط. إذا أنشأت مهامك ملفات في مكان آخر، فلن تظهرها واجهة برمجة التطبيقات هذه.

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

يمكنك حذف المهام القديمة المكتملة أو المهام التي لا تزال بيانات مهامها موجودة على العقد. ابحث في recentTasks المجموعة في taskInformation على العقدة، أو استخدم File - List From Compute Node API. يؤدي حذف وظيفة إلى حذف كافة المهام في الوظيفة. يؤدي حذف المهام في الوظيفة إلى تشغيل حذف البيانات في دلائل المهام على العقد، وتحرير مساحة. بمجرد تحرير مساحة كافية، أعد تشغيل العقدة. يجب أن تنتقل العقدة خارج unusable الحالة وإلى idle مرة أخرى.

لاسترداد عقدة غير قابلة للاستخدام في تجمعات VirtualMachineConfiguration ، يمكنك إزالة العقدة من التجمع باستخدام Pool - Remove Nodes API. ثم يمكنك تنمية التجمع مرة أخرى لاستبدال العقدة السيئة بعقدة جديدة.

هام

إعادة التعيين غير مدعومة حاليا لتجمعات VirtualMachineConfiguration .

الخطوات التالية