توسيع نطاق نوع العقدة غير الأساسية لنظام مجموعة Service Fabric

توضح هذه المقالة كيفية توسيع نطاق نوع عقدة نظام مجموعة Service Fabric غير الأساسي بأقل وقت تعطل. ترقيات SKU الموضعية غير مدعومة على عقد مجموعة Service Fabric، حيث من المحتمل أن تتضمن هذه العمليات فقدان البيانات والتوافر. الطريقة الأكثر أمانا والأكثر موثوقية والموصى بها لتوسيع نِطاق نوع عقدة Service Fabric هي:

  1. أضف نوعا جديدا من العقدة إلى مجموعة Service Fabric الخاصة بك، مدعومة بمجموعة SKU وتكوين مِقياس الجهاز الظاهري التي تمت ترقيتها (أو تعديلها). تتضمن هذه الخطوة أيضا إعداد موازن تحميل جَديد وشبكة فرعية وعنوان IP عام لمجموعة المقياس.

  2. بمجرد تشغيل كل من مجموعات المقياس الأصلية والمرقية جنبا إلى جنب، قم بترحيل حمل العمل عن طريق تعيين قيود الموضع للتطبيقات إلى نوع العقدة الجديد.

  3. تحقق من صحة نظام المجموعة، ثم قم بإزالة مجموعة المقياس الأصلية (والموارد ذات الصلة) وحالة العقدة للعقد المحذوفة.

سوف يرشدك ما يلي خلال عملية تحديث حجم الجهاز الظاهري ونظام التشغيل من نوع العقدة غير الأساسية VMs من نموذج نظام المجموعة مع المتانة الفضية، مدعومة بمجموعة مقياس واحد مع خمس عقد تستخدم كنوع عقدة ثانوية. سيظل نوع العقدة الأساسية مع خدمات نظام Service Fabric دون تغيير. سنقوم بترقية نوع العقدة غير الأساسية:

  • من حجم VM Standard_D2_V2 إلى D4_V2 القياسية، و
  • من نظام تشغيل الجهاز الظاهري Windows Server 2019 Datacenter إلى Windows Server 2022 Datacenter.

تحذير

قبل محاولة هذا الإجراء على مجموعة إنتاج، نوصي بدراسة نماذج القوالب والتحقق من العملية مقابل مَجموعة اختبار.

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

إعداد مَجموعة الاختبار

لنقوم بإعداد مجموعة اختبار Service Fabric الأولية. أولا، قم بتنزيل نماذج قوالب Azure Resource Manager التي سوف نستخدمها لإكمال هذا السيناريو.

بعد ذلك، سَجل الدخول إلى حساب Azure الخاص بك.

# Sign in to your Azure account
Login-AzAccount -SubscriptionId "<subscription ID>"

بعد ذلك افتح مَلف parameters.json وقم بتحديث القيمة clusterName إلى شيء فريد (داخل Azure).

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

إنشاء شهادة موقعة ذاتيا وتوزيع المجموعة

أولا، قم بتعيين المتغيرات التي سوف تحتاج إليها لتوزيع مجموعة Service Fabric. اضبط القيم الخاصة لـresourceGroupNameوcertSubjectNameوparameterFilePathوtemplateFilePath لحسابك وبيئتك المحددين:

# Assign deployment variables
$resourceGroupName = "sftestupgradegroup"
$certOutputFolder = "c:\certificates"
$certPassword = "Password!1" | ConvertTo-SecureString -AsPlainText -Force
$certSubjectName = "sftestupgrade.southcentralus.cloudapp.azure.com"
$parameterFilePath = "C:\parameters.json"
$templateFilePath = "C:\Initial-TestClusterSetup.json"

إشعار

certOutputFolder تأكد من وجود الموقع على جهازك المحلي قبل تشغيل الأمر لتوزيع مجموعة Service Fabric جديدة. ثم قم بتوزيع مجموعة اختبار Service Fabric:

# Deploy the initial test cluster
New-AzServiceFabricCluster `
    -ResourceGroupName $resourceGroupName `
    -CertificateOutputFolder $certOutputFolder `
    -CertificatePassword $certPassword `
    -CertificateSubjectName $certSubjectName `
    -TemplateFile $templateFilePath `
    -ParameterFile $parameterFilePath

