ترقية تطبيق نسيج الخدمة باستخدام 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. وبالمثل، من المفترض أن يكون نظام المجموعة قد تم إعداده بالفعل على جهازك المحلي. راجع المقالة حول إعداد بيئة تطوير نسيج الخدمة.
بعد إنشاء المشروع في Visual Studio، يمكنك استخدام الأمر PowerShell Copy-ServiceFabricApplicationPackage لنسخ حزمة التطبيق إلى ImageStore. إذا كنت ترغب في التحقق من حزمة التطبيق محليا، استخدم cmdlet اختبار سيرفيسفابريسباكلباك . الخطوة التالية هي تسجيل التطبيق إلى وقت تشغيل Service Fabric باستخدام cmdlet Register-ServiceFabricApplicationType . الخطوة التالية هي بدء تشغيل مثيل التطبيق باستخدام cmdlet تطبيق ServiceFabricApplication الجديد. تشبه هذه الخطوات الثلاث استخدام عنصر القائمة نشر في Visual Studio. بمجرد اكتمال التوفير، يجب تنظيف حزمة التطبيق المنسوخة من مخزن الصور لتقليل الموارد المستهلكة. إذا لم يعد نوع الطلب مطلوبا ، فيجب أن يكون غير مسجل لنفس السبب. راجع نشر التطبيقات وإزالتها باستخدام PowerShell للحصول على مزيد من المعلومات.
الآن ، يمكنك استخدام Service Fabric Explorer لعرض المجموعة والتطبيق. يحتوي التطبيق على خدمة ويب يمكن الانتقال إليها في Internet Explorer عن طريق الكتابة http://localhost:8081/visualobjects في شريط العناوين. يجب أن ترى بعض الكائنات المرئية العائمة تتحرك في الشاشة. بالإضافة إلى ذلك، يمكنك استخدام Get-ServiceFabricApplication للتحقق من حالة التطبيق.
الخطوة 2: تحديث نموذج الكائنات المرئية
قد تلاحظ أنه مع الإصدار الذي تم نشره في الخطوة 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 ، وتحديد قائمة نسيج الخدمة ، واختيار الحزمة. ينشئ هذا الإجراء حزمة تطبيق يمكن نشرها. التطبيق المحدث جاهز للنشر.
الخطوة 3: اتخاذ قرار بشأن السياسات الصحية ومعلمات الترقية
تعرف على معلمات ترقية التطبيق وعملية الترقية للحصول على فهم جيد لمختلف معلمات الترقية وفترات التوقف والمعايير الصحية المطبقة. بالنسبة لهذه الإرشادات التفصيلية، يتم تعيين معيار تقييم حالة الخدمة إلى القيم الافتراضية (والموصى بها)، مما يعني أن جميع الخدمات والمثيلات يجب أن تكون سليمة بعد الترقية.
ومع ذلك، دعنا نزيد من HealthCheckStableDuration إلى 180 ثانية (بحيث تكون الخدمات صحية لمدة 120 ثانية على الأقل قبل متابعة الترقية إلى مجال التحديث التالي). دعنا أيضا نضبط UpgradeDomainTimeout على 1200 ثانية و UpgradeTimeout على 3000 ثانية.
أخيرا ، دعنا أيضا نضبط UpgradeFailureAction على التراجع. يتطلب هذا الخيار Service Fabric إعادة التطبيق إلى الإصدار السابق إذا واجه أي مشكلات أثناء الترقية. وبالتالي ، عند بدء الترقية (في الخطوة 4) ، يتم تحديد المعلمات التالية:
FailureAction = التراجع
HealthCheckStableDurationSec = 180
ترقيةدومينتايم أوت سيك = 1200
مهلة الترقية = 3000
الخطوة 4: إعداد التطبيق للترقية
الآن تم بناء التطبيق وجاهز للترقية. إذا قمت بفتح إطار PowerShell كمسؤول واكتب Get-ServiceFabricApplication، فيجب أن يعلمك أنه نوع التطبيق 1.0.0.0 من VisualObjects الذي تم نشره.
يتم تخزين حزمة التطبيق ضمن المسار النسبي التالي حيث تقوم بإلغاء ضغط حزمة SDK الخاصة بنسيج الخدمة - عينات\خدمات\دولة\VisualObjects\VisualObjects\obj\x64\تصحيح. يجب أن تجد مجلد "حزمة" في هذا الدليل ، حيث يتم تخزين حزمة التطبيق. تحقق من الطوابع الزمنية للتأكد من أنها أحدث إصدار (قد تحتاج إلى تعديل المسارات بشكل مناسب أيضا).
الآن دعنا ننسخ حزمة التطبيق المحدثة إلى 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 هذا الاسم لتحديد التطبيق الذي تتم ترقيته. إذا قمت بتعيين المهلات لتكون قصيرة جدا، قد تواجه رسالة فشل توضح المشكلة. ارجع إلى قسم استكشاف الأخطاء وإصلاحها، أو قم بزيادة المهلات.
الآن، مع متابعة ترقية التطبيق، يمكنك مراقبته باستخدام مستكشف نسيج الخدمة، أو باستخدام الأمر Get-ServiceFabricApplicationUpgrade PowerShell:
Get-ServiceFabricApplicationUpgrade fabric:/VisualObjects
في بضع دقائق، يجب أن تنص الحالة التي حصلت عليها باستخدام الأمر PowerShell السابق على أنه تمت ترقية كافة مجالات التحديث (اكتملت). ويجب أن تجد أن الكائنات المرئية في نافذة المتصفح الخاص بك قد بدأت في الدوران!
يمكنك محاولة الترقية من الإصدار 2 إلى الإصدار 3، أو من الإصدار 2 إلى الإصدار 1 كتمرين. يعتبر الانتقال من الإصدار 2 إلى الإصدار 1 أيضا ترقية. العب مع المهلات والسياسات الصحية لجعل نفسك على دراية بها. عند النشر إلى مجموعة Azure، يجب تعيين المعلمات بشكل مناسب. من الجيد تعيين المهلات بشكل متحفظ.
الخطوات التالية
ترشدك ترقية تطبيقك باستخدام Visual Studio خلال ترقية التطبيق باستخدام Visual Studio.
تحكم في كيفية ترقية التطبيق باستخدام معلمات الترقية.
اجعل ترقيات تطبيقك متوافقة من خلال تعلم كيفية استخدام تسلسل البيانات.
تعرف على كيفية استخدام الوظائف المتقدمة أثناء ترقية التطبيق من خلال الرجوع إلى الموضوعات المتقدمة.
قم بإصلاح المشكلات الشائعة في ترقيات التطبيقات بالرجوع إلى الخطوات الواردة في استكشاف أخطاء ترقيات التطبيقات وإصلاحها.