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

تعد مناطق التوفر في Azure هي عرض عالي التوفر يحمي تطبيقاتك وبياناتك من حالات فشل مراكز البيانات. تعد منطقة توافر الخدمات موقعًا ماديًا فريدًا مزودًا بالطاقة المستقلة والتبريد والشبكات داخل منطقة Azure.

لدعم المجموعات التي تمتد عبر مناطق توافر الخدمات، يوفر تصميم الخدمة الخاص بـ Azure طريقتين للتكوين كما هو موضح في المقالة أدناه. تتاح مناطق التوفر في مناطق محددة فقط. لمزيد من المعلومات، راجع نظرة عامة على مناطق توافر الخدمات.

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

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

إشعار

تعد فائدة امتداد نوع العقدة الأساسي عبر مناطق الإتاحة يتم رؤيتها حقًا لثلاث مناطق وليس منطقتين فقط.

  • تم ضبط مستوى موثوقية المجموعة المعين إلى Platinum
  • مورد IP عام واحد باستخدام SKU القياسي
  • مورد موازن تحميل واحد باستخدام SKU القياسي
  • مجموعة أمان الشبكة (NSG) المشار إليها بواسطة الشبكة الفرعية التي تنشر فيها مجموعات مقياس الجهاز الظاهري

إشعار

يجب تعيين خاصية مجموعة الموضع الواحد التي تم تعيينها على مقياس الجهاز الظاهري إلى true.

تصور قائمة العقد النموذجية التالية تنسيقات FD/UD في مجموعة مقياس جهاز ظاهري تشمل مناطق ممتدة:

Screenshot that shows a sample node list of FD/UD formats in a virtual machine scale set spanning zones.

توزيع النسخ المتماثلة للخدمة عبر المناطق

عند نشر خدمة على أنواع العقدة التي تمتد عبر مناطق توافر الخدمات، يتم وضع النسخ المتماثلة لضمان وصولها إلى مناطق منفصلة. يتم تكوين مجالات الخطأ على العقد في كل نوع من أنواع العقد هذه باستخدام معلومات المنطقة (أي، FD = fd: / منطقة1/ 1، إلخ). على سبيل المثال، بالنسبة لخمسة نسخ متماثلة أو مثيلات خدمة، يكون التوزيع 2-2-1، وسيحاول وقت التشغيل ضمان التوزيع المتساوي عبر المناطق.

تكوين نسخة متماثلة لخدمة المستخدم

يجب تكوين خدمات المستخدم ذات الحالة التي يتم نشرها على أنواع العقد عبر مناطق توافر الخدمات على النحو التالي: عدد النسخ المتماثلة مع الهدف = 9، الحد الأدنى = 5. يساعد هذا التكوين الخدمة على العمل حتى عند تعطل إحدى المناطق لأن ستة نسخ متماثلة ستظل تعمل في المنطقتين الأخريين. ستنجح أيضًا ترقية التطبيق في هذا السيناريو.

مستوى موثوقية نظام المجموعة

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

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

سيناريو المنطقة السفلية

عندما تنخفض المنطقة، تظهر جميع العقد والنسخ المتماثلة للخدمة لتلك المنطقة على أنها معطلة. نظرًا لوجود نسخ متماثلة في المناطق الأخرى، تستمر الخدمة في الاستجابة. تفشل النسخ المتماثلة الأساسية في مناطق التشغيل. يبدو أن الخدمات في حالة تحذير لأن عدد النسخ المتماثلة الهدف لم يتحقق بعد ولا يزال عدد الأجهزة الظاهرية (VM) أعلى من الحد الأدنى لحجم النسخة المتماثلة المستهدفة.

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

تحسينات قادمة

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

متطلبات الشبكات

IP العام ومورد موازن التحميل

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

