نشر التطبيقات لحساب العقد مع حزم التطبيقات الدفعية

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

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

توضح هذه المقالة كيفية تحميل حزم التطبيقات وإدارتها في مدخل Azure. كما يوضح كيفية تثبيتها على عقد حساب تجمع مع مكتبة Batch.NET.

متطلبات حزمة التطبيق

لاستخدام حزم التطبيقات، تحتاج إلى ربط حساب تخزين Azure بحساب الدفعة.

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

ملاحظة

لا تدعم تجمعات الدفعات التي تم إنشاؤها قبل 5 يوليو 2017 حزم التطبيقات (ما لم يتم إنشاؤها بعد 10 مارس 2016 باستخدام تكوين الخدمات السحابية). تحل ميزة حزم التطبيقات الموضحة هنا محل ميزة تطبيقات الدفعات المتوفرة في الإصدارات السابقة من الخدمة.

فهم التطبيقات وحزم التطبيقات

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

كل حزمة تطبيق هو ملف zip. يحتوي على الثنائيات التطبيق وأية ملفات دعم. يتم اعتماد تنسيق zip. فقط.

رسم تخطيطي يوضح طريقة عرض عالية المستوى للتطبيقات وحزم التطبيقات.

يمكنك تحديد حزم التطبيقات على مستوى التجمع أو المهمة.

  • يتم نشر حزم تطبيق التجمع إلى كل عقدة في التجمع. يتم نشر التطبيقات عندما تنضم عقدة إلى تجمع وعند إعادة تمهيدها أو إعادة تصورها.

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

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

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

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

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

ملاحظة

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

تحميل التطبيقات وإدارتها

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

ملاحظة

بينما يمكنك تعريف قيم التطبيق في مورد Microsoft.Batch/batchAccountsلقالب ARM، فإنه ليس من الممكن حاليا استخدام قالب ARM لتحميل حزم التطبيقات لاستخدامها في حساب الدفعة. يجب تحميلها إلى حساب التخزين المرتبط الخاص بك كما هو موضح في إضافة تطبيق جديد.

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

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

  1. حدد نافذة التحذير التي تنص على "لا يوجد حساب تخزين تم تكوينه لحساب الدفعة هذا. "
  2. ثم اختر تعيين حساب التخزين... في الصفحة التالية.
  3. اختر الارتباط تحديد حساب تخزين في قسم معلومات حساب التخزين .
  4. حدد حساب التخزين الذي تريد استخدامه مع حساب الدفعة هذا في القائمة في جزء اختيار حساب التخزين .
  5. ثم حدد حفظ في الزاوية العلوية اليمنى من الصفحة.

بعد ربط الحسابين، يمكن ل Batch نشر الحزم المخزنة في حساب التخزين المرتبط تلقائيا إلى عقد الحساب الخاصة بك.

هام

لا يمكنك استخدام حزم التطبيقات مع حسابات Azure Storage المكونة مع قواعد جدار الحماية أو مع تعيين مساحة الاسم الهرمية إلى ممكن.

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

إضافة تطبيق جديد

لإنشاء تطبيق جديد، يمكنك إضافة حزمة تطبيق وتحديد معرف تطبيق فريد.

في حساب Batch الخاص بك، حدد Applications من قائمة التنقل اليسرى، ثم حدد Add.

لقطة شاشة لعملية إنشاء تطبيق جديد في مدخل Microsoft Azure.

أدخل المعلومات الآتية:

  • معرف التطبيق: معرف التطبيق الجديد.
  • الإصدار": إصدار حزمة التطبيق التي تقوم بتحميلها.
  • حزمة التطبيق: ملف .zip يحتوي على ثنائيات التطبيق والملفات الداعمة المطلوبة لتشغيل التطبيق.