بمجرد اكتمال التوزيع، حدد موقع ملف .pfx ($certPfx) على جهازك المحلي واستورده إلى مخزن الشهادات:

cd c:\certificates
$certPfx = ".\sftestupgradegroup20200312121003.pfx"
Import-PfxCertificate `
     -FilePath $certPfx `
     -CertStoreLocation Cert:\CurrentUser\My `
     -Password (ConvertTo-SecureString Password!1 -AsPlainText -Force)

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

استخدام شهادة موجودة لتوزيع المجموعة

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

# Key Vault variables
$certUrlValue = "https://sftestupgradegroup.vault.azure.net/secrets/sftestupgradegroup20200309235308/dac0e7b7f9d4414984ccaa72bfb2ea39"
$sourceVaultValue = "/subscriptions/########-####-####-####-############/resourceGroups/sftestupgradegroup/providers/Microsoft.KeyVault/vaults/sftestupgradegroup"
$thumb = "BB796AA33BD9767E7DA27FE5182CF8FDEE714A70"

بعد ذلك، قم بتعيين اسم مجموعة موارد للمجموعة وقم بتعيين templateFilePath والمواقع parameterFilePath:

إشعار

يجب أن تكون مجموعة الموارد المعينة موجودة بالفعل وأن تكون موجودة في نفس المنطقة التي يوجد بها Key Vault.

$resourceGroupName = "sftestupgradegroup"
$templateFilePath = "C:\Initial-TestClusterSetup.json"
$parameterFilePath = "C:\parameters.json"

وأخيرا، قم بتشغيل الأمر التالي لتوزيع مجموعة الاختبار الأولية:

# Deploy the initial test cluster
New-AzResourceGroupDeployment `
    -ResourceGroupName $resourceGroupName `
    -TemplateFile $templateFilePath `
    -TemplateParameterFile $parameterFilePath `
    -CertificateThumbprint $thumb `
    -CertificateUrlValue $certUrlValue `
    -SourceVaultValue $sourceVaultValue `
    -Verbose

اتصل إلى المجموعة الجديدة وتحقق من الحالة الصحية

اتصل إلى المجموعة وتأكد من أن جميع العقد الخمسة الخاصة بها صحية (استبدل clusterName المتغيرات والمتغيرات thumb بقيمك الخاصة):

# Connect to the cluster
$clusterName = "sftestupgrade.southcentralus.cloudapp.azure.com:19000"
$thumb = "BB796AA33BD9767E7DA27FE5182CF8FDEE714A70"
Connect-ServiceFabricCluster `
    -ConnectionEndpoint $clusterName `
    -KeepAliveIntervalInSec 10 `
    -X509Credential `
    -ServerCertThumbprint $thumb  `
    -FindType FindByThumbprint `
    -FindValue $thumb `
    -StoreLocation CurrentUser `
    -StoreName My
# Check cluster health
Get-ServiceFabricClusterHealth

مع ذلك، نحن مستعدون لبدء إجراء الترقية.

نشر نوع عقدة جديد غير أساسي مع مجموعة مقياس تمت ترقيتها

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

تحديث قالب الكتلة باستخدام مَجموعة المقاييس التي تمت ترقيتها

فيما يلي التعديلات المقطعية لكل قسم لقالب نشر نظام المجموعة الأصلي لإضافة نوع عقدة جديد وموارد الدعم.

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

إشعار

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

إنشاء شبكة فَرعية جديدة في الشبكة الظاهرية الحالية

{
    "name": "[variables('subnet1Name')]",
    "properties": {
        "addressPrefix": "[variables('subnet1Prefix')]"
    }
}

إنشاء عنوان IP عام جديد باستخدام اسم نِطاق فريد