{
  "apiVersion": "2018-11-01",
  "type": "Microsoft.Network/publicIPAddresses",
  "name": "[concat('LB','-', parameters('clusterName')]",
  "location": "[parameters('computeLocation')]",
  "sku": {
    "name": "Standard"
  }
}
{
  "apiVersion": "2018-11-01",
  "type": "Microsoft.Network/loadBalancers",
  "name": "[concat('LB','-', parameters('clusterName')]",
  "location": "[parameters('computeLocation')]",
  "dependsOn": [
    "[concat('Microsoft.Network/networkSecurityGroups/', concat('nsg', parameters('subnet0Name')))]"
  ],
  "properties": {
    "addressSpace": {
      "addressPrefixes": [
        "[parameters('addressPrefix')]"
      ]
    },
    "subnets": [
      {
        "name": "[parameters('subnet0Name')]",
        "properties": {
          "addressPrefix": "[parameters('subnet0Prefix')]",
          "networkSecurityGroup": {
            "id": "[resourceId('Microsoft.Network/networkSecurityGroups', concat('nsg', parameters('subnet0Name')))]"
          }
        }
      }
    ]
  },
  "sku": {
    "name": "Standard"
  }
}

إشعار

لا يمكن إجراء تغيير موضعي لـSKU على عنوان IP العام وتحميل موارد الموازن. إذا كنت تقوم بالترحيل من الموارد الحالية التي لديها SKU أساسي، فراجع قسم الترحيل في هذه المقالة.

قواعد NAT لمجموعات مقياس الآلة الافتراضية

يجب أن تتطابق قواعد ترجمة عنوان الشبكة الواردة (NAT) الخاصة بموازنة التحميل مع تجمعات NAT من مجموعة مقياس الجهاز الظاهري. يجب أن تحتوي كل مجموعة مقياس جهاز ظاهري على تجمع NAT وارد فريد.

{
  "inboundNatPools": [
    {
      "name": "LoadBalancerBEAddressNatPool0",
      "properties": {
        "backendPort": "3389",
        "frontendIPConfiguration": {
          "id": "[variables('lbIPConfig0')]"
        },
        "frontendPortRangeEnd": "50999",
        "frontendPortRangeStart": "50000",
        "protocol": "tcp"
      }
    },
    {
      "name": "LoadBalancerBEAddressNatPool1",
      "properties": {
        "backendPort": "3389",
        "frontendIPConfiguration": {
          "id": "[variables('lbIPConfig0')]"
        },
        "frontendPortRangeEnd": "51999",
        "frontendPortRangeStart": "51000",
        "protocol": "tcp"
      }
    },
    {
      "name": "LoadBalancerBEAddressNatPool2",
      "properties": {
        "backendPort": "3389",
        "frontendIPConfiguration": {
          "id": "[variables('lbIPConfig0')]"
        },
        "frontendPortRangeEnd": "52999",
        "frontendPortRangeStart": "52000",
        "protocol": "tcp"
      }
    }
  ]
}

القواعد الصادرة لموازن تحميل SKU القياسي

يقدم موازن تحميل SKU القياسي وعنوان IP العام قدرات جديدة وسلوكيات مختلفة للاتصال الخارجي عند مقارنته باستخدام وحدات SKU الأساسية. إذا كنت تريد اتصالًا صادرًا عند العمل باستخدام وحدات SKU القياسية، فيجب عليك تحديدها صراحةً إما باستخدام عناوين IP عامة لـ SKU أو موازن تحميل SKU قياسي. لمزيد من المعلومات، راجع الاتصالات الصادرةووما المقصود بموازن تحميل Azure؟.

إشعار

يشير النموذج القياسي إلى مجموعة NSG التي تسمح لجميع حركات المرور الصادرة بشكل افتراضي. تقتصر نسبة استخدام الشبكة الواردة على المنافذ المطلوبة لعمليات إدارة Service Fabric. يمكن تعديل قواعد NSG لتلبي متطلباتك.

هام

يتطلب كل نوع عقدة في نظام مجموعة تصميم الخدمة الذي يستخدم موازن تحميل SKU قياسي قاعدة تسمح بحركة المرور الصادرة على المنفذ 443. يعد هذا ضروريًا لإكمال إعداد نظام المجموعة. أي توزيع بدون هذه القاعدة سيخفق.

1. قم بتمكين مناطق توافر متعددة في مجموعة مقياس آلة افتراضية واحدة

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

تتوفر عينة قالب كاملة على GitHub.

Diagram of the Azure Service Fabric Availability Zone architecture.

تكوين المناطق على مجموعة مقياس آلة افتراضية

