أفضل ممارسات Azure Batch

تناقش هذه المقالة أفضل الممارسات والنصائح المفيدة لاستخدام خدمة Azure Batch بشكل فعال. يمكن أن تساعدك هذه النصائح على تحسين الأداء وتجنب عيوب التصميم في حلول الدُفعات الخاصة بك.

تلميح

للحصول على إرشادات حول الأمان في Azure Batch، راجع أفضل ممارسات التوافق والأمان المجمع.

المجموعات

التجمعات هي موارد الحوسبة لتنفيذ المهام في خدمة الدُفعات. توفر الأقسام التالية توصيات للعمل مع مجمعات الدُفعات.

تكوين التجمع وتسميته

  • وضع تخصيص المجمع: عند إنشاء حساب مجمّع، يمكنك الاختيار بين وضعي تخصيص مجمع: خدمة مجمعة أو اشتراك مستخدم. بالنسبة لمعظم الحالات، يجب عليك استخدام وضع خدمة الدُفعات الافتراضي، حيث يتم تخصيص مجموعات التخزين خلف الكواليس في اشتراكات مُدارة بالدُفعات. في وضع اشتراك المستخدم البديل، يتم إنشاء Batch VMs والموارد الأخرى مباشرةً في اشتراكك عند إنشاء تجمع. تُستخدم حسابات اشتراك المستخدم بشكل أساسي لتمكين مجموعة فرعية صغيرة ولكنها مهمة من السيناريوهات. لمزيد من المعلومات، راجع تكوين وضع اشتراك المستخدم.

  • virtualMachineConfiguration أو cloudServiceConfiguration: بينما يمكنك حاليا إنشاء تجمعات باستخدام أي من التكوينين، يجب تكوين تجمعات جديدة باستخدام virtualMachineConfiguration وليس cloudServiceConfiguration. سيتم دعم جميع ميزات الدُفعات الحالية والجديدة عبر تجمعات تكوين الجهاز الظاهري. لا تدعم تجمعات تكوين الخدمة السحابية جميع الميزات ولا يتم التخطيط لإمكانيات جديدة. لن تتمكن من إنشاء تجمعات جديدة cloudServiceConfiguration أو إضافة عقد جديدة إلى التجمعات الموجودة بعد 29 فبراير 2024. لمزيد من المعلومات، راجع ترحيل تكوين تجمع الدُفعة من الخدمات السحابية إلى الجهاز الظاهري.

  • classic أو simplified وضع اتصال العقدة: يمكن تكوين التجمعات في أحد وضعي اتصال العقدة، الكلاسيكية أو المبسطة. في نموذج اتصال العقدة الكلاسيكية، تبدأ خدمة Batch الاتصال بعقد الحوسبة، وتتطلب عقد الحساب أيضا الاتصال ب Azure Storage. في نموذج اتصال العقدة المبسط، تبدأ عقد الحوسبة الاتصال بخدمة Batch. نظرا إلى انخفاض نطاق الاتصالات الواردة/الصادرة المطلوبة، وعدم الحاجة إلى الوصول الصادر لتخزين Azure لعملية الأساس، فإن التوصية هي استخدام نموذج اتصال العقدة المبسط. تتطلب بعض التحسينات المستقبلية لخدمة Batch أيضا نموذج اتصال العقدة المبسط. سيتم إيقاف نموذج اتصال العقدة الكلاسيكية في 31 مارس 2026.

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

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

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

  • وحدات SKU للجهاز الظاهري ذات تواريخ نهاية العمر الافتراضي (EOL) الوشيكة: كما هو الحال مع صور الجهاز الظاهري، قد تصل وحدات SKU أو العائلات VM أيضا إلى نهاية عمر دعم الدفعة (EOL). يمكن اكتشاف هذه التواريخ عبر ListSupportedVirtualMachineSkusواجهة برمجة التطبيقات أو PowerShell أو Azure CLI. خطط لترحيل حمل العمل الخاص بك إلى وحدة SKU غير EOL VM عن طريق إنشاء تجمع جديد مع VM SKU مدعوم مناسب. عدم وجود تاريخ مقترن batchSupportEndOfLife ل VM SKU لا يشير إلى أنه سيتم دعم VM SKU معين إلى أجل غير مسمى. يمكن إضافة تاريخ EOL أو تحديثه في المستقبل في أي وقت.

  • أسماء الموارد الفريدة: غالباً ما تأتي الموارد المجمعة (وظائف، مجموعات، إلخ) وتذهب بمرور الوقت. على سبيل المثال، يمكنك إنشاء تجمع يوم الاثنين، وحذفه يوم الثلاثاء، ثم إنشاء تجمع آخر مماثل يوم الخميس. يجب منح كل مورد جديد تقوم بإنشائه اسماً فريداً لم تستخدمه من قبل. يمكنك إنشاء التفرد باستخدام GUID (إما كاسم المورد بأكمله أو كجزء منه) أو عن طريق تضمين التاريخ والوقت الذي تم فيه إنشاء المورد في اسم المورد. يدعم Batch DisplayName، والذي يمكن أن يمنح المورد اسماً أكثر قابلية للقراءة حتى إذا كان معرّف المورد الفعلي شيئاً غير مناسب للإنسان. إن استخدام الأسماء الفريدة يجعل من السهل عليك التمييز بين المورد المعين الذي قام بشيء ما في السجلات والمقاييس. كما أنه يزيل الغموض إذا اضطررت في أي وقت إلى تقديم حالة دعم لأحد الموارد.

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

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