يجب أن يتبع معرف التطبيقوالإصدار الذي تدخله هذه المتطلبات:

  • في عقد Windows، يمكن أن يحتوي المعرّف على أي مجموعة من الأحرف الأبجدية الرقمية والواصلات والشرطات السفلية. على عقد Linux، يُسمح فقط بالأحرف الأبجدية الرقمية والشرطات السفلية.
  • لا يمكن أن تحتوي على أكثر من 64 حرفًا.
  • يجب أن تكون فريدة في حساب Batch.
  • المعرفات تحافظ على حالة الأحرف وتكون غير حساسة لحالة الأحرف.

عندما تصبح مستعدًا، حدد "Review + create". بعد تحميل ملف .zip إلى حساب Azure Storage خاصتك، يعرض المدخل إشعارًا. اعتمادا على حجم الملف الذي تقوم بتحميله وسرعة اتصال الشبكة، قد تستغرق هذه العملية بعض الوقت.

عرض التطبيقات الحالية

لعرض التطبيقات في حساب الدفعة، حدد التطبيقات في قائمة التنقل اليسرى.

لقطة شاشة لعنصر قائمة التطبيقات في مدخل Microsoft Azure.

يؤدي تحديد خيار القائمة هذا إلى فتح نافذة التطبيقات. يعرض هذا الإطار معرف كل تطبيق في الحساب الخاص بك والخصائص التالية:

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

لمشاهدة بنية ملف حزمة التطبيق على عقدة حساب، انتقل إلى حساب الدفعة في مدخل Microsoft Azure. حدد تجمعات. ثم حدد التجمع الذي يحتوي على عقدة الحساب. حدد عقدة حساب التي يتم تثبيت حزمة التطبيق عليها وافتح مجلد التطبيقات.

عرض تفاصيل التطبيق

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

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

إضافة حزمة تطبيق جديدة

لإضافة إصدار حزمة تطبيق لتطبيق موجود، حدد التطبيق في صفحة التطبيقات لحساب Batch الخاص بك. ثم اختر Add.

كما فعلت للتطبيق الجديد، حدد الإصدار لحزمتك الجديدة، ثم قم بتحميل ملف .zip في حقل حزمة التطبيق، ثم حدد إرسال.

تحديث حزمة تطبيقات أو حذفها

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

لقطة شاشة تعرض خيارات التحديث والحذف لحزم التطبيقات في مدخل Microsoft Azure.

إذا حددت تحديث، يمكنك تحميل ملف .zip جديد. يحل هذا الملف محل ملف .zip السابق الذي قمت بتحميله لهذا الإصدار.

إذا حددت حذف، فستتم مطالبتك بتأكيد حذف هذا الإصدار. بعد تحديد موافق، يحذف Batch ملف .zip من حساب Azure Storage الخاص بك. إذا قمت بحذف الإصدار الافتراضي من تطبيق، تتم إزالة إعداد الإصدار الافتراضي لهذا التطبيق.

تثبيت التطبيقات على عقد الحوسبة

لقد تعلمت كيفية إدارة حزم التطبيقات في مدخل Microsoft Azure. يمكنك الآن معرفة كيفية توزيعها لحساب العقد وتشغيلها باستخدام مهام Batch.

تثبيت حزم تطبيقات التجمع

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

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

