ترقية تطبيق Service Fabric باستخدام PowerShell


نهج الترقية الأكثر استخدامًا والموصى به هو ترقية بالدور خاضع للمراقبة. يراقب Azure Service Fabric سلامة التطبيق الذي تتم ترقيته استنادًا إلى مجموعة من نُهج السلامة. بمجرد ترقية مجال تحديث (UD)، يقوم Service Fabric بتقييم سلامة التطبيق وينتقل إما إلى مجال التحديث التالي أو يفشل في الترقية وفقًا لنُهج السلامة.

يمكن إجراء ترقية تطبيق مراقبة باستخدام واجهات برمجة التطبيقات المُدارة أو الأصلية أو PowerShell أو Azure CLI أو Java أو REST. للحصول على تعليمات حول إجراء ترقية باستخدام Visual Studio، راجع ترقية تطبيقك باستخدام Visual Studio.

باستخدام ترقيات Service Fabric بالدور التي تتم مراقبتها، يمكن لمسؤول التطبيق تكوين نهج تقييم السلامة الذي يستخدمه Service Fabric لتحديد ما إذا كان التطبيق سليمًا أم لا. بالإضافة إلى ذلك، يمكن للمسؤول تكوين الإجراء المطلوب اتخاذه عند فشل تقييم الحالة (على سبيل المثال، إجراء العودة إلى الحالة السابقة تلقائيًا.) يتناول هذا القسم ترقية تمت مراقبتها لأحد عينات SDK التي تستخدم PowerShell.

تحقق من هذه الصفحة للحصول على فيديو تدريبي يرشدك أيضًا خلال ترقية التطبيق:

إشعار

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

$myApplication = Get-ServiceFabricApplication -ApplicationName fabric:/myApplication
$appParamCollection = $myApplication.ApplicationParameters

$applicationParameterMap = @{}
foreach ($pair in $appParamCollection)
{
    $applicationParameterMap.Add($pair.Name, $pair.Value);
}

Start-ServiceFabricApplicationUpgrade -ApplicationName fabric:/myApplication -ApplicationTypeVersion 2.0.0 -ApplicationParameter $applicationParameterMap -Monitored -FailureAction Rollback

الخطوة 1: إنشاء عينة الكائنات المرئية ونشرها

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

إشعار

قبل استخدام أي من أوامر Service Fabric في PowerShell، تحتاج أولاً إلى الاتصال بالمجموعة باستخدام Connect-ServiceFabricCluster cmdlet. وبالمثل، من المفترض أن يكون نظام المجموعة قد تم إعداده بالفعل على جهازك المحلي. راجع المقالة حول إعداد بيئة تطوير Service Fabric.

بعد إنشاء المشروع في Visual Studio، يمكنك استخدام أمر PowerShell Copy-ServiceFabricApplicationPackage لنسخ حزمة التطبيق إلى ImageStore. إذا كنت ترغب في التحقق من حزمة التطبيق محليًا، فاستخدم Test-ServiceFabricApplicationPackage cmdlet. الخطوة التالية هي تسجيل التطبيق إلى وقت تشغيل Service Fabric باستخدام Register-ServiceFabricApplicationType cmdlet. الخطوة التالية هي بدء تشغيل مثيل التطبيق باستخدام New-ServiceFabricApplication cmdlet. هذه الخطوات الثلاث متماثلة لاستخدام عنصر القائمة نشر في Visual Studio. بمجرد اكتمال التوفير، يجب تنظيف حزمة التطبيق التي تم نسخها من مخزن الصور لتقليل الموارد المستهلكة. إذا لم يعد نوع التطبيق مطلوبًا، فيجب إلغاء تسجيله لنفس السبب. راجع نشر التطبيقات وإزالتها باستخدام PowerShell لمزيد من المعلومات.

الآن، يمكنك استخدام مستكشف Service Fabric لعرض المجموعة والتطبيق. يحتوي التطبيق على خدمة ويب يمكن الانتقال إليها في Internet Explorer عن طريق كتابة http://localhost:8081/visualobjects في شريط العناوين. يجب أن ترى بعض الكائنات المرئية العائمة تتحرك في الشاشة. بالإضافة إلى ذلك، يمكنك استخدام Get-ServiceFabricApplication للتحقق من حالة التطبيق.

