استخدام تطبيق Patch Orchestration

هام

اعتبارا من 30 أبريل 2019، لم يعد الإصدار 1.2.* من تطبيق Patch Orchestration مدعوماً. تأكد من الترقية إلى أحدث إصدار.

تطبيق Patch Orchestration (POA) هو برنامج تضمين عن خدمة Azure Service Fabric Repair Manager، التي تُمكّن جدولة التحديث الجزئي لنظام التشغيل المستند إلى التكوين للمجموعات غير المستضافة على Azure. POA غير مطلوب للمجموعات غير المستضافة Azure، ولكن يلزم جدولة تثبيت التحديث الجزئي بواسطة مجال التحديث لإجراء التحديث الجزئي لمضيفات مجموعات Service Fabric دون تكبد وقت تعطل.

POA هو تطبيق Service Fabric يقوم بأتمتة التحديث الجزئي لنظام التشغيل على نظام مجموعة Service Fabric دون تكبد وقت تعطل.

يوفر POA الميزات التالية:

  • تثبيت التحديث التلقائي لنظام التشغيل. يتم تنزيل تحديثات نظام التشغيل وتثبيتها تلقائياً. تتم إعادة تشغيل عُقد نظام المجموعة حسب الحاجة دون تكبد وقت تعطل المجموعة.

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

التفاصيل الداخلية لـPOA

يتكون POA من المكونات الفرعية التالية:

  • خدمة المنسق: هذه خدمة ذات حالة مسؤولة عن:

    • تنسيق مهمة Windows Update على نظام المجموعة بأكمله.
    • تخزين نتائج عمليات Windows Update المنجزة.
  • خدمة عامل العقدة: يتم تشغيل هذه الخدمة عديمة الحالة على جميع عُقد نظام مجموعة Service Fabric. الخدمة مسؤولة عن:

    • تمهيد تشغيل NTService لعمل العقدة.
    • مراقبة NTService لعمل العقدة.
  • NTService لعامل العقدة: تعمل خدمة Windows NT هذه بامتياز مستوى أعلى (SYSTEM). في المقابل، تعمل خدمة عامل العقدة وخدمة المنسق بامتياز مستوى أدنى (NETWORK SERVICE). الخدمة مسؤولة عن تنفيذ وظائف Windows Update التالية على جميع عُقد نظام المجموعة:

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

ملاحظة

يستخدم POA خدمة Service Fabric Repair Manager لتعطيل العقدة أو تمكينها وإجراء فحوصات السلامة. تتعقب مهمة الإصلاح التي تم إنشاؤها بواسطة POA تقدم Windows Update لكل عقدة.

المتطلبات الأساسية

ملاحظة

يجب توفير الإصدار 4.6 من .NET Framework كحد أدنى.

تمكين خدمة Repair Manager (إذا لم تكن قيد التشغيل بالفعل)

يتطلب POA تمكين خدمة Repair Manager على نظام المجموعة.

مجموعات Azure

تكون خدمة Repair Manager ممكنة بشكل افتراضي لمجموعات Azure في الطبقة الفضية للقدرة على الصمود. قد تكون خدمة Repair Manager ممكنة أو لا لمجموعات Azure في الطبقة الذهبية للقدرة على الصمود، اعتماداً على وقت إنشاء هذه المجموعات. تكون خدمة Repair Manager غير ممكنة بشكل افتراضي لمجموعات Azure في الطبقة البرونزية للقدرة على الصمود. إذا كانت الخدمة ممكنة بالفعل، يمكنك رؤيتها قيد التشغيل في قسم خدمات النظام في Service Fabric Explorer.

مدخل Azure

يمكنك تمكين Repair Manager من مدخل Microsoft Azure عند إعداد نظام المجموعة. عند تكوين نظام المجموعة، حدد الخيار "Include Repair Manager" ضمن "Add-on features".

صورة لتمكين Repair Manager من مدخل Microsoft Azure

نموذج توزيع Azure Resource Manager

بدلاً من ذلك، يمكنك استخدام نموذج توزيع Azure Resource Manager لتمكين خدمة Repair Manager على مجموعات Service Fabric الجديدة والحالية. احصل على قالب لنظام المجموعة التي تريد توزيعها. يمكنك إما استخدام نماذج القوالب أو إنشاء قالب نموذج توزيع Azure Resource Manager مخصص.