أمان التجمع

حد العزل

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

تحديثات عامل عقدة الدفعة

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

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

إشعار

للحصول على إرشادات عامة حول الأمان في Azure Batch، راجع أفضل ممارسات التوافق والأمان المجمع.

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

من المستحسن أن تكون صورة الجهاز الظاهري المحددة لتجمع Batch محدثة بأحدث تحديثات الأمان المقدمة من الناشر. قد تقوم بعض الصور بإجراء تحديثات تلقائية عند التمهيد (أو بعد ذلك بوقت قصير)، والتي قد تتداخل مع إجراءات معينة موجهة من قبل المستخدم مثل استرداد تحديثات مستودع الحزمة (على سبيل المثال، apt update) أو تثبيت الحزم أثناء إجراءات مثل StartTask.

لا يتحقق Azure Batch من أن الصور المسموح باستخدامها مع الخدمة تحتوي على آخر تحديثات الأمان أو يضمن ذلك. تقع التحديثات إلى الصور ضمن نطاق ناشر الصورة، وليس ناشر Azure Batch. بالنسبة لبعض الصور المنشورة ضمن microsoft-azure-batch، لا يوجد ضمان بأن هذه الصور تبقى محدثة مع صورها المشتقة من المصدر.

عمر التجمع وفواتيره

يمكن أن يختلف عمر التجمع بناءً على طريقة التخصيص والخيارات المطبقة على تكوين التجمع. يمكن أن يكون للتجمعات عمر تعسفي وعدد متفاوت من عقد الحوسبة في أي وقت. تقع على عاتقك مسؤولية إدارة عقد الحوسبة في التجمع إما بشكل صريح أو من خلال الميزات التي توفرها الخدمة (مقياس تلقائي أو أداة تلقائية).

  • إعادة إنشاء التجمع: تجنب حذف حمامات السباحة وإعادة إنشائها بشكل يومي. بدلاً من ذلك، قم بإنشاء تجمع جديد ثم قم بتحديث المهام الحالية الخاصة بك للإشارة إلى التجمع الجديد. بمجرد نقل جميع المهام إلى التجمع الجديد، قم بحذف المجموعة القديمة.

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

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

حالات فشل تخصيص التجمع

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

وقت تعطل غير المخطط له

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

تجمعات صور مخصصة

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

صور الجهات الخارجية