لتمكين المناطق على مجموعة مقياس آلة افتراضية، قم بتضمين القيم الثلاث التالية في مورد مجموعة مقياس الجهاز الظاهري:

  • القيمة الأولى هي zones الخاصية التي تحدد مناطق التوفر الموجودة في مجموعة مقياس الجهاز الظاهري.

  • القيمة الثانية هي singlePlacementGroup الخاصية التي يجب تعيينها إلى true. يمكن لمجموعة المقياس الممتدة عبر ثلاث مناطق توافر خدمات أن تصل إلى 300 جهاز افتراضي حتى مع singlePlacementGroup = true.

  • القيمة الثالثة هي zoneBalance التي تضمن موازنة صارمة للمنطقة. يجب أن تكون trueهذه القيمة . هذا يضمن أن توزيعات VM عبر المناطق ليست غير متوازنة، مما يعني أنه عندما تتوقف إحدى المناطق عن التشغيل، تحتوي المنطقتان الأخريان على أجهزة افتراضية كافية للحفاظ على تشغيل نظام المجموعة.

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

لست بحاجة إلى تكوين FaultDomain تجاوزاتUpgradeDomain.

{
  "apiVersion": "2018-10-01",
  "type": "Microsoft.Compute/virtualMachineScaleSets",
  "name": "[parameters('vmNodeType1Name')]",
  "location": "[parameters('computeLocation')]",
  "zones": [ "1", "2", "3" ],
  "properties": {
    "singlePlacementGroup": true,
    "zoneBalance": true
  }
}

إشعار

  • يجب أن تحتوي مجموعات تصميم الخدمة على نوع عقدة أساسي واحد على الأقل. يجب أن يكون مستوى متانة أنواع العقد الأولية من الفضة أو أعلى.
  • يجب تكوين منطقة التوفر التي تمتد عبر تعيين مقياس الجهاز الظاهري بثلاث مناطق توفر على الأقل، بغض النظر عن مستوى المتانة.
  • يجب أن تحتوي منطقة التوفر التي تمتد على مقياس الجهاز الظاهري مع Silver أو متانة أعلى على ما لا يقل عن 15 جهازا ظاهريا (5 لكل منطقة).
  • يجب أن تحتوي منطقة التوفر التي تمتد عبر تعيين مقياس الجهاز الظاهري الذي يتمتع بمتانة برونزية على ستة أجهزة ظاهرية على الأقل.

تمكين الدعم لمناطق متعددة في نوع عقدة تصميم الخدمة

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

  • القيمة الأولى هي multipleAvailabilityZones التي يجب تعيينها true لنوع العقدة.

  • أما القيمة الثانية هي sfZonalUpgradeMode وتكون اختيارية. لا يمكن تعديل هذه الخاصية إذا كان نوع العقدة ذات مناطق توافر متعددة موجودًا بالفعل في نظام المجموعة. تتحكم هذه الخاصية في التجميع المنطقي للأجهزة الافتراضية في مجالات الترقية (UDs).

    • إذا تم تعيين هذه القيمة إلىParallel: يتم تجميع الأجهزة الظاهرية الموجودة ضمن نوع العقدة في UDs وتجاهل معلومات المنطقة في خمس وحدات UD. يؤدي هذا الإعداد إلى ترقية UDs عبر جميع المناطق في نفس الوقت. يعد وضع التوزيع هذا أسرع للترقيات، ولا نوصي به لأنه يتعارض مع إرشادات SDP، التي تنص على وجوب تطبيق التحديثات على منطقة واحدة في كل مرة.
    • إذا تم حذف هذه القيمة أو ضبطها إلىHierarchical: يتم تجميع VMs لتعكس التوزيع النطاقي في ما يصل إلى 15 UD. تحتوي كل منطقة من المناطق الثلاث على خمس وحدات UD. وهذا يضمن أن يتم تحديث المناطق واحدة تلو الأخرى، والانتقال إلى المنطقة التالية فقط بعد إكمال خمسة وحدات UD داخل المنطقة الأولى. تعد عملية التحديث هذه أكثر أمانًا للكتلة وتطبيق المستخدم.

    تحدد هذه الخاصية فقط سلوك الترقية لتطبيق تصميم الخدمة وترقيات التعليمات البرمجية. لا تزال ترقيات مجموعة مقياس الآلة الافتراضية الأساسية متوازية في جميع مناطق التوفر. لا تؤثر هذه الخاصية على توزيع UD لأنواع العقد التي لم يتم تمكين مناطق متعددة بها.

  • بالنسبة القيمة الثالثة وهي vmssZonalUpgradeMode وتكون اختيارية ويمكن تحديثها في أي وقت. يحدد هذه الخاصية مخطط الترقية لمقياس الجهاز الظاهري الذي تم تعيينه على التوازي أو بالتتابع عبر مناطق توافر الخدمات.

    • إذا تم تعيين هذه القيمة إلي Parallel: تحدث جميع تحديثات مجموعة المقاييس بالتوازي في جميع المناطق. يعد وضع التوزيع هذا أسرع للترقيات، ولا نوصي به لأنه يتعارض مع إرشادات SDP، التي تنص على وجوب تطبيق التحديثات على منطقة واحدة في كل مرة.
    • إذا تم حذف هذه القيمة أو ضبطها على Hierarchical: هذا يضمن أن المناطق يتم تحديثها واحدة تلو الأخرى، والانتقال إلى المنطقة التالية فقط بعد إكمال خمسة UDs داخل المنطقة الأولى. تعد عملية التحديث هذه أكثر أمانًا للكتلة وتطبيق المستخدم.