لتمكين خدمة Repair Manager باستخدام قالب نموذج توزيع Azure Resource Manager، قم بما يلي:

  1. تحقق للتأكد من تعيين apiVersion إلى معاينة 2017-07-01 لمورد Microsoft.ServiceFabric/clusters. إذا كان الأمر مختلفاً، فستحتاج إلى تحديث apiVersion إلى معاينة 2017-07-01 أو إصدار أحدث:

    {
        "apiVersion": "2017-07-01-preview",
        "type": "Microsoft.ServiceFabric/clusters",
        "name": "[parameters('clusterName')]",
        "location": "[parameters('clusterLocation')]",
        ...
    }
    
  2. تمكين خدمة Repair Manager عن طريق إضافة المقطع addonFeatures التالي بعد المقطع fabricSettings:

    "fabricSettings": [
        ...      
    ],
    "addonFeatures": [
        "RepairManager"
    ],
    
  3. بعد تحديث قالب نظام المجموعة بهذه التغييرات، قم بتطبيقها واترك التحديث ينتهي. يمكنك الآن رؤية خدمة Repair Manager قيد التشغيل في مجموعتك. يطلق عليه fabric:/System/RepairManagerService في قسم خدمات النظام في Service Fabric Explorer.

مجموعات محلية مستقلة

لتمكين خدمة Repair Manager على نظام مجموعة Service Fabric جديد أو حالي، يمكنك استخدام إعدادات التكوين لنظام مجموعة Windows المستقل.

لتمكين خدمة Repair Manager:

  1. تحقق للتأكد من تعيين apiVersion في تكوينات نظام المجموعة العامة إلى 04-2017 أو أحدث، كما هو موضح هنا:

    {
        "name": "SampleCluster",
        "clusterConfigurationVersion": "1.0.0",
        "apiVersion": "04-2017",
        ...
    }
    
  2. قم بتمكين خدمة Repair Manager عن طريق إضافة المقطع addonFeatures التالي بعد المقطع fabricSettings، كما هو موضح هنا:

    "fabricSettings": [
        ...      
    ],
    "addonFeatures": [
        "RepairManager"
    ],
    
  3. قم بتحديث بيان نظام المجموعة الخاص بك بهذه التغييرات باستخدام بيان نظام المجموعة المُحدث لإنشاء نظام مجموعة جديد أو ترقية تكوين نظام المجموعة.

    بعد تشغيل نظام المجموعة باستخدام بيان نظام مجموعة مُحدّث، يمكنك رؤية خدمة Repair Manager قيد التشغيل في نظام المجموعة الخاص بك. يطلق عليه fabric:/System/RepairManagerService، وهو في قسم خدمات النظام في Service Fabric Explorer.

تكوين تحديثات Windows لجميع العُقد

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

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

لتنزيل حزمة التطبيق، انتقل إلى صفحة إصدار تطبيق Patch Orchestration على GitHub.

تكوين سلوك POA

يمكنك تكوين سلوك POA لتلبية احتياجاتك. تجاوز القيم الافتراضية عن طريق تمرير معلمة التطبيق أثناء إنشاء التطبيق أو تحديثه. يمكنك توفير معلمات التطبيق عن طريق تحديد ApplicationParameter إلى cmdlets Start-ServiceFabricApplicationUpgrade أو New-ServiceFabricApplication.

المعلَمة النوع التفاصيل
MaxResultsToCache Long الحد الأقصى لعدد نتائج Windows Update التي يجب تخزينها مؤقتاً.

القيمة الافتراضية هي 3000، بافتراض أن:
  - عدد العقد هو 20.
  - عدد التحديثات على العقدة شهرياً هو 5.
  - يمكن أن يكون عدد النتائج لكل عملية 10.
  - يجب تخزين نتائج الأشهر الثلاثة الماضية.
TaskApprovalPolicy التعداد
{ NodeWise, UpgradeDomainWise }
يشير TaskApprovalPolicy إلى النهج الذي سيتم استخدامه بواسطة خدمة المنسق لتثبيت تحديثات Windows عبر عقد نظام مجموعة Service Fabric.

القيم المسموح بها هي:
NodeWise: يتم تثبيت تحديثات Windows لعقدة واحدة في كل مرة.
UpgradeDomainWise: يتم تثبيت تحديثات Windows لمجال تحديث واحد في كل مرة. (على الأغلب، يمكن لجميع العُقد التي تنتمي إلى مجال تحديث الانتقال إلى تحديث Windows.)