يمكن إنشاء مجموعات باستخدام صور الجهات الخارجية المنشورة في Microsoft Azure Marketplace. مع حسابات دفعية في وضع اشتراك المستخدم، قد ترى الخطأ "فشل التخصيص بسبب التحقق من أهلية الشراء في السوق" عند إنشاء مجموعة تحتوي على صور معينة من جهات خارجية. لحل هذا الخطأ، اقبل الشروط التي وضعها ناشر الصورة. يمكنك القيام بذلك باستخدام Azure PowerShell أو Azure CLI .

تبعية منطقة أزور

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

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

المهام

الوظيفة عبارة عن حاوية مصممة لاحتواء المئات أو الآلاف أو حتى الملايين من المهام. اتبع هذه الإرشادات عند إنشاء الوظائف.

وظائف أقل، مهام أكثر

استخدام وظيفة لتشغيل مهمة واحدة غير فعال. على سبيل المثال، من الأكثر كفاءة استخدام وظيفة واحدة تحتوي على 1000 مهمة بدلا من إنشاء 100 وظيفة تحتوي على 10 مهام لكل منها. إذا استخدمت 1000 وظيفة، فإن كل منها له مهمة واحدة ستكون النهج الأقل كفاءة والأبطأ والأغلى.

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

عمر الوظيفة

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

لا تنتقل الوظيفة تلقائيا إلى الحالة المكتملة ما لم يتم إنهاؤها بشكل صريح. يمكن تشغيل هذا الإجراء تلقائيا من خلال الخاصية onAllTasksComplete أو maxWallClockTime.

هناك حصة افتراضية للوظيفة النشطة وجدول الوظائف. لا يتم احتساب الوظائف وجداول الوظائف في الحالة المكتملة في هذه الحصة النسبية.

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

المهام

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

حفظ بيانات المهمة

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

لقد دمجت Batch دعم Azure Storage لتحميل البيانات عبر OutputFiles، ومع أنظمة الملفات المشتركة المختلفة، أو يمكنك إجراء التحميل بنفسك في مهامك.

إدارة مدة عمل المهمة

احذف المهام عندما لا تكون هناك حاجة إليها، أو قم بتعيين قيد مهمة وقت الاستبقاء . إذا تم تعيينretentionTime، ستقوم الدفعة تلقائياً بتنظيف مساحة القرص التي تستخدمها المهمة عند انتهاء صلاحية retentionTime.

يؤدي حذف المهام إلى إنجاز أمرين:

  • يضمن عدم وجود تراكم للمهام في الوظيفة. سيساعد هذا الإجراء في تجنب صعوبة العثور على المهمة التي تهتم بها حيث سيتعين عليك التصفية من خلال المهام المكتملة.
  • تنظيف بيانات المهمة المقابلة على العقدة (لم يتم الوصول إلى المقدمة retentionTime بالفعل). يساعد هذا الإجراء على ضمان عدم امتلاء العقد ببيانات المهمة ونفاد مساحة القرص.

إشعار

بالنسبة للمهام التي تم إرسالها للتو إلى Batch، يستغرق استدعاء DeleteTask API ما يصل إلى 10 دقائق حتى يصبح ساري المفعول. قبل أن يدخل حيز التنفيذ، قد يتم منع جدولة مهام أخرى. وذلك لأن Batch Scheduler لا يزال يحاول جدولة المهام المحذوفة للتو. إذا أردت حذف مهمة واحدة بعد وقت قصير من إرسالها، فيرجى إنهاء المهمة بدلا من ذلك (نظرا لأن طلب مهمة الإنهاء سيصبح ساري المفعول على الفور). ثم احذف المهمة بعد 10 دقائق.

إرسال عدد كبير من المهام في المجموعة

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

تعيين المهام القصوى لكل عقدة بشكل مناسب

تدعم الدُفعة زيادة الاشتراك في المهام على العقد (تشغيل مهام أكثر مما تحتويه العقدة على نوى). الأمر متروك لك للتأكد من أن مهامك بالحجم الصحيح للعقد في مجموعتك. على سبيل المثال، قد تكون لديك تجربة متدهورة إذا حاولت جدولة ثماني مهام تستهلك كل منها 25٪ من استخدام وحدة المعالجة المركزية في عقدة واحدة (في مجموعة بها taskSlotsPerNode = 8).

