ملاحظة
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
توضح هذه المقالة كيفية توسيع نطاق نوع العقدة الأساسية لنظام مجموعة Service Fabric بأقل وقت تعطل. ترقيات SKU الموضعية غير مدعومة على عقد مجموعة Service Fabric، حيث من المحتمل أن تتضمن هذه العمليات فقدان البيانات والتوافر. الطريقة الأكثر أمانا وموثوقية وموصى بها لتوسيع نطاق نوع عقدة Service Fabric هي:
إضافة نوع عقدة جديد إلى مجموعة Service Fabric، مدعومة بمجموعة مقياس الجهاز الظاهري التي تمت ترقيتها (أو تعديلها) SKU والتكوين. تتضمن هذه الخطوة أيضا إعداد موازن تحميل جديد وشبكة فرعية وعنوان IP عام لمجموعة المقياس.
بمجرد تشغيل كل من مجموعات المقياس الأصلية والمرقية جنبا إلى جنب، قم بتعطيل مثيلات العقدة الأصلية واحدة تلو الأخرى بحيث يتم ترحيل خدمات النظام (أو النسخ المتماثلة للخدمات ذات الحالة) إلى مجموعة المقياس الجديدة.
تحقق من صحة نظام المجموعة والعقد الجديدة، ثم قم بإزالة مجموعة المقياس الأصلية (والموارد ذات الصلة) وحالة العقدة للعقد المحذوفة.
سوف يرشدك ما يلي خلال عملية تحديث حجم الجهاز الظاهري ونظام التشغيل من نوع العقدة الأساسية VMs من مجموعة عينة مع المتانة الفضية، مدعومة بمجموعة مقياس واحد مع خمس عقد. سنقوم بترقية نوع العقدة الأساسية:
- من حجم الجهاز الظاهري Standard_D2_V2 إلى D4_V2 القياسية، و
- من نظام تشغيل الجهاز الظاهري Windows Server 2019 Datacenter إلى Windows Server 2022 Datacenter.
تحذير
قبل محاولة هذا الإجراء على مجموعة إنتاج، نوصي بدراسة نماذج القوالب والتحقق من العملية مقابل مجموعة اختبار. قد تكون المجموعة غير متوفرة أيضا لفترة قصيرة من الوقت.
لا تحاول إجراء توسيع نطاق نوع العقدة الأساسية إذا كانت حالة نظام المجموعة غير صحية، لأن هذا سيؤدي فقط إلى زعزعة نظام المجموعة بشكل أكبر.
تتوفر قوالب توزيع Azure خطوة بخطوة التي سنستخدمها لإكمال سيناريو الترقية النموذجي هذا على 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 وبصمة الإبهام للشهادة.
# Key Vault variables
$certUrlValue = "https://sftestupgradegroup.vault.azure.net/secrets/sftestupgradegroup20200309235308/dac0e7b7f9d4414984ccaa72bfb2ea39"
$sourceVaultValue = "/subscriptions/########-####-####-####-############/resourceGroups/sftestupgradegroup/providers/Microsoft.KeyVault/vaults/sftestupgradegroup"
$thumb = "AA11BB22CC33DD44EE55FF66AA77BB88CC99DD00"
بعد ذلك، قم بتعيين اسم مجموعة موارد للمجموعة وتعيين 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 = "AA11BB22CC33DD44EE55FF66AA77BB88CC99DD00"
Connect-ServiceFabricCluster `
-ConnectionEndpoint $clusterName `
-KeepAliveIntervalInSec 10 `
-X509Credential `
-ServerCertThumbprint $thumb `
-FindType FindByThumbprint `
-FindValue $thumb `
-StoreLocation CurrentUser `
-StoreName My
# Check cluster health
Get-ServiceFabricClusterHealth
الآن، نحن مستعدون لبدء إجراء الترقية.
نشر نوع عقدة أساسي جديد مع مجموعة مقياس تمت ترقيتها
لترقية نوع عقدة (تغيير الحجم عموديا)، سنحتاج أولا إلى نشر نوع عقدة جديد مدعوم بمجموعة مقياس جديدة وموارد داعمة. سيتم وضع علامة على مجموعة المقياس الجديدة على أنها أساسية (isPrimary: true
)، تماما مثل مجموعة المقياس الأصلية. إذا كنت ترغب في توسيع نطاق نوع عقدة غير أساسية، فشاهد توسيع نطاق نوع عقدة نظام مجموعة Service Fabric غير الأساسي. ستصبح الموارد التي تم إنشاؤها في القسم التالي في النهاية نوع العقدة الأساسية الجديدة في نظام المجموعة الخاص بك، ويتم حذف موارد نوع العقدة الأساسية الأصلية.
تحديث قالب نظام المجموعة مع مجموعة المقياس التي تمت ترقيتها
فيما يلي التعديلات المقطعية لكل قسم لقالب نشر نظام المجموعة الأصلي لإضافة نوع عقدة أساسي جديد وموارد الدعم.
تم إجراء التغييرات المطلوبة لهذه الخطوة بالفعل لك في ملف القالبStep1-AddPrimaryNodeType.json ، وسيشرح ما يلي هذه التغييرات بالتفصيل. إذا كنت تفضل ذلك، يمكنك تخطي الشرح والاستمرار في الحصول على مراجع Key Vaultونشر القالب المحدث الذي يضيف نوع عقدة أساسية جديدة إلى نظام المجموعة الخاص بك.
إشعار
تأكد من استخدام الأسماء الفريدة من نوع العقدة الأصلية ومجموعة المقياس وموازن التحميل وعنوان IP العام والشبكة الفرعية لنوع العقدة الأساسية الأصلية، حيث يتم حذف هذه الموارد في خطوة لاحقة في العملية.
إنشاء شبكة فرعية جديدة في الشبكة الظاهرية الموجودة
{
"name": "[variables('subnet1Name')]",
"properties": {
"addressPrefix": "[variables('subnet1Prefix')]"
}
}
إنشاء IP عام جديد باستخدام domainNameLabel فريد
{
"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')))]"
]
إنشاء مجموعة مقياس جهاز ظاهري جديدة (مع VM تمت ترقيته ووحدات SKU لنظام التشغيل)
Ref نوع العقدة
"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')]"
}
إذا كنت تقوم بتغيير نظام التشغيل SKU في نظام مجموعة Linux
في نظام مجموعة Windows، تكون قيمة الخاصية vmImage هي "Windows" بينما قيمة نفس الخاصية لنظام مجموعة Linux هي اسم صورة نظام التشغيل المستخدمة. على سبيل المثال - Ubuntu20_04 (استخدم أحدث اسم صورة للجهاز الظاهري).
لذلك، إذا كنت تقوم بتغيير صورة الجهاز الظاهري (OS SKU) في مجموعة Linux، فقم بتحديث إعداد vmImage على مورد مجموعة Service Fabric أيضا.
#Update the property vmImage with the required OS name in your ARM template
{
"vmImage": "[parameter(newVmImageName]”
}
ملاحظة: مثال على newVmImageName: Ubuntu20_04
يمكنك أيضا تحديث مورد نظام المجموعة باستخدام أمر PowerShell التالي:
# Update cluster vmImage to target OS. This registers the SF runtime package type that is supplied for upgrades.
Update-AzServiceFabricVmImage -ResourceGroupName $resourceGroup -ClusterName $clusterName -VmImage Ubuntu20_04
تأكد أيضا من تضمين أي ملحقات إضافية مطلوبة لحمل العمل الخاص بك.
إضافة نوع عقدة أساسي جديد إلى نظام المجموعة
الآن بعد أن أصبح نوع العقدة الجديد (vmNodeType1Name) له الاسم والشبكة الفرعية وعنوان IP وموازن التحميل ومجموعة المقياس الخاصة به، يمكنه إعادة استخدام جميع المتغيرات الأخرى من نوع العقدة الأصلية (مثل nt0applicationEndPort
و nt0applicationStartPort
و):nt0fabricTcpGatewayPort
"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": true,
"reverseProxyEndpointPort": "[variables('nt0reverseProxyEndpointPort')]",
"vmInstanceCount": "[parameters('nt1InstanceCount')]"
بمجرد تنفيذ جميع التغييرات في ملفات القالب والمعلمات، انتقل إلى القسم التالي للحصول على مراجع Key Vault ونشر التحديثات على نظام المجموعة الخاص بك.
الحصول على مراجع Key Vault
لنشر التكوين المحدث، تحتاج إلى العديد من المراجع إلى شهادة نظام المجموعة المخزنة في Key Vault الخاص بك. أسهل طريقة للعثور على هذه القيم هي من خلال مدخل Microsoft Azure. تحتاج إلى
عنوان URL ل Key Vault لشهادة نظام المجموعة. من Key Vault في مدخل Microsoft Azure، حدد Certificates>Your desired certificate>Secret Identifier:
$certUrlValue="https://sftestupgradegroup.vault.azure.net/secrets/sftestupgradegroup20200309235308/dac0e7b7f9d4414984ccaa72bfb2ea39"
بصمة الإبهام لشهادة نظام المجموعة. (ربما لديك الشهادة بالفعل إذا كنت متصلا بالمجموعة الأولية للتحقق من حالتها الصحية.) من نفس شفرة الشهادة (شهادات الشهادة>التي تريدها) في مدخل Microsoft Azure، انسخ بصمة الإبهام X.509 SHA-1 (ب hex):
$thumb = "AA11BB22CC33DD44EE55FF66AA77BB88CC99DD00"
معرف المورد ل 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
ترحيل العقد الأولية إلى نوع العقدة الجديدة
نحن الآن جاهزون لتحديث نوع العقدة الأصلية كعقدة غير أساسية والبدء في تعطيل العقد الخاصة بها. مع تعطيل العقد، يتم ترحيل خدمات نظام المجموعة والعقد الأولية إلى مجموعة المقياس الجديدة.
إلغاء وضع علامة على نوع العقدة الأصلية كعقدة أساسية
قم أولا بإزالة isPrimary
التعيين في القالب من نوع العقدة الأصلية.
{
"isPrimary": false,
}
ثم انشر القالب مع التحديث. يبدأ هذا النشر ترحيل العقد الأولية إلى مجموعة التحجيم الجديدة.
$templateFilePath = "C:\Step2-UnmarkOriginalPrimaryNodeType.json"
New-AzResourceGroupDeployment `
-ResourceGroupName $resourceGroupName `
-TemplateFile $templateFilePath `
-TemplateParameterFile $parameterFilePath `
-CertificateThumbprint $thumb `
-CertificateUrlValue $certUrlValue `
-SourceVaultValue $sourceVaultValue `
-Verbose
إشعار
سيستغرق الأمر بعض الوقت لإكمال ترحيل العقدة الأولية إلى مجموعة المقياس الجديدة. لضمان تناسق البيانات، يمكن تغيير عقدة أولية واحدة فقط في كل مرة. يتطلب كل تغيير عقدة أولية تحديث نظام المجموعة؛ وبالتالي فإن استبدال عقدة أولية يتطلب ترقيتين لنظام المجموعة (واحدة لكل منهما لإضافة العقدة وإزالتها). ستؤدي ترقية العقد الأولية الخمس في هذا السيناريو النموذجي إلى عشر ترقيات لنظام المجموعة.
استخدم Service Fabric Explorer لمراقبة ترحيل العقد الأولية إلى مجموعة التحجيم الجديدة. يجب أن تكون عقد نوع العقدة الأصلية (nt0vm) خاطئة في العمود Is Seed Node ، ويجب أن تكون عقد نوع العقدة الجديدة (nt1vm) صحيحة.
تعطيل العقد في مجموعة مقياس نوع العقدة الأصلية
بمجرد ترحيل جميع العقد الأولية إلى مجموعة المقياس الجديدة، يمكنك تعطيل عقد مجموعة المقياس الأصلية.
# 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 لمراقبة تقدم العقد في مجموعة المقياس الأصلية من Disabling إلى Disabled status.
بالنسبة إلى المتانة الفضية والذهبية، ستنتقل بعض العقد إلى حالة معطل، بينما قد يبقى البعض الآخر في حالة تعطيل . في Service Fabric Explorer، تحقق من علامة التبويب Details للعقد في حالة التعطيل. إذا أظهرت Pending Safety Check of Kind EnsurePartitionQuorem (ضمان الحصة لأقسام خدمة البنية الأساسية)، فمن الآمن المتابعة.
إذا كان نظام المجموعة الخاص بك هو المتانة البرونزية، فانتظر حتى تصل جميع العقد إلى حالة معطل .
إيقاف البيانات على العقد المعطلة
الآن يمكنك إيقاف البيانات على العقد المعطلة.
# 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"
$oldPrimaryPublicIP = Get-AzPublicIpAddress -Name $oldPublicIpName -ResourceGroupName $resourceGroupName
$primaryDNSName = $oldPrimaryPublicIP.DnsSettings.DomainNameLabel
$primaryDNSFqdn = $oldPrimaryPublicIP.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 = $primaryDNSName
$PublicIP.DnsSettings.Fqdn = $primaryDNSFqdn
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)، وكلها بقيم الحالة الصحية OK. ستظل حالة صحة نظام المجموعة تظهر الخطأ. سنقوم بتنقيح ذلك بعد ذلك عن طريق تحديث القالب ليعكس أحدث التغييرات وإعادة التوزيع.
تحديث قالب النشر ليعكس نوع العقدة الأساسية المتدرجة حديثا
تم إجراء التغييرات المطلوبة لهذه الخطوة بالفعل في ملف القالبStep3-CleanupOriginalPrimaryNodeType.json ، وستشرح الأقسام التالية تغييرات القالب هذه بالتفصيل. إذا كنت تفضل ذلك، يمكنك تخطي الشرح والاستمرار في نشر القالب المحدث وإكمال البرنامج التعليمي.
تحديث نقطة نهاية إدارة نظام المجموعة
تحديث نظام المجموعة managementEndpoint
على قالب النشر للإشارة إلى IP الجديد (عن طريق تحديث vmNodeType0Name مع vmNodeType1Name).
"managementEndpoint": "[concat('https://',reference(concat(variables('lbIPName'),'-',variables('vmNodeType1Name'))).dnsSettings.fqdn,':',variables('nt0fabricHttpGatewayPort'))]",
إزالة مرجع نوع العقدة الأصلية
إزالة مرجع نوع العقدة الأصلي من مورد Service Fabric في قالب النشر:
"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": true,
"reverseProxyEndpointPort": "[variables('nt0reverseProxyEndpointPort')]",
"vmInstanceCount": "[parameters('nt0InstanceCount')]"
تكوين نهج الصحة لتجاهل الأخطاء الموجودة
فقط بالنسبة لمجموعات Silver وأعلى المتانة، قم بتحديث مورد نظام المجموعة في القالب وتكوين نهج الصحة لتجاهل fabric:/System
صحة التطبيق عن طريق إضافة applicationDeltaHealthPolicies ضمن خصائص مورد نظام المجموعة كما هو موضح أدناه. سيتجاهل النهج أدناه الأخطاء الموجودة ولكن لا يسمح بأخطاء صحية جديدة.
"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 الجديدة، وحالة صحة نظام المجموعةعلى ما يرام، وأي تطبيقات تم نشرها تعمل بشكل صحيح.
الآن، قمت بتحجيم نوع عقدة أساسية لنظام المجموعة عموديا!
الخطوات التالية
- تعرف على كيفية إضافة نوع عقدة إلى نظام مجموعة
- تعرف على قابلية توسع التطبيق.
- تحجيم مجموعة Azure داخل أو خارج.
- تحجيم نظام مجموعة Azure برمجيا باستخدام SDK حوسبة Azure بطلاقة.
- تحجيم مجموعة مستقلة داخل أو خارج.