للمساعدة في تحديد النهج الأنسب لمجموعتك، راجع قسم الأسئلة الشائعة.
LogsDiskQuotaInMB Long
(الإعداد افتراضي: 1024)
الحد الأقصى لحجم سجلات تطبيق patch orchestration بـMB، والذي يمكن أن يستمر محلياً على العقد.
WUQuery سلسلة
(الإعداد الافتراضي: IsInstalled=0)
الاستعلام للحصول على تحديثات Windows. لمزيدٍ من المعلومات، راجع WuQuery.
InstallWindowsOSOnlyUpdates منطقي
(الإعداد الافتراضي: false)
استخدم هذه العلامة للتحكم في التحديثات التي يجب تنزيلها وتثبيتها. القيم التالية مسموح بها
true - تثبيت تحديثات نظام التشغيل Windows فقط.
false - تثبيت جميع التحديثات المتوفرة على الجهاز.
WUOperationTimeOutInMinutes Int
(الإعداد افتراضي: 90)
يحدد المهلة لأي عملية Windows Update (البحث أو التنزيل أو التثبيت). إذا لم تكتمل العملية خلال المهلة المحددة، فسيتم إجهاضها.
WURescheduleCount Int
(الإعداد افتراضي: 5)
الحد الأقصى لعدد المرات التي تقوم فيها الخدمة بإعادة جدولة تحديث Windows في حالة فشل عملية بشكل مستمر.
WURescheduleTimeInMinutes Int
(الإعداد افتراضي: 30)
الفاصل الزمني الذي تقوم فيه الخدمة بإعادة جدولة تحديثات Windows في حالة استمرار الفشل.
WUFrequency سلسلة مفصولة بفواصل (الإعداد الافتراضي: أسبوعياً، الأربعاء، 7:00:00) تكرار تثبيت تحديثات Windows. التنسيق والقيم المحتملة هي:
- شهرياً، اليوم، الساعة:الدقيقة:الثانية (مثال: شهرياً، 5، 12:22:32). القيم المسموح بها للحقل DD (اليوم) هي أرقام من 1 إلى 28 والأخير.
- أسبوعياً، اليوم، الساعة:الدقيقة:الثانية (على سبيل المثال: أسبوعياً، الثلاثاء، 12:22:32)
- يومياً، الساعة:الدقيقة:الثانية (على سبيل المثال: يومياً، 12:22:32)
- MonthlyByWeekAndDay، الأسبوع، اليوم، الساعة:الدقيقة: الثانية (مثال: MonthlyByWeekAndDay، 2، الجمعة، 21:00:00 يشير إلى الساعة 9:00 مساءً بالتوقيت العالمي المتفق عليه (UTC) يوم الجمعة من الأسبوع الثاني من كل شهر)
- None تشير إلى أنه لا ينبغي إجراء تحديثات Windows.

الأوقات بالتوقيت العالمي المتفق عليه (UTC).
AcceptWindowsUpdateEula منطقي
(الإعداد الافتراضي: true)
من خلال تعيين هذه العلامة، يقبل التطبيق اتفاقية ترخيص المستخدم النهائي لتحديث Windows نيابة عن مالك الجهاز.

تلميح

إذا كنت تريد تنفيذ تحديثات Windows على الفور، فقم بتعيين WUFrequency بالنسبة إلى وقت توزيع التطبيق. على سبيل المثال، افترض أن لديك نظام مجموعة اختبار من خمس عُقد وتخطط لتوزيع التطبيق في حوالي الساعة 5:00 مساءً بالتوقيت العالمي المتفق عليه (UTC). إذا افترضت أن مهام ترقية التطبيق أو توزيعه تستغرق 30 دقيقة على الأكثر، فقم بتعيين WUFrequency إلى يومياً، 17:30:00.

توزيع POA

  1. قم بإنهاء جميع الخطوات الأساسية لإعداد نظام المجموعة.

  2. توزيع POA مثل أي تطبيق Service Fabric آخر. لتوزيعه باستخدام PowerShell، راجع توزيع التطبيقات وإزالتها باستخدام PowerShell.

  3. لتكوين التطبيق في وقت التوزيع، قم بتمرير ApplicationParameter إلى New-ServiceFabricApplication cmdlet. للتيسير، قدمنا البرنامج النصي Deploy.ps1 جنباً إلى جنب مع التطبيق. لاستخدام البرنامج النصي:

    • الاتصال بنظام مجموعة Service Fabric باستخدام Connect-ServiceFabricCluster.
    • تنفيذ البرنامج النصي Deploy.ps1 من PowerShell مع قيمة ApplicationParameter المناسبة.