هام

يجب أن يكون إصدار واجهة برمجة تطبيقات مورد مجموعة تصميم الخدمة بإصدار أولي 2020-12-01 أو أحدث.

يجب أن يكون إصدار رمز نظام المجموعة 8.1.321 على الأقل أو أحدث.

{
  "apiVersion": "2020-12-01-preview",
  "type": "Microsoft.ServiceFabric/clusters",
  "name": "[parameters('clusterName')]",
  "location": "[parameters('clusterLocation')]",
  "dependsOn": [
    "[concat('Microsoft.Storage/storageAccounts/', parameters('supportLogStorageAccountName'))]"
  ],
  "properties": {
    "reliabilityLevel": "Platinum",
    "sfZonalUpgradeMode": "Hierarchical",
    "vmssZonalUpgradeMode": "Parallel",
    "nodeTypes": [
      {
        "name": "[parameters('vmNodeType0Name')]",
        "multipleAvailabilityZones": true
      }
    ]
  }
}

إشعار

  • يجب أن تستخدم موارد IP العامة وموازن التحميل SKU القياسي الموضح سابقًا في المقالة.
  • multipleAvailabilityZones لا يمكن تحديد الخاصية على نوع العقدة إلا عند إنشاء نوع العقدة ولا يمكن تعديلها لاحقًا. لا يمكن تكوين أنواع العقد الحالية باستخدام هذه الخاصية.
  • عند sfZonalUpgradeMode حذفها أو تعيينها إلى Hierarchical، ستكون عمليات نشر المجموعة والتطبيقات أبطأ نظرًا لوجود المزيد من مجالات الترقية في المجموعة. من المهم ضبط مهلات سياسة الترقية بشكل صحيح لحساب وقت الترقية المطلوب لـ15 نطاقًا للترقية. يجب تحديث سياسة الترقية لكل من التطبيق والمجموعة للتأكد من أن التوزيع لا يتجاوز حد وقت توزيع خدمة الموارد الخاصة بـ Azure وهو 12 ساعة. هذا يعني أن التوزيع يجب ألا يستغرق أكثر من 12 ساعة لـ 15 UD (أي، يجب ألا يستغرق أكثر من 40 دقيقة لكل UD).
  • عيّن مستوى موثوقية نظام المجموعة Platinum للتأكد من أن المجموعة تنجو من سيناريو منطقة واحدة لأسفل.
  • ترقية DurabilityLevel ل nodetype مع multipleAvailabilityZones، غير مدعوم. يرجى إنشاء نوع عقدة جديد بمتانة أعلى بدلا من ذلك.
  • يدعم SF 3 مناطق توفر فقط. أي رقم أعلى غير مدعوم الآن.

تلميح