تصميم لإعادة المحاولة وإعادة التنفيذ

يمكن إعادة محاولة المهام تلقائياً بواسطة الدُّفعة. هناك نوعان من عمليات إعادة المحاولة: إما يتحكم فيه المستخدم أو داخلي. يتم تحديد عمليات إعادة المحاولة التي يتحكم فيها المستخدم بواسطة maxTaskRetryCount للمهمة. عند إنهاء برنامج محدد في المهمة باستخدام رمز إنهاء غير صفري، تتم إعادة محاولة المهمة حتى قيمة maxTaskRetryCount.

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

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

بناء مهام دائمة

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

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

تجنب وقت التنفيذ القصير

المهام التي تعمل لمدة ثانية إلى ثانيتين فقط ليست مثالية. حاول القيام بقدر كبير من العمل في مهمة فردية (10 ثوانٍ كحد أدنى، تصل إلى ساعات أو أيام). إذا تم تنفيذ كل مهمة لمدة دقيقة واحدة (أو أكثر)، فسيكون مقدار الحمل الزائد للجدولة جزءاً من إجمالي وقت الحوسبة صغيراً.

استخدم نطاق التجمع للمهام القصيرة على عقد Windows

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

الُعقد

عقدة الحوسبة عبارة عن جهاز ظاهري Azure (VM) أو جهاز ظاهري للخدمة السحابية مخصص لمعالجة جزء من عبء عمل التطبيق الخاص بك. اتبع هذه الإرشادات عند العمل مع العقد.

بدء المهام: مدة البقاء والتكبد

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

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

تلميح

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

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

عقد معزولة

فكر في استخدام أحجام الجهاز الظاهري المعزولة لأحمال العمل مع الامتثال أو المتطلبات التنظيمية. تتضمن الأحجام المعزولة المدعومة في وضع تكوين الجهاز الظاهري Standard_E80ids_v4 وStandard_M128ms وStandard_F72s_v2 وStandard_G5 وStandard_GS5 وStandard_E64i_v3. لمزيد من المعلومات حول أحجام الأجهزة الظاهرية المعزولة، راجع عزل الجهاز الظاهري في Azure.

تجنب إنشاء وصلات الدليل في Windows

يصعب التعامل مع تقاطعات الدليل، التي تسمى أحياناً روابط الدليل الثابتة، أثناء تنظيف المهام والوظيفة. استخدم الروابط الرمزية (الروابط الناعمة) بدلاً من الروابط الثابتة.

الأقراص المؤقتة و AZ_BATCH_NODE_ROOT_DIR

تعتمد الدفعة على الأقراص المؤقتة للجهاز الظاهري، لأحجام الأجهزة الظاهرية المتوافقة مع الدفعات، لتخزين بيانات التعريف المتعلقة بتنفيذ المهمة جنبا إلى جنب مع أي عناصر لتنفيذ كل مهمة على هذا القرص المؤقت. أمثلة على نقاط تحميل القرص المؤقتة هذه أو الدلائل هي: /mnt/batchو /mnt/resource/batchو.D:\batch\tasks لا يتم دعم استبدال نقاط التحميل والدلائل هذه أو إعادة تحميلها أو توصيلها أو ربطها أو إعادة توجيهها أو أي من الدلائل الأصلية ويمكن أن يؤدي إلى عدم الاستقرار. إذا كنت تحتاج إلى مساحة أكبر على القرص، ففكر في استخدام حجم الجهاز الظاهري أو العائلة التي تحتوي على مساحة قرص مؤقتة تفي بمتطلباتك أو إرفاق أقراص البيانات. لمزيد من المعلومات، راجع القسم التالي حول إرفاق أقراص البيانات وإعدادها لعقد الحوسبة.

إرفاق أقراص البيانات وإعدادها

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