ملاحظة

احتفظ بالبرنامج النصي ومجلد التطبيق PatchOrchestrationApplication في نفس الدليل.

ترقية POA

لترقية إصدار POA باستخدام PowerShell، اتبع الإرشادات الواردة في ترقية تطبيق Service Fabric باستخدام PowerShell.

إزالة POA

لإزالة التطبيق، اتبع الإرشادات الواردة في توزيع التطبيقات وإزالتها باستخدام PowerShell.

للتيسير، قدمنا البرنامج النصي Undeploy.ps1 جنباً إلى جنب مع التطبيق. لاستخدام البرنامج النصي:

  • الاتصال بنظام مجموعة Service Fabric باستخدام Connect-ServiceFabricCluster.
  • تنفيذ البرنامج النصي Undeploy.ps1 من PowerShell.

ملاحظة

احتفظ بالبرنامج النصي ومجلد التطبيق PatchOrchestrationApplication في نفس الدليل.

عرض نتائج Windows Update

يعرض POA واجهات برمجة تطبيقات REST لعرض النتائج السابقة للمستخدمين. فيما يلي مثال على النتيجة JSON:

[
  {
    "NodeName": "_stg1vm_1",
    "WindowsUpdateOperationResults": [
      {
        "OperationResult": 0,
        "NodeName": "_stg1vm_1",
        "OperationTime": "2019-05-13T08:44:56.4836889Z",
        "OperationStartTime": "2019-05-13T08:44:33.5285601Z",
        "UpdateDetails": [
          {
            "UpdateId": "7392acaf-6a85-427c-8a8d-058c25beb0d6",
            "Title": "Cumulative Security Update for Internet Explorer 11 for Windows Server 2012 R2 (KB3185319)",
            "Description": "A security issue has been identified in a Microsoft software product that could affect your system. You can help protect your system by installing this update from Microsoft. For a complete listing of the issues that are included in this update, see the associated Microsoft Knowledge Base article. After you install this update, you may have to restart your system.",
            "ResultCode": 0,
            "HResult": 0
          }
        ],
        "OperationType": 1,
        "WindowsUpdateQuery": "IsInstalled=0",
        "WindowsUpdateFrequency": "Daily,10:00:00",
        "RebootRequired": false
      }
    ]
  },
  ...
]

يتم وصف حقول JSON في الجدول التالي:

الحقل القيم التفاصيل
OperationResult 0 - نجح
1 - نجح مع وجود أخطاء
2 - فشل
3- أُجهض
4 - أُجهض مع المهلة
يشير إلى نتيجة العملية الشاملة، والتي تتضمن عادة تثبيت تحديث واحد أو أكثر.
رمز النتيجة نفس OperationResult يشير هذا الحقل إلى نتيجة عملية التثبيت لتحديث فردي.
OperationType 1- تثبيت
0 - بحث وتنزيل
بشكل افتراضي، التثبيت هو OperationType الوحيد الذي يظهر في النتائج.
WindowsUpdateQuery الإعداد الافتراضي هو "IsInstalled=0" استعلام Windows Update المُستخدم للبحث عن التحديثات. لمزيدٍ من المعلومات، راجع WuQuery.
RebootRequired true - كانت إعادة التشغيل مطلوبة
false - إعادة التشغيل لم تكن مطلوبة
يشير إلى ما إذا كانت إعادة التشغيل مطلوبة لإكمال تثبيت التحديثات.
OperationStartTime التاريخ والوقت يشير إلى الوقت الذي بدأت فيه العملية (تنزيل/تثبيت).
OperationTime التاريخ والوقت يشير إلى الوقت الذي اكتملت فيه العملية (تنزيل/تثبيت).
HResult 0 - ناجح
أخرى - فشل
يشير إلى سبب فشل تحديث Windows مع updateID "7392acaf-6a85-427c-8a8d-058c25beb0d6".

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