نوصي بإعداده sfZonalUpgradeModeHierarchical أو حذفه. سيتبع النشر التوزيع النطاقي لأجهزة VM وسيؤثر على كمية أصغر من النسخ المتماثلة أو المثيلات، مما يجعلها أكثر أمانًا. استخدم sfZonalUpgradeMode التعيين على Parallel إذا كانت سرعة النشر أولوية أو يتم تشغيل أحمال العمل عديمة الحالة فقط على نوع العقدة مع مناطق توافر متعددة. يؤدي هذا إلى حدوث جولة UD بالتوازي في جميع مناطق توافر الخدمات.

انتقل إلى نوع العقدة مع مناطق توافر متعددة

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

  • الترحيل من نوع عقدة يستخدم موازن التحميل الأساسي وموارد IP: تم وصف هذه العملية بالفعل في قسم فرعي أدناه للحل بنوع عقدة واحد لكل منطقة توافر خدمات.

    بالنسبة لنوع العقدة الجديد، يتمثل الاختلاف الوحيد في وجود مجموعة مقياس آلة افتراضية واحدة فقط ونوع عقدة واحد لجميع مناطق توافر الخدمات بدلًا من منطقة واحدة لكل منطقة توافر خدمات.

  • الترحيل من نوع عقدة يستخدم موازن تحميل SKU القياسي وموارد IP مع NSG: اتبع نفس الإجراء الموضح سابقًا. ومع ذلك، ليست هناك حاجة لإضافة موازن تحميل جديد وموارد IP وNSG. يمكن إعادة استخدام نفس الموارد في نوع العقدة الجديد.

2. قم بتوزيع المناطق عن طريق تثبيت مقياس آلة ظاهري واحد لكل منطقة

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

يتطلب المخطط الموصى به لنوع العقدة الأساسي ما يلي:

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

يُظهر الرسم التخطيطي التالي بنية منطقة توافر تصميم الخدمة في Azure:

Diagram that shows the Azure Service Fabric Availability Zone architecture.

قم بتمكين المناطق على مجموعة مقياس آلة افتراضية

لتمكين منطقة على مجموعة مقياس آلة افتراضية، قم بتضمين القيم الثلاث التالية في مورد مجموعة مقياس الجهاز الظاهري:

  • القيمة الأولى هي zones الخاصية التي تحدد منطقة توافر الخدمات التي يتم نشر مجموعة مقياس الآلة الافتراضية عليها.
  • القيمة الثانية هي singlePlacementGroup الخاصية التي يجب تعيينها إلى true.
  • القيمة الثالثة هي faultDomainOverride الخاصية في ملحق مجموعة مقياس الجهاز الظاهر الخاص بتصميم الخدمة. يجب أن تتضمن هذه الخاصية المنطقة التي سيتم وضع مجموعة مقياس الآلة الافتراضية بها. مثال:"faultDomainOverride": "az1". يجب وضع كافة موارد مجموعة مقياس الجهاز الظاهري في نفس المنطقة لأن مجموعات تصميم الخدمة الخاص بـ Azure لا تحتوي على دعم عبر المناطق.
{
  "apiVersion": "2018-10-01",
  "type": "Microsoft.Compute/virtualMachineScaleSets",
  "name": "[parameters('vmNodeType1Name')]",
  "location": "[parameters('computeLocation')]",
  "zones": [
    "1"
  ],
  "properties": {
    "singlePlacementGroup": true
  },
  "virtualMachineProfile": {
    "extensionProfile": {
      "extensions": [
        {
          "name": "[concat(parameters('vmNodeType1Name'),'_ServiceFabricNode')]",
          "properties": {
            "type": "ServiceFabricNode",
            "autoUpgradeMinorVersion": false,
            "publisher": "Microsoft.Azure.ServiceFabric",
            "settings": {
              "clusterEndpoint": "[reference(parameters('clusterName')).clusterEndpoint]",
              "nodeTypeRef": "[parameters('vmNodeType1Name')]",
              "dataPath": "D:\\\\SvcFab",
              "durabilityLevel": "Silver",
              "certificate": {
                "thumbprint": "[parameters('certificateThumbprint')]",
                "x509StoreName": "[parameters('certificateStoreValue')]"
              },
              "systemLogUploadSettings": {
                "Enabled": true
              },
              "faultDomainOverride": "az1"
            },
            "typeHandlerVersion": "1.0"
          }
        }
      ]
    }
  }
}

