تخطيط السعة وتوسيع نطاقها لتصميم خدمة Azure
قبل إنشاء أي مجموعة تصميم خدمة Azure أو توسيع نطاق موارد الحوسبة التي تستضيف مجموعتك، من المهم التخطيط للسعة. لمزيد من المعلومات حول التخطيط للسعة، راجع تخطيط سعة مجموعة تصميم الخدمة. للمزيد من إرشادات أفضل الممارسات حول قابلية التوسع في المجموعات، راجع اعتبارات قابلية تطوير بنية الخدمة.
بالإضافة إلى النظر في نوع العقدة وخصائص المجموعة، يجب أن تتوقع أن تستغرق عمليات القياس وقتًا أطول من ساعة لإكمالها لبيئة الإنتاج. ويعد هذا الاعتبار صحيحًا بغض النظر عن عدد الأجهزة الظاهرية التي تضيفها.
التحجيم التلقائي
يجب عليك إجراء عمليات التحجيم عبر قوالب Azure Resource Manager، لأنه من أفضل الممارسات التعامل مع تكوينات الموارد كتعليمات برمجية.
سيؤدي استخدام التحجيم التلقائي من خلال مجموعات مقاييس الجهاز الظاهري إلى جعل قالب Resource Manager الذي تم إصداره يحدد عدد المثيلات الخاصة بك بشكل غير دقيق لمجموعات تحجيم الجهاز الظاهري. يزيد التعريف غير الدقيق من خطر أن تتسبب عمليات النشر المستقبلية في عمليات تحجيم غير مقصودة. بشكل عام، يجب عليك استخدام التحجيم التلقائي في حالة:
لا يدعم توزيع قوالب Resource Manager الخاصة بك مع السعة المناسبة المعلنة حالة الاستخدام الخاصة بك.
بالإضافة إلى التحجيم اليدوي، يمكنك تكوين خط أنابيب تكامل وتسليم مستمرين في Azure DevOps Services باستخدام مشاريع توزيع مجموعة موارد Azure. يُشغل خط الأنابيب هذا عادة بواسطة تطبيق منطقي يستخدم مقاييس أداء الجهاز الظاهري التي تم الاستعلام عنها من واجهة برمجة تطبيقات Azure Monitor REST. يقوم خط الأنابيب تلقائيًّا بالتحجيم التلقائي بشكل فعال استنادًا إلى أي مقاييس تريدها، مع تحسين قوالب Resource Manager.
تحتاج إلى توسيع نطاق عقدة مجموعة تحجيم جهاز ظاهري واحدة فقط أفقيًّا في كل مرة.
للتوسع بمقدار ثلاث عقد أو أكثر في المرة الواحدة، يجب عليك توسيع نطاق مجموعة تصميم الخدمة عن طريق إضافة مجموعة تحجيم جهاز ظاهري. من الأسلم توسيع نطاق مجموعات تحجيم الجهاز الظاهري وتوسيع نطاقها أفقيًّا، عقدة واحدة في كل مرة.
لديك موثوقية فضية أو أعلى لمجموعة تصميم الخدمة الخاصة بك، وقدرة فضية على الصمود أو أعلى على أي تحجيم حيث تقوم بتكوين قواعد التحجيم التلقائي.
يجب أن يكون الحد الأدنى لسعة قواعد التحجيم التلقائي مساويًا لخمسة مثيلات للجهاز الظاهري أو أكبر منها. كما يجب أن يكون مساويًا أو أكبر من الحد الأدنى لطبقة الموثوقية لنوع العقدة الأساسية.
إشعار
يعمل نسيج الخدمة ذي الحالة Service Fabric:/System/InfrastructureService/<NODE_TYPE_NAME> على كل نوع عقدة يحتوي على متانة فضية أو أعلى. وهي خدمة النظام الوحيدة التي يتم دعمها للتشغيل في Azure على أي نوع من أنواع عقد المجموعات.
هام
يدعم التحجيم التلقائي لتصميم الخدمة Default
و NewestVM
مجموعة تحجيم الأجهزة الظاهرية تضييق نطاق التكوينات.
اعتبارات التحجيم الرأسي
يتطلب التحجيم الرأسي لنوع عقدة في تصميم خدمة Azure عددًا من الخطوات والاعتبارات. على سبيل المثال:
- يجب أن تكون المجموعة في حالة جيدة قبل التحجيم. خلاف ذلك، سوف تزعزع استقرار المجموعة أكثر.
- مطلوب مستوى القدرة الفضية علي الصمود أو أعلى لجميع أنواع العقد العنقودية لتصميم الخدمة التي تستضيف خدمات ذات حالة.
إشعار
يجب أن يكون نوع العقدة الأساسية التي تستضيف خدمات نظام تصميم الخدمة الفخمة مستوى قدرة فضية على الصمود أو أكبر. بعد تمكين القدرة الفضية علي الصمود، ستكون عمليات المجموعة مثل الترقيات وإضافة العقد أو إزالتها وما إلى ذلك أبطأ لأن النظام يعمل على تحسين أمان البيانات على سرعة العمليات.
يعد التحجيم الرأسي لمجموعة تحجيم الجهاز الظاهري الذي تم تعيينه ببساطة عن طريق تغيير SKU لموارده عملية مدمرة، لأنه يعيد تصوير مضيفيك وبالتالي إزالة جميع الحالات المستمرة محليًّا. بدلًا من ذلك، ستحتاج إلى توسيع نطاق مجموعتك أفقيًّا عن طريق إضافة مجموعة تحجيم جديدة باستخدام SKU المطلوب ثم ترحيل خدماتك إلى مجموعة التحجيم الجديدة لإكمال عملية تحجيم رأسية آمنة.
تستخدم مجموعتك خصائص عقدة تصميم الخدمة وقيود الموضع لتحديد مكان استضافة خدمات التطبيق الخاص بك. عند تحجيم نوع عقدة أساسية عموديًّا، ستقوم بتوزيع نوع عقدة أساسية ثانية ثم تعيين ("isPrimary": false
) على نوع العقدة الأساسية الأصلية والمتابعة لتعطيل العقد الخاصة بها وإزالة مجموعة التحجيم الخاصة بها والموارد المرتبطة بها. لمزيد من التفاصيل، راجع توسيع نطاق نوع العقدة الأساسية لمجموعة تصميم الخدمة
إشعار
تحقق دائمًا من صحة العمليات في بيئات الاختبار قبل محاولة إجراء تغييرات على بيئة الإنتاج. بشكل افتراضي، تحتوي خدمات نظام مجموعة تصميم الخدمة على قيد موضع لنوع العقدة الأساسية المستهدفة فقط.
مع الإعلان عن خصائص العقدة وقيود الموضع، قم بتنفيذ الخطوات التالية مثيل الأجهزة الظاهرية واحد في كل مرة. كما يسمح هذا بإيقاف تشغيل خدمات النظام (والخدمات المميزة) بأمان على مثيل الجهاز الظاهري الذي تقوم بإزالته عند إنشاء نسخ متماثلة جديدة في مكان آخر.
- من PowerShell، قم بالتشغيل
Disable-ServiceFabricNode
عن عمدRemoveNode
لتعطيل العقدة التي ستقوم بإزالتها. أزل نوع العقدة التي تحتوي على أعلى رقم. على سبيل المثال، إذا كان لديك مجموعة من ست عقد، أزل مثيل الجهاز الظاهري «MyNodeType_5». - شغّل
Get-ServiceFabricNode
للتأكد من أن العقدة قد انتقلت إلى معطل. إذا لم يكن الأمر كذلك، فانتظر حتى يتم تعطيل العقدة. وقد يستغرق هذا بضع ساعات لكل عقدة. لا تتابع في العملية حتى تنتقل العقدة إلى معطلة. - قلل عدد الأجهزة الظاهرية بمقدار واحد في نوع العقدة هذا. ستتم الآن إزالة أعلى مثيل جهاز ظاهري.
- كرر الخطوات من 1 إلى 3 حسب الحاجة، ولكن لا تقم أبدًا بتحجيم عدد المثيلات في أنواع العقد الأساسية أقل مما تتطلبه طبقة الموثوقية. راجع تخطيط سعة مجموعة تصميم الخدمة للحصول على قائمة بالمثيلات الموصى بها.
- بمجرد اختفاء جميع الأجهزة الظاهرية (ممثلة باسم «أسفل»)، سيعرض التصميم:/النظام/خدمة البنية الأساسية/[اسم العقدة] حالة خطأ. بعدها يمكنك تحديث مورد نظام المجموعة لإزالة نوع العقدة. بإمكانك إما استخدام نشر قالب ARM أو تحرير مورد الكتلة من خلال Azure Resource Manager. سيؤدي ذلك إلى بدء ترقية نظام المجموعة الذي سيؤدي إلى إزالة تصميم الخدمة:/النظام/خدمة البنية الأساسية/[نوع العقدة] الموجودة في حالة خطأ.
- بعد ذلك، يمكنك اختياريًّا حذف VMScaleSet، وستظل ترى العقد كـ «أسفل» من طريقة عرض Service Fabric Explorer على الرغم من ذلك. ستكون الخطوة الأخيرة هي تنظيفها بالأمر
Remove-ServiceFabricNodeState
.
تحجيم أفقي
يمكنك إجراء التحجيم الأفقي إما يدويًّا أو برمجيًّا.
إشعار
إذا كنت تقوم بتحجيم نوع عقدة له قدرة فضية على الصمود أو ذهبية، فسيكون التحجيم بطيئًا.
معنى التحجيم
قم بتوسيع نطاق مجموعة تصميم الخدمة عن طريق زيادة عدد المثيلات لمجموعة تحجيم جهاز ظاهري معينة. يمكنك التوسع برمجيًّا باستخدام AzureClient
وتعيين معرف التحجيم المطلوب لزيادة السعة.
var scaleSet = AzureClient.VirtualMachineScaleSets.GetById(ScaleSetId);
var newCapacity = (int)Math.Min(MaximumNodeCount, scaleSet.Capacity + 1);
scaleSet.Update().WithCapacity(newCapacity).Apply();
لتوسيع نطاقها يدويًّا، قم بتحديث السعة في خاصية SKU لمورد مجموعة تحجيم الجهاز الظاهري المطلوب.
"sku": {
"name": "[parameters('vmNodeType0Size')]",
"capacity": "[parameters('nt0InstanceCount')]",
"tier": "Standard"
}
تقليص النطاق
يتطلب التقليص مزيدًا من الاهتمام أكثر من التوسع. على سبيل المثال:
- يتم تشغيل خدمات نظام تصميم الخدمة في نوع العقدة الأساسية في نظام المجموعة الخاص بك. لا تقم أبدًا بإيقاف التشغيل أو التحجيم في عدد المثيلات لنوع العقدة هذا بحيث يكون لديك مثيلات أقل مما تضمنه طبقة الموثوقية.
- للحصول على خدمة ذات حالة جيدة، تحتاج إلى عدد معين من العقد التي تكون دائمًا للحفاظ على التوافر والحفاظ على حالة خدمتك. تحتاج إلى عدد من العقد يساوي عدد مجموعة النسخ المتماثلة المستهدفة للقسم أو الخدمة كحد أدنى.
لتوسيع النطاق يدويًّا، اتبع الخطوات التالية:
- من PowerShell، قم بالتشغيل
Disable-ServiceFabricNode
عن عمدRemoveNode
لتعطيل العقدة التي ستقوم بإزالتها. أزل نوع العقدة التي تحتوي على أعلى رقم. على سبيل المثال، إذا كان لديك مجموعة من ست عقد، أزل مثيل الجهاز الظاهري «MyNodeType_5». - شغّل
Get-ServiceFabricNode
للتأكد من أن العقدة قد انتقلت إلى معطل. إذا لم يكن الأمر كذلك، فانتظر حتى يتم تعطيل العقدة. وقد يستغرق هذا بضع ساعات لكل عقدة. لا تتابع في العملية حتى تنتقل العقدة إلى معطلة. - قلل عدد الأجهزة الظاهرية بمقدار واحد في نوع العقدة هذا. ستتم الآن إزالة أعلى مثيل جهاز ظاهري.
- كرر الخطوات من 1 إلى 3 حسب الحاجة حتى تقوم بتوفير السعة التي تريدها. لا تقم بقياس عدد المثيلات في أنواع العقد الأساسية إلى أقل مما تضمنه طبقة الموثوقية. راجع تخطيط سعة مجموعة تصميم الخدمة للحصول على قائمة بالمثيلات الموصى بها.
للتحجيم يدويًّا، قم بتحديث السعة في خاصية SKU لمورد مجموعة تحجيم الجهاز الظاهري المطلوب.
"sku": {
"name": "[parameters('vmNodeType0Size')]",
"capacity": "[parameters('nt0InstanceCount')]",
"tier": "Standard"
}
يجب إعداد العقدة لإيقاف التشغيل لتقليص نطاقها برمجيًّا. ابحث عن العقدة المراد إزالتها (العقدة الأعلى مثيلًا). على سبيل المثال:
using (var client = new FabricClient())
{
var mostRecentLiveNode = (await client.QueryManager.GetNodeListAsync())
.Where(n => n.NodeType.Equals(NodeTypeToScale, StringComparison.OrdinalIgnoreCase))
.Where(n => n.NodeStatus == System.Fabric.Query.NodeStatus.Up)
.OrderByDescending(n =>
{
var instanceIdIndex = n.NodeName.LastIndexOf("_");
var instanceIdString = n.NodeName.Substring(instanceIdIndex + 1);
return int.Parse(instanceIdString);
})
.FirstOrDefault();
قم بإلغاء تنشيط العقدة وإزالتها باستخدام نفس FabricClient
المثيل (client
في هذه الحالة) ومثيل العقدة (instanceIdString
في هذه الحالة) الذي استخدمته في التعليمة البرمجية السابقة:
var scaleSet = AzureClient.VirtualMachineScaleSets.GetById(ScaleSetId);
// Remove the node from the Service Fabric cluster
ServiceEventSource.Current.ServiceMessage(Context, $"Disabling node {mostRecentLiveNode.NodeName}");
await client.ClusterManager.DeactivateNodeAsync(mostRecentLiveNode.NodeName, NodeDeactivationIntent.RemoveNode);
// Wait (up to a timeout) for the node to gracefully shut down
var timeout = TimeSpan.FromMinutes(5);
var waitStart = DateTime.Now;
while ((mostRecentLiveNode.NodeStatus == System.Fabric.Query.NodeStatus.Up || mostRecentLiveNode.NodeStatus == System.Fabric.Query.NodeStatus.Disabling) &&
DateTime.Now - waitStart < timeout)
{
mostRecentLiveNode = (await client.QueryManager.GetNodeListAsync()).FirstOrDefault(n => n.NodeName == mostRecentLiveNode.NodeName);
await Task.Delay(10 * 1000);
}
// Decrement virtual machine scale set capacity
var newCapacity = (int)Math.Max(MinimumNodeCount, scaleSet.Capacity - 1); // Check min count
scaleSet.Update().WithCapacity(newCapacity).Apply();
إشعار
عند التحجيم في مجموعة، سترى مثيل العقدة/ الجهاز الظاهري الذي تمت إزالته معروضًا في حالة غير صحية في Service Fabric Explorer. للحصول على شرح لهذا السلوك، راجع السلوكيات التي قد تلاحظها في «مستكشف تصميم الخدمة». يمكنك:
- قم باستدعاء الأمر Remove-ServiceFabricNodeState باسم العقدة المناسب.
- وزّع تطبيق مساعد التحجيم التلقائي Service Fabric على مجموعتك. يضمن هذا التطبيق مسح العقد المقسطة من Service Fabric Explorer.
مستويات الموثوقية
مستوى الوثوقية هو خاصية لمورد مجموعة تصميم الخدمة الخاصة بك. لا يمكن تكوينه بشكل مختلف لأنواع العقد الفردية. يتحكم في عامل النسخ المتماثل لخدمات النظام للمجموعة، وهو إعداد على مستوى موارد المجموعة.
سيحدد مستوى الموثوقية الحد الأدنى لعدد العقد التي يجب أن يمتلكها نوع العقدة الأساسية. يمكن لطبقة الموثوقية أن تأخذ القيم التالية:
- البلاتينيوم: يشغّل خدمات النظام مع عدد مجموعة النسخ المتماثلة المستهدفة المكونة من سبع وتسع عقد بذور.
- الذهب: يشغّل خدمات النظام مع عدد مجموعة النسخ المتماثلة المستهدفة من سبع وسبع عقد بذور.
- الفضة: يشغّل خدمات النظام مع عدد مجموعة النسخ المتماثلة المستهدفة من خمس وخمس عقد بذور.
- البرونز: يشغّل خدمات النظام مع عدد مجموعة النسخ المتماثلة المستهدفة من ثلاث وثلاث عقد بذور.
الحد الأدنى الموصى به لمستوى الموثوقية هو الفضي.
يتم تعيين مستوى الوثوقية في قسم الخصائص من مورد Microsoft.ServiceFabric/clusters، علي النحو التالي:
"properties":{
"reliabilityLevel": "Silver"
}
مستويات القدرة على الصمود
تحذير
لا تحصل أنواع العقد التي تعمل بقدرة برونزية على الصمود على أي امتيازات. لن يتم إيقاف أو تأخير وظائف البنية التحتية التي تؤثر على أعباء العمل عديمة الجنسية، مما قد يؤثر على أعباء العمل الخاصة بك.
استخدم القدرة البرونزية على الصمود فقط لأنواع العقد التي تشغل أحمال عمل عديمة الجنسية. بالنسبة لأحمال عمل الإنتاج، قم بتشغيل قدرة فضية علي الصمود أو أعلى لضمان اتساق الحالة. اختر الموثوقية المناسبة استنادًا إلى الإرشادات الواردة في وثائق تخطيط السعة.
يجب تعيين مستوى القدرة على الصمود في موردين. أحدهما هو ملف تعريف الامتداد لمورد مجموعة تحجيم الجهاز الظاهري:
"extensionProfile": {
"extensions": {
"name": "[concat('ServiceFabricNodeVmExt','_vmNodeType0Name')]",
"properties": {
"settings": {
"durabilityLevel": "Bronze"
}
}
}
}
المورد الآخر موجود ضمن nodeTypes
مورد Microsoft.ServiceFabric/clusters:
"nodeTypes": [
{
"name": "[variables('vmNodeType0Name')]",
"durabilityLevel": "Bronze"
}
]
الخطوات التالية
- إنشاء مجموعة على الأجهزة الظاهرية أو أجهزة الكمبيوتر التي تعمل بنظام التشغيل Windows Server: إنشاء نظام مجموعة Service Fabric ل Windows Server.
- إنشاء مجموعة على الأجهزة الظاهرية أو أجهزة الكمبيوتر التي تعمل بنظام التشغيل Linux: إنشاء مجموعة Linux.
- تعرف على خيارات دعم «تصميم الخدمة».