سجل الدخول إلى نظام المجموعة للاستعلام عن نتائج Windows Update. تعرف على عنوان IP المتماثل للعنوان الأساسي لخدمة المنسق، وافتح عنوان URL التالي من المستعرض: http://<REPLICA-IP>:<ApplicationPort>/PatchOrchestrationApplication/v1/GetWindowsUpdateResults.

تحتوي نقطة نهاية REST لخدمة المنسق على منفذ ديناميكي. للتحقق من عنوان URL الدقيق، يرجى الرجوع إلى Service Fabric Explorer. على سبيل المثال، تتوفر النتائج على http://10.0.0.7:20000/PatchOrchestrationApplication/v1/GetWindowsUpdateResults.

صورة لنقطة نهاية REST

إذا تم تمكين الوكيل العكسي على نظام المجموعة، يمكنك الوصول إلى URL من خارج نظام المجموعة أيضاً.

نقطة النهاية التي تحتاج إلى الضغط عليها هي http://<SERVERURL>:<REVERSEPROXYPORT>/PatchOrchestrationApplication/CoordinatorService/v1/GetWindowsUpdateResults.

لتمكين الوكيل العكسي على نظام المجموعة، اتبع الإرشادات الواردة في الوكيل العكسي في Azure Service Fabric.

تحذير

بعد تكوين الوكيل العكسي، يمكن عنونة جميع الخدمات المصغرة في نظام المجموعة التي تعرض نقطة نهاية HTTP من خارج نظام المجموعة.

التشخيصات والأحداث الصحية

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

ملاحظة

للحصول على العديد من التحسينات ذاتية الاستدعاء والتشخيص التالية، يجب تثبيت الإصدار 1.4.0 من POA أو إصدار أحدث.

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