تمكين العديد من أنواع العقد الأساسية في مورد النظام الخاص بمجموعة تصميم الخدمة

لتعيين نوع عقدة واحد أو أكثر كأساسي في مورد نظام مجموعة، قم بتعيين isPrimary الخاصية إلى true. عند توزيع مجموعة تصميم خدمة عبر مناطق توافر الخدمات، يجب أن يكون لديك ثلاثة أنواع من العقد في مناطق متميزة.

{
  "reliabilityLevel": "Platinum",
  "nodeTypes": [
    {
      "name": "[parameters('vmNodeType0Name')]",
      "applicationPorts": {
        "endPort": "[parameters('nt0applicationEndPort')]",
        "startPort": "[parameters('nt0applicationStartPort')]"
      },
      "clientConnectionEndpointPort": "[parameters('nt0fabricTcpGatewayPort')]",
      "durabilityLevel": "Silver",
      "ephemeralPorts": {
        "endPort": "[parameters('nt0ephemeralEndPort')]",
        "startPort": "[parameters('nt0ephemeralStartPort')]"
      },
      "httpGatewayEndpointPort": "[parameters('nt0fabricHttpGatewayPort')]",
      "isPrimary": true,
      "vmInstanceCount": "[parameters('nt0InstanceCount')]"
    },
    {
      "name": "[parameters('vmNodeType1Name')]",
      "applicationPorts": {
        "endPort": "[parameters('nt1applicationEndPort')]",
        "startPort": "[parameters('nt1applicationStartPort')]"
      },
      "clientConnectionEndpointPort": "[parameters('nt1fabricTcpGatewayPort')]",
      "durabilityLevel": "Silver",
      "ephemeralPorts": {
        "endPort": "[parameters('nt1ephemeralEndPort')]",
        "startPort": "[parameters('nt1ephemeralStartPort')]"
      },
      "httpGatewayEndpointPort": "[parameters('nt1fabricHttpGatewayPort')]",
      "isPrimary": true,
      "vmInstanceCount": "[parameters('nt1InstanceCount')]"
    },
    {
      "name": "[parameters('vmNodeType2Name')]",
      "applicationPorts": {
        "endPort": "[parameters('nt2applicationEndPort')]",
        "startPort": "[parameters('nt2applicationStartPort')]"
      },
      "clientConnectionEndpointPort": "[parameters('nt2fabricTcpGatewayPort')]",
      "durabilityLevel": "Silver",
      "ephemeralPorts": {
        "endPort": "[parameters('nt2ephemeralEndPort')]",
        "startPort": "[parameters('nt2ephemeralStartPort')]"
      },
      "httpGatewayEndpointPort": "[parameters('nt2fabricHttpGatewayPort')]",
      "isPrimary": true,
      "vmInstanceCount": "[parameters('nt2InstanceCount')]"
    }
  ]
}

قم بالترحيل إلى مناطق توافر الخدمات من نظام مجموعة باستخدام موازن تحميل SKU أساسي و SKU IP أساسي

لترحيل نظام مجموعة يستخدم موازن تحميل و IP مع SKU أساسي، يجب عليك أولاً إنشاء موازن تحميل ومورد IP جديد تمامًا باستخدام SKU القياسي. لا يمكن تحديث هذه الموارد.