الخطوة 2: تحديث نموذج Visual Objects

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

حدد المشروع VisualObjects.ActorService ضمن حل VisualObjects، ثم افتح الملف StatefulVisualObjectActor.cs. داخل هذا الملف، انتقل إلى الأسلوب MoveObject، وقم بالتعليق على this.State.Move()وإلغاء التعليق على this.State.Move(true). يؤدي هذا التغيير إلى تدوير الكائنات بعد ترقية الخدمة.

نحتاج أيضًا إلى تحديث ملف ServiceManifest.xml (ضمن PackageRoot) للمشروع VisualObjects.ActorService. قم بتحديث CodePackage وإصدار الخدمة إلى 2.0 والأسطر المقابلة في ملف ServiceManifest.xml. يمكنك استخدام الخيار Visual Studio تحرير ملفات البيانات بعد النقر بزر الماوس الأيمن فوق الحل لإجراء تغييرات ملف البيانات.

بعد إجراء التغييرات، يجب أن يبدو البيان كما يلي (تعرض الأجزاء المميزة التغييرات):

<ServiceManifestName="VisualObjects.ActorService" Version="2.0" xmlns="http://schemas.microsoft.com/2011/01/fabric" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance">

<CodePackageName="Code" Version="2.0">

يتم الآن تحديث ملف ApplicationManifest.xml (الموجود ضمن مشروع VisualObjects ضمن حل VisualObjects) إلى الإصدار 2.0 من مشروع VisualObjects.ActorService. بالإضافة إلى ذلك، يتم تحديث إصدار التطبيق إلى 2.0.0.0 من 1.0.0.0. يجب أن يبدو ApplicationManifest.xml مثل القصاصة البرمجية التالية:

<ApplicationManifestxmlns:xsd="https://www.w3.org/2001/XMLSchema" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" ApplicationTypeName="VisualObjects" ApplicationTypeVersion="2.0.0.0" xmlns="http://schemas.microsoft.com/2011/01/fabric">

 <ServiceManifestRefServiceManifestName="VisualObjects.ActorService" ServiceManifestVersion="2.0" />

الآن، قم بإنشاء المشروع عن طريق تحديد مشروع ActorService فقط، ثم النقر بزر الماوس الأيمن وتحديد الخيار إنشاء في Visual Studio. إذا حددت إعادة إنشاء الكل، فيجب عليك تحديث الإصدارات لجميع المشاريع، نظرًا لأن التعليمات البرمجية كانت ستتغير. بعد ذلك، دعنا نقوم بحزم التطبيق المحدث بالنقر بزر الماوس الأيمن فوق VisualObjectsApplication، وتحديد قائمة Service Fabric، واختيار الحزمة. ينشئ هذا الإجراء حزمة تطبيق يمكن نشرها. التطبيق المحدّث جاهز للنشر.

الخطوة 3: اتخاذ قرار بشأن نُهج السلامة ومعلمات الترقية

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

ومع ذلك، دعنا نزيد من HealthCheckStableDuration إلى 180 ثانية (بحيث تكون الخدمات سليمة لمدة 120 ثانية على الأقل قبل متابعة الترقية إلى مجال التحديث التالي). دعنا أيضًا نعيّن UpgradeDomainTimeout إلى 1200 ثانية وUpgradeTimeout على 3000 ثانية.

أخيرًا، دعنا أيضًا نعيّن UpgradeFailureAction إلى العودة إلى الحالة السابقة. يتطلب هذا الخيار من Service Fabric إعادة التطبيق إلى الإصدار السابق إذا واجه أي مشكلات أثناء الترقية. وبالتالي، عند بدء الترقية (في الخطوة 4)، يتم تحديد المعلمات التالية:

FailureAction = العودة إلى الحالة السابقة

HealthCheckStableDurationSec = 180

UpgradeDomainTimeoutSec = 1200

UpgradeTimeout = 3000

الخطوة 4: إعداد التطبيق للترقية