لمساعدتك في فهم كيفية متابعة التحديثات على عقدة، دعنا ننتقل خطوة بخطوة:

  1. NodeAgentNTService، الذي يعمل على كل عقدة، يبحث عن تحديثات Windows المتوفرة في الوقت المحدد. إذا كانت التحديثات متوفرة، فستقوم بتنزيلها على العقدة.

  2. بعد تنزيل التحديثات، تقوم NTService لعامل العقدة بإنشاء مهمة إصلاح مقابلة للعقدة باسم POS___<unique_id>. يمكنك عرض مهام الإصلاح هذه باستخدام Get-ServiceFabricRepairTask cmdletأو باستخدام SFX في قسم تفاصيل العقدة. بعد إنشاء مهمة الإصلاح، تنتقل بسرعة إلى الحالة المُطالب بها.

  3. تبحث خدمة المنسق بشكل دوري عن مهام الإصلاح في الحالة المُطالب بها ثم تقوم بتحديثها إلى حالة التحضير استناداً إلى TaskApprovalPolicy. إذا تم تكوين TaskApprovalPolicy ليكون NodeWise، يتم إعداد مهمة إصلاح تتوافق مع عقدة فقط إذا لم تكن هناك مهمة إصلاح أخرى موجودة حالياً في حالة التحضير، أو الموافقة، أو التنفيذ، أوالاستعادة.

    وبالمثل، في حالة UpgradeWise TaskApprovalPolicy، هناك مهام في الحالات السابقة فقط للعُقد التي تنتمي إلى نفس مجال التحديث. بعد نقل مهمة إصلاح إلى حالة التحضير، يتم تعطيل عقدة Service Fabric المقابلة مع تعيين الهدف إلى إعادة التشغيل.

    تنشر إصدارات 1.4.0 والإصدارات الأحدث من POA الأحداث باستخدام الخاصية ClusterPatchingStatus على CoordinatorService لعرض العُقد التي يتم تحديثها جزئياً. يتم تثبيت التحديثات على _poanode_0، كما هو موضح في الصورة التالية:

    صورة لحالة تصحيح نظام المجموعة

  4. بعد تعطيل العقدة، يتم نقل مهمة الإصلاح إلى حالة التنفيذ.

    ملاحظة

    يمكن للعقدة العالقة في حالة معطل حظر مهمة إصلاح جديدة، ما يؤدي إلى إيقاف عملية التحديث الجزئي على نظام المجموعة.

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

    في إصدارات 1.4.0 والإصدارات الأحدث من POA، يمكنك العثور على حالة التحديث عن طريق عرض الأحداث الصحية على NodeAgentService باستخدام الخاصية WUOperationStatus-<NodeName>. تعرض الأقسام المميزة في الصور التالية حالة تحديثات Windows على العُقد poanode_0 وpoanode_2:

    تظهر لقطة الشاشة نافذة وحدة التحكم لحالة عملية Windows Update مع تمييز poanode_0.

    تظهر لقطة الشاشة نافذة وحدة التحكم لحالة عملية Windows Update مع تمييز poanode_1.

    يمكنك أيضاً الحصول على التفاصيل باستخدام PowerShell. للقيام بذلك، يمكنك الاتصال بنظام المجموعة وجلب حالة مهمة الإصلاح باستخدام Get-ServiceFabricRepairTask.

    في المثال التالي، تكون المهمة "POS__poanode_2_125f2969-933c-4774-85d1-ebdf85e79f15" في حالة DownloadComplete. وهذا يعني أنه تم تنزيل التحديثات على العقدة poanode_2، وسيتم محاولة التثبيت عند انتقال المهمة إلى حالة التنفيذ.

     D:\service-fabric-poa-bin\service-fabric-poa-bin\Release> $k = Get-ServiceFabricRepairTask -TaskId "POS__poanode_2_125f2969-933c-4774-85d1-ebdf85e79f15"
    
     D:\service-fabric-poa-bin\service-fabric-poa-bin\Release> $k.ExecutorData
     {"ExecutorSubState":2,"ExecutorTimeoutInMinutes":90,"RestartRequestedTime":"0001-01-01T00:00:00"}
    

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

    ExecutorSubState الوصف
    None=1 يعني أنه لم تكن هناك عملية مستمرة على العقدة. قد تكون الحالة في مرحلة انتقالية.
    DownloadCompleted=2 يعني أن عملية التنزيل قد اكتملت بنجاح أو فشل جزئي أو فشل.
    InstallationApproved=3 يعني أن عملية التنزيل قد اكتملت في وقت سابق وأن Repair Manager قد وافقت على التثبيت.
    InstallationInProgress=4 يتوافق مع حالة تنفيذ مهمة الإصلاح.
    InstallationCompleted=5 يعني أن التثبيت قد اكتمل بنجاح أو نجاح جزئي أو فشل.
    RestartRequested=6 يعني ذلك أن تثبيت التحديث الجزئي قد اكتمل وأن هناك إجراء إعادة تشغيل معلقاً على العقدة.
    RestartNotNeeded=7 يعني ذلك أنه لم تكن هناك حاجة إلى إعادة التشغيل بعد اكتمال تثبيت التحديث الجزئي.
    RestartCompleted=8 يعني أن إعادة التشغيل قد اكتملت بنجاح.
    OperationCompleted=9 تم الانتهاء من عملية Windows Update بنجاح.
    OperationAborted=10 يعني أن عملية Windows Update قد أُجهضت.
  6. في إصدارات 1.4.0 والإصدارات الأحدث من POA، عند انتهاء محاولة تحديث عقدة، يتم نشر حدث بالخاصية "WUOperationStatus-[NodeName]" على NodeAgentService لإعلامك عند بدء المحاولة التالية لتنزيل تحديثات Windows وتثبيتها. يتم عرض هذا في الصورة التالية:

    لقطة شاشة تعرض نافذة وحدة التحكم لحالة عملية Windows Update مع NodeAgentService.

سجلات التشخيص

يتم تجميع سجلات تطبيق Patch orchestration كجزء من سجلات وقت تشغيل Service Fabric.

يمكنك تسجيل السجلات باستخدام أداة التشخيص أو المسار الذي تختاره. يستخدم POA معرّفات الموفّر الثابتة التالية لتسجيل الأحداث عبر مصدر الحدث:

  • e39b723c-590c-4090-abb0-11e3e6616346
  • fc0028ff-bfdc-499f-80dc-ed922c52c5e9
  • 24afa313-0d3b-4c7c-b485-1047fd964b60
  • 05dc046c-60e9-4ef7-965e-91660adffa68

تقارير السلامة

ينشر POA أيضاً تقارير السلامة مقابل خدمة عامل العقدة أو خدمة المنسق في السيناريوهات التالية:

  • NTService لـعامل العقدة متوقف عن التشغيل

    إذا كان NTService لـعامل العقدة متوقفاً عن التشغيل على عقدة، يتم إنشاء تقرير سلامة على مستوى التحذير مقابل خدمة عامل العقدة.

  • لم يتم تمكين خدمة Repair Manager

    إذا لم يتم العثور على خدمة Repair Manager على نظام المجموعة، يتم إنشاء تقرير سلامة على مستوى التحذير لخدمة المنسق.