تلميح

عند تحميل قرص بيانات في Linux، إذا كان تداخل نقطة تحميل القرص ضمن نقاط التحميل المؤقتة Azure مثل /mnt أو /mnt/resource، يجب توخي الحذر بحيث لا يتم تقديم أي سباقات تبعية. على سبيل المثال، إذا تم تنفيذ عمليات التحميل هذه تلقائيا بواسطة نظام التشغيل، فقد يكون هناك تعارض بين القرص المؤقت الذي يتم تحميله وقرص (أقراص) البيانات الذي يتم تحميله تحت الأصل. يجب اتخاذ خطوات لضمان فرض التبعيات المناسبة بواسطة المرافق المتوفرة مثل systemd أو تأجيل تحميل قرص البيانات إلى مهمة البدء كجزء من البرنامج النصي لإعداد قرص البيانات غير المتكرر.

إعداد أقراص البيانات في تجمعات Linux Batch

يتم تقديم أقراص بيانات Azure في Linux كأجهزة حظر وتعيين معرف نموذجي sd[X] . يجب ألا تعتمد على التعيينات الثابتة sd[X] حيث يتم تعيين هذه التسميات ديناميكيا في وقت التمهيد ولا يضمن أن تكون متسقة بين التمهيد الأول وأي تمهيد لاحق. يجب تحديد الأقراص المرفقة من خلال التعيينات المقدمة في /dev/disk/azure/scsi1/. على سبيل المثال، إذا حددت LUN 0 لقرص البيانات في واجهة برمجة تطبيقات AddPool، فسيبيان هذا القرص ك /dev/disk/azure/scsi1/lun0. على سبيل المثال، إذا كنت تريد سرد هذا الدليل، فقد ترى:

user@host:~$ ls -l /dev/disk/azure/scsi1/
total 0
lrwxrwxrwx 1 root root 12 Oct 31 15:16 lun0 -> ../../../sdc

ليست هناك حاجة لترجمة المرجع مرة أخرى إلى sd[X] التعيين في البرنامج النصي للتحضير الخاص بك، بدلا من ذلك الرجوع إلى الجهاز مباشرة. في هذا المثال، سيكون /dev/disk/azure/scsi1/lun0هذا الجهاز . يمكنك توفير هذا المعرف مباشرة إلى fdisk، mkfs، وأي أدوات أخرى مطلوبة لسير العمل الخاص بك. بدلا من ذلك، يمكنك استخدام lsblk مع blkid لتعيين UUID للقرص.

لمزيد من المعلومات حول أقراص بيانات Azure في Linux، بما في ذلك الطرق البديلة لتحديد موقع أقراص البيانات وخياراتها /etc/fstab ، راجع هذه المقالة. تأكد من عدم وجود تبعيات أو سباقات كما هو موضح في ملاحظة التلميح قبل ترقية أسلوبك إلى استخدام الإنتاج.

إعداد أقراص البيانات في تجمعات Windows Batch

يتم تقديم أقراص بيانات Azure المرفقة بعقد حساب Batch Windows دون تقسيم وغير منسقة. تحتاج إلى تعداد الأقراص بأقسام RAW للتنفيذ كجزء من مهمة البدء. يمكن استرداد هذه المعلومات باستخدام Get-Disk PowerShell cmdlet. على سبيل المثال، قد ترى:

PS C:\Windows\system32> Get-Disk

Number Friendly Name Serial Number                    HealthStatus         OperationalStatus      Total Size Partition
                                                                                                             Style
------ ------------- -------------                    ------------         -----------------      ---------- ----------
0      Virtual HD                                     Healthy              Online                      30 GB MBR
1      Virtual HD                                     Healthy              Online                      32 GB MBR
2      Msft Virtu...                                  Healthy              Online                      64 GB RAW

حيث يكون رقم القرص 2 هو قرص البيانات غير المهيئت المرفق بعقدة الحساب هذه. يمكن بعد ذلك تهيئة هذه الأقراص وتقسيمها وتنسيقها كما هو مطلوب لسير العمل الخاص بك.

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