{
    "apiVersion": "[variables('publicIPApiVersion')]",
    "type": "Microsoft.Network/publicIPAddresses",
    "name": "[concat(variables('lbIPName'),'-',variables('vmNodeType1Name'))]",
    "location": "[variables('computeLocation')]",
    "properties": {
        "dnsSettings": {
            "domainNameLabel": "[concat(variables('dnsName'),'-','nt1')]"
        },
        "publicIPAllocationMethod": "Dynamic"
    },
    "tags": {
        "resourceType": "Service Fabric",
        "clusterName": "[parameters('clusterName')]"
    }
}

إنشاء موازن تحميل جَديد لعنوان IP العام

"dependsOn": [
    "[concat('Microsoft.Network/publicIPAddresses/',concat(variables('lbIPName'),'-',variables('vmNodeType1Name')))]"
]

إنشاء مجموعة جديدة من مقاييس الجهاز الظاهري (عن طريق وحدات SKU للجهاز الظاهري ونظام التشغيل التي تمت ترقيتها)

مرجع نوع العقدة

"nodeTypeRef": "[variables('vmNodeType1Name')]"

VM SKU

"sku": {
    "name": "[parameters('vmNodeType1Size')]",
    "capacity": "[parameters('nt1InstanceCount')]",
    "tier": "Standard"
}

رمز SKU لنِظام التشغيل

"imageReference": {
    "publisher": "[parameters('vmImagePublisher1')]",
    "offer": "[parameters('vmImageOffer1')]",
    "sku": "[parameters('vmImageSku1')]",
    "version": "[parameters('vmImageVersion1')]"
}

تأكد أيضا من تضمين أي إضافات إضافية مطلوبة لحمل العمل الخاص بك.

إضافة نوع عقدة جديد غير أساسي إلى نظام المجموعة

الآن بعد أن أصبح لنوع العقدة الجديدة (vmNodeType1Name) الاسم الخاص به والشبكة الفرعية وIP وموازن التحميل ومجموعة المقياس، يمكنه إعادة استخدام جميع المتغيرات الأخرى من نوع العقدة الأصلية (مثل nt0applicationEndPortو nt0applicationStartPortو).nt0fabricTcpGatewayPort

في ملف القالب الموجود، يتم تعيين المعلمة isPrimary إلى true لدليل نوع العقدة الأساسية لمجموعة Service Fabric. قم بالتغيير isPrimary إلى false لنوع العقدة غير الأساسية:

"name": "[variables('vmNodeType1Name')]",
"applicationPorts": {
    "endPort": "[variables('nt0applicationEndPort')]",
    "startPort": "[variables('nt0applicationStartPort')]"
},
"clientConnectionEndpointPort": "[variables('nt0fabricTcpGatewayPort')]",
"durabilityLevel": "Bronze",
"ephemeralPorts": {
    "endPort": "[variables('nt0ephemeralEndPort')]",
    "startPort": "[variables('nt0ephemeralStartPort')]"
},
"httpGatewayEndpointPort": "[variables('nt0fabricHttpGatewayPort')]",
"isPrimary": false,
"reverseProxyEndpointPort": "[variables('nt0reverseProxyEndpointPort')]",
"vmInstanceCount": "[parameters('nt1InstanceCount')]"

بمجرد تنفيذ جميع التغييرات في ملفات القوالب والمعلمات، انتقل إلى القسم التالي للحصول على مراجع Key Vault وتوزيع التحديثات على مجموعتك.

احصل على مراجع Key Vault الخاصة بك

لتوزيع التكوين المحدث، ستحتاج إلى عدة مراجع لشهادة نظام المجموعة المخزنة في Key Vault. أسهل طريقة للعثور على هذه القيم هي من خلال مدخل Microsoft Azure. ستحتاج إلى:

  • عنوان URL Key Vault لشهادة نظام المَجموعة. من Key Vault في مدخل Microsoft Azure، حدد الشهادات>الشهادة المطلوبة>المعرف السري:

    $certUrlValue="https://sftestupgradegroup.vault.azure.net/secrets/sftestupgradegroup20200309235308/dac0e7b7f9d4414984ccaa72bfb2ea39"
    
  • بصمة الإبهام لشهادة المجموعة الخاصة بك. (ربما يكون لديك هذا بالفعل إذا اتصلت بالمجموعة الأولية للتحقق من حالتها الصحية.) من نفس شفرة الشهادة ( الشهادات > شهادتك المطلوبة ) في مدخل Azure ، انسخ X.509 SHA-1 Thumbprint (بالست عشري) :

    $thumb = "BB796AA33BD9767E7DA27FE5182CF8FDEE714A70"
    
  • معرّف المورد الخاص بـ Key Vault. من Key Vault في مدخل Microsoft Azure، حدد Properties >Resource ID:

    $sourceVaultValue = "/subscriptions/########-####-####-####-############/resourceGroups/sftestupgradegroup/providers/Microsoft.KeyVault/vaults/sftestupgradegroup"
    