قم بالإشارة إلى موازن التحميل الجديد و IP في أنواع عقدة منطقة الإتاحة المشتركة الجديدة التي تريد استخدامها. في المثال السابق، تمت إضافة ثلاثة موارد جديدة لمجموعة مقياس الآلة الافتراضية في المناطق 1 و 2 و 3. تشير مجموعات مقياس الجهاز الظاهري هذه إلى موازن التحميل و IP الذي تم إنشاؤه حديثًا ويتم تمييزها على أنها أنواع عقدة أساسية في مورد مجموعة تصميم الخدمة.

  1. للبدء، أضف الموارد الجديدة إلى قالب مدير موارد Azure الموجود لديك. تشمل هذه الموارد ما يلي:

    • مورد IP عام يستخدم SKU القياسي
    • مورد موازن التحميل باستخدام SKU القياسي
    • مجموعة NSG المشار إليها بواسطة الشبكة الفرعية التي تنشر فيها مجموعات مقاييس الآلة الافتراضية الخاصة بك
    • ثلاثة أنواع عقدة تم وضع علامة عليها كعقدة أساسية
      • يجب تعيين كل نوع عقدة إلى مجموعة مقياس الآلة الافتراضية الخاصة به والموجودة في منطقة مختلفة.
      • يجب أن تحتوي كل مجموعة ميزان آلة افتراضية على خمس عقد على الأقل (متانة فضية).

    يمكن العثور على مثال لهذه الموارد في عينة القالب.

    New-AzureRmResourceGroupDeployment `
        -ResourceGroupName $ResourceGroupName `
        -TemplateFile $Template `
        -TemplateParameterFile $Parameters
    
  2. عند انتهاء نشر الموارد، يمكنك تعطيل العقد في نوع العقدة الأساسي من الكتلة الأصلية. عند تعطيل العقد، تنتقل خدمات النظام إلى نوع العقدة الأساسي الجديد الذي قمت بنشره مسبقًا.

    Connect-ServiceFabricCluster -ConnectionEndpoint $ClusterName `
        -KeepAliveIntervalInSec 10 `
        -X509Credential `
        -ServerCertThumbprint $thumb  `
        -FindType FindByThumbprint `
        -FindValue $thumb `
        -StoreLocation CurrentUser `
        -StoreName My 
    
    Write-Host "Connected to cluster"
    
    $nodeNames = @("_nt0_0", "_nt0_1", "_nt0_2", "_nt0_3", "_nt0_4")
    
    Write-Host "Disabling nodes..."
    foreach($name in $nodeNames) {
        Disable-ServiceFabricNode -NodeName $name -Intent RemoveNode -Force
    }
    
  3. بعد تعطيل جميع العقد، ستعمل خدمات النظام على نوع العقدة الأساسي، والذي ينتشر عبر المناطق. يمكنك بعد ذلك إزالة العقد المعطلة من نظام المجموعة. بعد إزالة العقد، يمكنك إزالة موارد IP الأصلية وموازن التحميل ومجموعة مقياس الجهاز الظاهري.

    foreach($name in $nodeNames){
        # Remove the node from the cluster
        Remove-ServiceFabricNodeState -NodeName $name -TimeoutSec 300 -Force
        Write-Host "Removed node state for node $name"
    }
    
    $scaleSetName="nt0"
    Remove-AzureRmVmss -ResourceGroupName $groupname -VMScaleSetName $scaleSetName -Force
    
    $lbname="LB-cluster-nt0"
    $oldPublicIpName="LBIP-cluster-0"
    $newPublicIpName="LBIP-cluster-1"
    
    Remove-AzureRmLoadBalancer -Name $lbname -ResourceGroupName $groupname -Force
    Remove-AzureRmPublicIpAddress -Name $oldPublicIpName -ResourceGroupName $groupname -Force
    
  4. بعد ذلك، قم بإزالة المراجع إلى هذه الموارد من قالب إدارة الموارد الذي قمت بنشره.

  5. أخيرًا، قم بتحديث اسم DNS وعنوان IP العام.

$oldprimaryPublicIP = Get-AzureRmPublicIpAddress -Name $oldPublicIpName  -ResourceGroupName $groupname
$primaryDNSName = $oldprimaryPublicIP.DnsSettings.DomainNameLabel
$primaryDNSFqdn = $oldprimaryPublicIP.DnsSettings.Fqdn

Remove-AzureRmLoadBalancer -Name $lbname -ResourceGroupName $groupname -Force
Remove-AzureRmPublicIpAddress -Name $oldPublicIpName -ResourceGroupName $groupname -Force

$PublicIP = Get-AzureRmPublicIpAddress -Name $newPublicIpName  -ResourceGroupName $groupname
$PublicIP.DnsSettings.DomainNameLabel = $primaryDNSName
$PublicIP.DnsSettings.Fqdn = $primaryDNSFqdn
Set-AzureRmPublicIpAddress -PublicIpAddress $PublicIP