جمع سجلات وكيل الدُفعات

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

إدارة ترقيات نظام التشغيل

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

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

واجهة برمجة تطبيقات الدفعات

فشل المهلة

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

قابلية التوصيل

راجع الإرشادات التالية المتعلقة بالاتصال في حلول المجموعات الخاصة بك.

مجموعات أمان الشبكة (NSGs) والتوجيهات المعرفة من قبل المستخدم (UDRs)

عند توفير تجمعات الدفعات في شبكة ظاهرية، تأكد من اتباع الإرشادات المتعلقة باستخدام BatchNodeManagement عن كثب.علامة خدمة المنطقة والمنافذ والبروتوكولات واتجاه القاعدة. يوصى بشدة باستخدام علامة الخدمة؛ لا تستخدم عناوين IP لخدمة Batch الأساسية لأنها يمكن أن تتغير بمرور الوقت. يمكن أن يؤدي استخدام عناوين IP للخدمة الدفعية مباشرةً إلى عدم الاستقرار أو الانقطاعات أو الانقطاع لمجمعات الدُفعات الخاصة بك.

بالنسبة للمسارات المعرفة من قبل المستخدم (UDRs)، يوصى باستخدام BatchNodeManagement.علامات خدمة المنطقةبدلا من عناوين IP لخدمة Batch لأنها يمكن أن تتغير بمرور الوقت.

الالتزام بنظام أسماء المجالات DNS

تأكد من أن أنظمتك تحترم DNS Time-to-Live (TTL) لعنوان URL لخدمة الحساب الدفعي. بالإضافة إلى ذلك، تأكد من أن عملاء خدمة Batch وآليات الاتصال الأخرى بخدمة Batch لا تعتمد على عناوين IP.

تتطلب أي طلبات HTTP مع رموز حالة مستوى 5xx مع عنوان "الاتصال: إغلاق" في الاستجابة ضبط سلوك عميل خدمة Batch. يجب أن يلاحظ عميل خدمة Batch التوصية عن طريق إغلاق الاتصال الحالي، وإعادة حل DNS لعنون URL لخدمة حساب Batch، ومحاولة متابعة الطلبات على اتصال جديد.

إعادة الطلبات تلقائياً

تأكد من أن عملاء خدمة الدُفعات لديهم سياسات إعادة المحاولة المناسبة المعمول بها لإعادة محاولة طلباتك تلقائياً، حتى أثناء التشغيل العادي وليس حصرياً خلال أي فترات زمنية لصيانة الخدمة. يجب أن يمتد نهج إعادة المحاولة هذه لفترة لا تقل عن 5 دقائق. يتم توفير إمكانيات إعادة المحاولة التلقائية مع حزم SDK متنوعة، مثل فئة NET RetryPolicyProvider.

عناوين IP العامة الثابتة

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

اختبار الاتصال بتهيئة الخدمات السحابية

لا يمكنك استخدام بروتوكول "ping" /ICMP العادي مع الخدمات السحابية، لأن بروتوكول ICMP غير مسموح به من خلال موازن تحميل Azure. للحصول على مزيدٍ من المعلومات، راجع الاتصال والشبكات لخدمات Azure Cloud .

التبعيات الأساسية للعقدة الدفعية

ضع في اعتبارك التبعيات والقيود التالية عند تصميم حلول المجموعات الخاصة بك.

الموارد التي أنشأها النظام

يقوم Azure Batch بإنشاء وإدارة مجموعة من المستخدمين والمجموعات على الجهاز الظاهري، والتي لا ينبغي تغييرها:

Windows:

  • مستخدم باسم PoolNonAdmin
  • مجموعة مستخدمين تسمى WATaskCommon

Linux:

  • مستخدم يدعى _azbatch

تلميح

تسمية هؤلاء المستخدمين أو المجموعات هي عناصر تنفيذ وتخضع للتغيير في أي وقت.

تنظيف الملفات

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

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

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