نشر القالب المحدّث

اضبط templateFilePath الأمر حَسب الحاجة وقم بتشغيل الأمر التالي:

# Deploy the new node type and its resources
$templateFilePath = "C:\Step1-AddPrimaryNodeType.json"
New-AzResourceGroupDeployment `
    -ResourceGroupName $resourceGroupName `
    -TemplateFile $templateFilePath `
    -TemplateParameterFile $parameterFilePath `
    -CertificateThumbprint $thumb `
    -CertificateUrlValue $certUrlValue `
    -SourceVaultValue $sourceVaultValue `
    -Verbose

عند اكتمال التوزيع، تحقق من سلامة نظام المجموعة مرة أخرى وتأكد من أن جميع العقد الموجودة على كلا النوعين من العقد سليمة.

Get-ServiceFabricClusterHealth

ترحيل أحمال العمل إلى نوع العقدة الجديد

انتظر حتى يتم نقل جميع التطبيقات إلى نوع العقدة الجديد وتكون سليمة.

تعطيل العقد في مَجموعة مقياس نوع العقدة الأصلية

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

# Disable the nodes in the original scale set.
$nodeType = "nt0vm"
$nodes = Get-ServiceFabricNode
Write-Host "Disabling nodes..."
foreach($node in $nodes)
{
  if ($node.NodeType -eq $nodeType)
  {
    $node.NodeName
    Disable-ServiceFabricNode -Intent RemoveNode -NodeName $node.NodeName -Force
  }
}

استخدم Service Fabric Explorer لمراقبة تقدم العقد في مجموعة المقياس الأصلية من حالة تعطيل إلى حالةمعطل. انتظر حتى تصل جميع العقد إلى حالة معطل .

أوقف البيانات على العقد المعطلة

الآن يُمكنك إيقاف البيانات الموجودة على العقد المعطلة.

# Stop data on the disabled nodes.
foreach($node in $nodes)
{
  if ($node.NodeType -eq $nodeType)
  {
    $node.NodeName
    Start-ServiceFabricNodeTransition -Stop -OperationId (New-Guid) -NodeInstanceId $node.NodeInstanceId -NodeName $node.NodeName -StopDurationInSeconds 10000
  }
}

إزالة نوع العقدة الأصلية وتنظيف مواردها

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

إزالة مَجموعة المقاييس الأصلية

قم أولا بإزالة مَجموعة المقاييس الداعمة لنوع العقدة.

$scaleSetName = "nt0vm"
$scaleSetResourceType = "Microsoft.Compute/virtualMachineScaleSets"
Remove-AzResource -ResourceName $scaleSetName -ResourceType $scaleSetResourceType -ResourceGroupName $resourceGroupName -Force

حذف موارد IP الأصلية وموازن التَحميل

يُمكنك الآن حذف عنوان IP الأصلي وتحميل موارد الموازن. في هذه الخطوة، ستقوم أيضا بتحديث اسم DNS.

إشعار

هذه الخطوة اختيارية إذا كنت تَستخدم بالفعل عنوان IP عاما قياسيا لوحدة SKU وموازن التحميل. في هذه الحالة، يمكن أن يكون لديك مجموعات / أنواع عقدة متعددة تحت نفس موازن التحميل. قم بتشغيل الأوامر التالية، وتعديل $lbname القيمة حسب الحاجة.

# Delete the original IP and load balancer resources
$lbName = "LB-sftestupgrade-nt0vm"
$lbResourceType = "Microsoft.Network/loadBalancers"
$ipResourceType = "Microsoft.Network/publicIPAddresses"
$oldPublicIpName = "PublicIP-LB-FE-nt0vm"
$newPublicIpName = "PublicIP-LB-FE-nt1vm"
$oldPublicIP = Get-AzPublicIpAddress -Name $oldPublicIpName  -ResourceGroupName $resourceGroupName
$nonPrimaryDNSName = $oldNonPrimaryPublicIP.DnsSettings.DomainNameLabel
$nonPrimaryDNSFqdn = $oldNonPrimaryPublicIP.DnsSettings.Fqdn
Remove-AzResource -ResourceName $lbName -ResourceType $lbResourceType -ResourceGroupName $resourceGroupName -Force
Remove-AzResource -ResourceName $oldPublicIpName -ResourceType $ipResourceType -ResourceGroupName $resourceGroupName -Force
$PublicIP = Get-AzPublicIpAddress -Name $newPublicIpName  -ResourceGroupName $resourceGroupName
$PublicIP.DnsSettings.DomainNameLabel = $nonPrimaryDNSName
$PublicIP.DnsSettings.Fqdn = $nonPrimaryDNSFqdn
Set-AzPublicIpAddress -PublicIpAddress $PublicIP

إزالة حالة العقدة مِن نوع العقدة الأصلي

ستُظهر عُقد نوع العقدة الأصلية الآن خطأ لـ حالتها الصحية . إزالة حالة العقدة الخاصة بهم من المَجموعة.

# Remove state of the obsolete nodes from the cluster
$nodeType = "nt0vm"
$nodes = Get-ServiceFabricNode
Write-Host "Removing node state..."
foreach($node in $nodes)
{
  if ($node.NodeType -eq $nodeType)
  {
    $node.NodeName
    Remove-ServiceFabricNodeState -NodeName $node.NodeName -Force
  }
}

يجب أن يعكس Service Fabric Explorer الآن العقد الخمس فقط من نوع العقدة الجديدة (nt1vm)، وكلها ذات قيم حالة الصحة موافق. سنقوم بمعالجة ذلك بعد ذلك عن طريق تحديث القالب ليعكس أحدث التغييرات وإعادة التوزيع.

تحديث قالب النشر ليعكس نوع العقدة غير الأساسية المتدرجة حديثا

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

تحديث نقطة نهاية إدارة نظام المَجموعة

تحديث الكتلة managementEndpoint على قالب التوزيع للإشارة IP الجديد (عن طريق تحديث vmNodeType0Name مع vmNodeType1Name).

  "managementEndpoint": "[concat('https://',reference(concat(variables('lbIPName'),'-',variables('vmNodeType1Name'))).dnsSettings.fqdn,':',variables('nt0fabricHttpGatewayPort'))]",

إزالة مَرجع نوع العقدة الأصلي

قم بإزالة مرجع نوع العقدة الأصلي من مورد Service Fabric في قالب التوزيع.

في ملف القالب الموجود، يتم تعيين المعلمة isPrimary إلى true لدليل نوع العقدة الأساسية لمجموعة Service Fabric. قم بالتغيير isPrimary إلى false لنوع العقدة غير الأساسية:

"name": "[variables('vmNodeType0Name')]",
"applicationPorts": {
    "endPort": "[variables('nt0applicationEndPort')]",
    "startPort": "[variables('nt0applicationStartPort')]"
},
"clientConnectionEndpointPort": "[variables('nt0fabricTcpGatewayPort')]",
"durabilityLevel": "Bronze",
"ephemeralPorts": {
    "endPort": "[variables('nt0ephemeralEndPort')]",
    "startPort": "[variables('nt0ephemeralStartPort')]"
},
"httpGatewayEndpointPort": "[variables('nt0fabricHttpGatewayPort')]",
"isPrimary": false,
"reverseProxyEndpointPort": "[variables('nt0reverseProxyEndpointPort')]",
"vmInstanceCount": "[parameters('nt0InstanceCount')]"

تكوين النهج الصَحية لتجاهل الأخطاء الموجودة

فقط بالنسبة للمجموعات الفضية ومجموعات المتانة الأعلى، قم بتحديث مورد المَجموعة في القالب وقم بتكوين نهج الحماية لتجاهل fabric:/System حماية التطبيق عن طريق إضافة التطبيق Delta Health Policies ضمن خصائص مورد المجموعة كما هو موضح أدناه. سوف يتجاهل النهج أدناه الأخطاء الموجودة ولكنه لن يسمح بالأخطاء الصحية الجديدة.

"upgradeDescription":  
{ 
 "forceRestart": false, 
 "upgradeReplicaSetCheckTimeout": "10675199.02:48:05.4775807", 
 "healthCheckWaitDuration": "00:05:00", 
 "healthCheckStableDuration": "00:05:00", 
 "healthCheckRetryTimeout": "00:45:00", 
 "upgradeTimeout": "12:00:00", 
 "upgradeDomainTimeout": "02:00:00", 
 "healthPolicy": { 
   "maxPercentUnhealthyNodes": 100, 
   "maxPercentUnhealthyApplications": 100 
 }, 
 "deltaHealthPolicy":  
 { 
   "maxPercentDeltaUnhealthyNodes": 0, 
   "maxPercentUpgradeDomainDeltaUnhealthyNodes": 0, 
   "maxPercentDeltaUnhealthyApplications": 0, 
   "applicationDeltaHealthPolicies":  
   { 
       "fabric:/System":  
       { 
           "defaultServiceTypeDeltaHealthPolicy":  
           { 
                   "maxPercentDeltaUnhealthyServices": 0 
           } 
       } 
   } 
 } 
}

إزالة الموارد الداعمة لـنوع العقدة الأصلي

إزالة كافة الموارد الأخرى المتعلقة بنوع العقدة الأصلي من قالب ARM ومَلف المعلمات. احذف مَا يلي:

    "vmImagePublisher": {
      "value": "MicrosoftWindowsServer"
    },
    "vmImageOffer": {
      "value": "WindowsServer"
    },
    "vmImageSku": {
      "value": "2019-Datacenter"
    },
    "vmImageVersion": {
      "value": "latest"
    },

توزيع القالب النهائي

وأخيرا، قم بتوزيع قالب Azure Resource Manager المعدل.

# Deploy the updated template file
$templateFilePath = "C:\Step3-CleanupOriginalPrimaryNodeType"
New-AzResourceGroupDeployment `
    -ResourceGroupName $resourceGroupName `
    -TemplateFile $templateFilePath `
    -TemplateParameterFile $parameterFilePath `
    -CertificateThumbprint $thumb `
    -CertificateUrlValue $certUrlValue `
    -SourceVaultValue $sourceVaultValue `
    -Verbose