الأسئلة المتداولة

س: لماذا أرى نظام مجموعتي في حالة خطأ عند تشغيل POA؟

ج: أثناء عملية التثبيت، يقوم POA بتعطيل العُقد أو إعادة تشغيلها، ما قد يؤدي مؤقتاً إلى وجود نظام مجموعة غير صحي.

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

بحلول نهاية تثبيت تحديثات Windows، تتم إعادة تمكين العُقد بعد إعادة التشغيل.

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

صورة نظام مجموعة غير صحية

إذا استمرت المشكلة، فراجع قسم استكشاف الأخطاء وإصلاحها.

س: ماذا يمكنني أن أفعل إذا كان POA في حالة تحذير؟

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

س: ماذا يمكنني أن أفعل إذا كان نظام مجموعتي غير صحي وأحتاج إلى إجراء تحديث عاجل لنظام التشغيل؟

ج: لا يقوم POA بتثبيت التحديثات أثناء كون نظام المجموعة غير صحي. حاول إحضار نظام مجموعتك إلى حالة صحية لإلغاء حظر سير عمل POA.

س: هل يجب علي تعيين TaskApprovalPolicy كـ"NodeWise" أو "UpgradeDomainWise" لنظام مجموعتي؟

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

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

إذا كان بإمكان مجموعتك تحمل التشغيل على عدد N-1 من مجالات التحديث أثناء دورة التحديث الجزئي (حيث N هو إجمالي عدد مجالات التحديث على نظام مجموعتك)، يمكنك تعيين النهج كـ"UpgradeDomainWise". وبخلاف ذلك، قم بتعيينه على "NodeWise."

س: كم من الوقت يستغرق التحديث الجزئي للعقدة؟

ج: قد يستغرق التحديث الجزئي للعقدة من دقائق (على سبيل المثال، تحديثات تعريف Windows Defender) إلى ساعات (على سبيل المثال، تحديثات Windows التراكمية). يعتمد الوقت اللازم لإجراء تحديث جزئي للعقدة في الغالب على:

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

س: كم من الوقت يستغرق التحديث الجزئي لنظام مجموعة بأكمله؟

ج: يعتمد الوقت المطلوب لإجراء تحديث جزئي لنظام مجموعة بأكملها على:

  • الوقت اللازم لإجراء تحديث جزئي للعقدة.

  • نهج خدمة المنسق. ينتج عن النهج الافتراضي، "NodeWise"، تحديث جزئي لعقدة واحدة فقط في كل مرة، وهو نهج أبطأ من استخدام "UpgradeDomainWise."

    على سبيل المثال: إذا استغرقت العقدة حوالي ساعة واحدة لإجراء تحديث جزئي، فإن التحديث الجزئي لنظام مجموعة تحتوي على 20 عقدة (نفس نوع العُقد) مع 5 مجالات تحديث، يحتوي كل منها على 4 عُقد، يتطلب:

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

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

س: لماذا أرى بعض التحديثات في نتائج Windows Update التي يتم الحصول عليها عبر واجهة برمجة تطبيقات REST، وليس ضمن محفوظات Windows Update على الجهاز؟

ج: تظهر بعض تحديثات المنتج فقط في محفوظات التحديث أو التحديث الجزئي الخاصة بها. على سبيل المثال، قد يتم عرض تحديثات Windows Defender أو لا يتم عرضها في محفوظات Windows Update على Windows Server 2016.

س: هل يمكن استخدام POA لإجراء تحديث جزئي لنظام مجموعة التطوير الخاصة بي (نظام مجموعة العقدة الواحدة)؟

ج: لا، لا يمكن استخدام POA لإجراء تحديث جزئي لنظام مجموعة من عقدة واحدة. هذا القيد حسب التصميم، لأن خدمات نظام Service Fabric أو تطبيقات العملاء الأخرى ستتكبد وقت تعطل. لذلك، لن يوافق Repair Manager على مهام إصلاح تحديث جزئي.

س: كيف أجري تحديث جزئي لعُقد نظام مجموعة على Linux؟

ج: للتعرف على كيفية تنسيق التحديثات على Linux، راجع ترقيات صورة نظام التشغيل التلقائية لمجموعة مقياس الجهاز الظاهري من Azure.