// Create the unbound CloudPool
CloudPool myCloudPool =
    batchClient.PoolOperations.CreatePool(
        poolId: "myPool",
        targetDedicatedComputeNodes: 1,
        virtualMachineSize: "standard_d1_v2",
        VirtualMachineConfiguration: new VirtualMachineConfiguration(
            imageReference: new ImageReference(
                                publisher: "MicrosoftWindowsServer",
                                offer: "WindowsServer",
                                sku: "2019-datacenter-core",
                                version: "latest"),
            nodeAgentSkuId: "batch.node.windows amd64");

// Specify the application and version to install on the compute nodes
myCloudPool.ApplicationPackageReferences = new List<ApplicationPackageReference>
{
    new ApplicationPackageReference {
        ApplicationId = "litware",
        Version = "1.1001.2b" }
};

// Commit the pool so that it's created in the Batch service. As the nodes join
// the pool, the specified application package is installed on each.
await myCloudPool.CommitAsync();

هام

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

تثبيت حزم تطبيقات المهام

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

لتثبيت حزمة تطبيق مهمة تكوين الخاصية CloudTask.ApplicationPackageReferences للمهمة:

CloudTask task =
    new CloudTask(
        "litwaretask001",
        "cmd /c %AZ_BATCH_APP_PACKAGE_LITWARE%\\litware.exe -args -here");

task.ApplicationPackageReferences = new List<ApplicationPackageReference>
{
    new ApplicationPackageReference
    {
        ApplicationId = "litware",
        Version = "1.1001.2b"
    }
};

تنفيذ التطبيقات المثبتة

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

على العقد Windows، المتغير بالتنسيق التالي:

Windows:
AZ_BATCH_APP_PACKAGE_APPLICATIONID#version

على عقد لينكس، يكون التنسيق مختلفا قليلا. يتم تسوية الفترات (.) والواصلات (-) وعلامات الأرقام (#) بتسطير أسفل السطر في متغير البيئة. أيضا، يتم الاحتفاظ بحالة معرف التطبيق. على سبيل المثال:

Linux:
AZ_BATCH_APP_PACKAGE_applicationid_version

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

Windows:
AZ_BATCH_APP_PACKAGE_BLENDER#2.7

على عقد Linux، حدد متغير البيئة في هذا التنسيق. تسطيح الفترات (.) واصلات (-) وعلامات الأرقام (#) إلى تسطير أسفل السطر والحفاظ على حالة معرف التطبيق:

Linux:
AZ_BATCH_APP_PACKAGE_blender_2_7

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

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

AZ_BATCH_APP_PACKAGE_BLENDER

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

string taskId = "blendertask01";
string commandLine =
    @"cmd /c %AZ_BATCH_APP_PACKAGE_BLENDER%\blender.exe -args -here";
CloudTask blenderTask = new CloudTask(taskId, commandLine);

تلميح

لمزيد من المعلومات حول حساب إعدادات بيئة العقدة، راجع إعدادات البيئة للمهام.

تحديث حزم تطبيقات تجمع

إذا تم تكوين تجمع موجود بالفعل مع حزمة تطبيق، يمكنك تحديد حزمة جديدة للتجمع. هذا يعني:

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

في هذا المثال، يحتوي التجمع الموجود على الإصدار 2.7 من تطبيق الخلاط المكون كأحد CloudPool.ApplicationPackageReferences الخاصة به. لتحديث العقد التجمع مع الإصدار 2.76b، حدد ApplicationPackageReference مع الإصدار الجديد، وقم بتنفيذ التغيير.

string newVersion = "2.76b";
CloudPool boundPool = await batchClient.PoolOperations.GetPoolAsync("myPool");
boundPool.ApplicationPackageReferences = new List<ApplicationPackageReference>
{
    new ApplicationPackageReference {
        ApplicationId = "blender",
        Version = newVersion }
};
await boundPool.CommitAsync();

الآن بعد أن تم تكوين الإصدار الجديد، تثبيت خدمة الدفعة الإصدار 2.76b إلى أي عقدة جديدة تنضم إلى التجمع. لتثبيت 2.76b على العقد الموجودة بالفعل في التجمع، إعادة تمهيد أو إعادة التصوير لهم. تحتفظ العقد المعاد تمهيدها بالملفات من عمليات نشر الحزمة السابقة.

سرد التطبيقات في حساب دفعي

يمكنك سرد التطبيقات وحزمها في حساب دفعي باستخدام أسلوب ApplicationOperations.ListApplicationSummaries

// List the applications and their application packages in the Batch account.
List<ApplicationSummary> applications = await batchClient.ApplicationOperations.ListApplicationSummaries().ToListAsync();
foreach (ApplicationSummary app in applications)
{
    Console.WriteLine("ID: {0} | Display Name: {1}", app.Id, app.DisplayName);

    foreach (string version in app.Versions)
    {
        Console.WriteLine("  {0}", version);
    }
}

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