إشعار

سوف تستغرق هذه الخطوة بعض الوقت، وعادة ما تصل إلى ساعتين. سوف تقوم الترقية بتغيير الإعدادات إلى InfrastructureService; لذلك، هناك حاجة إلى إعادة تشغيل العقدة. في هذه الحالة، يتم تجاهل forceRestart. تحدد المعلمةupgradeReplicaSetCheckTimeout الحد الأقصى للوقت الذي ينتظر Service Fabric القسم ليكون في حالة آمنة، إن لم يكن بالفعل في حالة آمنة. بمجرد تمرير الفحوصات الخاصة بالسلامة لجميع الأقسام الموجودة على العقدة، يتابع Service Fabric الترقية على تلك العقدة. يمكن تخفيض قيمة المعلمة upgradeTimeout إلى 6 ساعات، ولكن لتحقيق أقصى قدر من السلامة يجب استخدام 12 ساعة.

بمجرد اكتمال التوزيع، تحقق في مدخل Microsoft Azure من أن حالة مورد Service Fabric جاهزة. تحقق من أنه يمكنك الوصول إلى نقطة نهاية Service Fabric Explorer الجديدة، وأن حالة حماية الكتلةتكونOK، وأن أي تطبيقات تم توزيعها تعمل بشكل صَحيح.

مع ذلك، قمت بتحجيم نوع عقدة نظام المجموعة غير الأساسي عموديا!

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