س: لماذا تستغرق دورة التحديث وقتاً طويلاً؟

ج: يدخل الاستعلام عن النتيجة JSON دورة التحديث لجميع العُقد، ثم يمكنك محاولة معرفة الوقت المستغرق عن طريق تثبيت التحديث على كل عقدة باستخدام OperationStartTime وOperationTime (OperationCompletionTime).

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

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

س: لماذا يجب تعطيل العقدة عندما يقوم POA بإجراء تحديث جزئي؟

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

س: ما هو الحد الأقصى لعدد العُقد التي يمكن تحديثها باستخدام POA؟

ج: POA يستخدم Service Fabric Repair Manager لإنشاء مهام إصلاح العقد للتحديثات. ومع ذلك، لا يمكن أن يكون هناك أكثر من 250 مهمة إصلاح في نفس الوقت. حالياً، يقوم POA بإنشاء مهام إصلاح لكل عقدة في نفس الوقت، بحيث لا يمكن لـPOA تحديث أكثر من 250 عقدة في نظام مجموعة.

إخلاء المسؤولية

  • يقبل POA اتفاقية ترخيص المستخدم النهائي لتحديث Windows نيابة عن مالك المستخدم. اختيارياً، يمكن إيقاف تشغيل الإعداد في تكوين التطبيق.

  • يجمع POA بيانات تتبع الاستخدام لتتبع الاستخدام والأداء. تتبع بيانات تتبع الاستخدام للتطبيق إعداد بيانات تتبع الاستخدام الخاصة بوقت تشغيل Service Fabric (وهو قيد التشغيل بشكل افتراضي).

استكشاف الأخطاء وإصلاحها

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

العقدة لا تعود إلى حالة التشغيل

  • قد تكون العقدة عالقة في حالة تعطيل بسبب:

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

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

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

تخطي التحديثات على بعض العُقد

يحاول POA تثبيت تحديث Windows وفقاً لنهج إعادة الجدولة. تحاول الخدمة استرداد العقدة وتخطي التحديث وفقاً لنهج التطبيق.

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

سلامة نظام المجموعة يذهب إلى خطأ أثناء تثبيت التحديث

يمكن أن يؤدي تحديث Windows الخاطئ إلى انخفاض سلامة تطبيق أو نظام مجموعة على عقدة معينة أو مجال تحديث. يتوقف POA عن أي عملية تحديث Windows لاحقة حتى تصبح المجموعة سليمة مرة أخرى.

يجب على المسؤول التدخل وتحديد سبب عدم سلامة التطبيق أو نظام المجموعة بسبب تحديث Windows.

ملاحظات إصدار POA

ملاحظة

بالنسبة للإصدارات 1.4.0 من POA والإصدارات الأحدث، يمكنك العثور على ملاحظات الإصدار والإصدارات على صفحة إصدار تطبيق Patch Orchestration على GitHub.

الإصدار 1.1.0

  • إصدار عام

الإصدار 1.1.1

  • تم إصلاح خطأ في SetupEntryPoint من NodeAgentService الذي منع تثبيت NodeAgentNTService.

الإصدار 1.2.0

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

الإصدار 1.2.1

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

الإصدار 1.2.2

  • إصلاحات الأخطاء المتنوعة.
  • الثنائيات موقعة الآن.
  • تمت إضافة رابط sfpkg للتطبيق.

الإصدار 1.3.0

  • يؤدي تعيين InstallWindowsOSOnlyUpdates إلى false الآن إلى تثبيت جميع التحديثات المتوفرة.
  • تغيير منطق تعطيل التحديثات التلقائية. يعمل هذا على إصلاح خطأ حيث لم يتم تعطيل التحديثات التلقائية على Server 2016 والإصدارات الأحدث.
  • قيود تعيين موضع ذات معلمات لكل من الخدمات المصغرة لـPOA لحالات الاستخدام المتقدمة.

الإصدار 1.3.1

  • إصلاح التراجع حيث لن يعمل POA 1.3.0 على Windows Server 2012 R2 أو إصدار سابق بسبب فشل تعطيل التحديثات التلقائية.
  • إصلاح الخطأ حيث يتم دائماً اختيار تكوين InstallWindowsOSOnlyUpdates كـTrue.
  • تغيير القيمة الافتراضية لـInstallWindowsOSOnlyUpdates إلى False.

الإصدار 1.3.2

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