الآن تم إنشاء التطبيق وأصبح جاهزًا للترقية. إذا قمت بفتح نافذة PowerShell كمسؤول وكتبت Get-ServiceFabricApplication، فيجب أن يتيح لك ذلك معرفة أنه نوع التطبيق 1.0.0.0 من VisualObjects الذي تم نشره.

تُخزن حزمة التطبيق ضمن المسار النسبي التالي حيث تفك ضغط عدة تطوير برامج "تصميم الخدمة": Samples\Services\Stateful\VisualObjects\VisualObjects\obj\x64\Debug. يجب أن تجد مجلد "حزمة" في هذا الدليل، حيث يتم تخزين حزمة التطبيق. تحقق من الطوابع الزمنية للتأكد من أنها أحدث إصدار (قد تحتاج إلى تعديل المسارات بشكل مناسب أيضًا).

دعنا الآن ننسخ حزمة التطبيق المحدثة إلى Service Fabric ImageStore (حيث يتم تخزين حزم التطبيقات بواسطة Service Fabric). تقوم المعلمة ApplicationPackagePathInImageStore بإعلام Service Fabric أين يمكنه العثور على حزمة التطبيق. لقد وضعنا التطبيق المحدّث في "VisualObjects_V2" مع الأمر التالي (قد تحتاج إلى تعديل المسارات مرة أخرى بشكل مناسب).

Copy-ServiceFabricApplicationPackage -ApplicationPackagePath .\Samples\Services\Stateful\VisualObjects\VisualObjects\obj\x64\Debug\Package -ApplicationPackagePathInImageStore "VisualObjects\_V2"

الخطوة التالية هي تسجيل هذا التطبيق مع Service Fabric، والذي يمكن تنفيذه باستخدام الأمر Register-ServiceFabricApplicationType:

Register-ServiceFabricApplicationType -ApplicationPathInImageStore "VisualObjects\_V2"

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

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

Remove-ServiceFabricApplicationPackage -ApplicationPackagePathInImageStore "VisualObjects\_V2" -ImageStoreConnectionString fabric:ImageStore

الخطوة 5: بدء ترقية التطبيق

الآن، نحن مستعدون لبدء ترقية التطبيق باستخدام الأمر Start-ServiceFabricApplicationUpgrade:

Start-ServiceFabricApplicationUpgrade -ApplicationName fabric:/VisualObjects -ApplicationTypeVersion 2.0.0.0 -HealthCheckStableDurationSec 60 -UpgradeDomainTimeoutSec 1200 -UpgradeTimeout 3000   -FailureAction Rollback -Monitored

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

الآن، مع متابعة ترقية التطبيق، يمكنك مراقبته باستخدام مستكشف Service Fabric، أو باستخدام الأمر Get-ServiceFabricApplicationUpgrade PowerShell:

Get-ServiceFabricApplicationUpgrade fabric:/VisualObjects

في بضع دقائق، يجب أن تنص الحالة التي حصلت عليها باستخدام الأمر PowerShell السابق على أنه تمت ترقية جميع مجالات التحديث (اكتملت). ويجب أن تجد أن الكائنات المرئية في نافذة المستعرض الخاص بك قد بدأت في التدوير!

يمكنك محاولة الترقية من الإصدار 2 إلى الإصدار 3، أو من الإصدار 2 إلى الإصدار 1 كتمرين. يعتبر الانتقال من الإصدار 2 إلى الإصدار 1 أيضًا ترقية. قم بالتشغيل مع المهلات ونهج السلامة لتكون على دراية بها. عند النشر إلى مجموعة Azure، يجب تعيين المعلمات بشكل مناسب. من الجيد تعيين المهلات بتحفظ.

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

ترشدك ترقية التطبيق الخاص بك باستخدام Visual Studio خلال ترقية التطبيق باستخدام Visual Studio.

تحكّم في كيفية ترقية تطبيقك باستخدام معلمات الترقية.

اجعل ترقيات تطبيقك متوافقة من خلال تعلم كيفية استخدام تسلسل البيانات.

تعرّف على كيفية استخدام الوظائف المتقدمة أثناء ترقية تطبيقك من خلال الرجوع إلى الموضوعات المتقدمة.

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