توزيع مجموعة Linux Service Fabric في شبكة Azure الظاهرية

تتعلم في هذه المقالة كيفية نشر مجموعة Linux Service Fabric في شبكة افتراضية Azure (VNET) باستخدام Azure CLI ونموذج. عند الانتهاء، يكون لديك كتلة قيد التشغيل في السحابة يمكنك توزيع التطبيقات عليها. لكي تنشئ مجموعة Windows باستخدام PowerShell، راجع إنشاء مجموعة Windows آمنة على Azure.

المتطلبات الأساسية

قبل البدء:

الإجراءات التالية لإنشاء كتلة "نسيج الخدمة" سبع عقد. لحساب التكلفة المتكبدة عن طريق تشغيل مجموعة Service Fabric في Azure ، استخدم Azure Pricing Calculator .

تنزيل القالب واستكشافه

حمل ملفات قوالب Azure Resource Manager التالية:

بـالنسبة إلى Ubuntu 18.04 LTS:

  • AzureDeploy.json
    • يتم تعيين سمة vmImageSku إلى "18.04-LTS"
    • مورد Microsoft.ServiceFabric/clusters
      • يتم تعيين apiVersion إلى "2019-03-01"
      • خاصية vmImage التي يتم تَعيينها إلى "Ubuntu18_04"
  • AzureDeploy.Parameters.json

بـالنسبة إلى Ubuntu 20.04 LTS:

  • AzureDeploy.json
    • يتم تعيين سمة vmImageSku إلى "20.04-LTS"
    • مورد Microsoft.ServiceFabric/clusters
      • يتم تعيين apiVersion إلى "2019-03-01"
      • يتم تعيين خاصية vmImage إلى "Ubuntu20_04"
  • AzureDeploy.Parameters.json

توزع هذه القوالب نظام مجموعة آمن مكون من سبعة أجهزة ظاهرية وثلاثة أنواع عقد في شبكة ظاهرية. يمكن العثور على نماذج قوالب أخرى على GitHub. يوزع ⁧⁧⁩⁩AzureDeploy.json ⁩⁩عددًا من الموارد، بما في ذلك ما يلي.

كتلة نسيج الخدمة

في مورد Microsoft.ServiceFabric/clusters، يتم توزيع مورد Linux مع الخصائص التالية:

  • ثلاثة أنواع مِن العقد
  • خمس عُقد في نوع العقدة الأساسية (قابلة للتكوين في معلمات القالب)، عقدة واحدة في كل نوع من أنواع العقد الأخرى
  • نظام التشغيل: (Ubuntu 18.04 LTS / Ubuntu 20.04) (قابل للتكوين في مَعلمات القالب)
  • شهادة مَضمونة (قابلة للتكوين في معلمات القالب)
  • تمكين⁧⁧⁩⁩خِدمة DNS
  • ⁧⁧⁩⁩مستوى القدرة على الصمود⁩البرونزي (قابل للتكوين في معلمات القالب)
  • ⁧⁧⁩⁩مستوى الموثوقية⁩الفضي (قابل للتكوين في معلمات القالب)
  • نقطة نهاية اتصال العميل: 19000 (قابل للتكوين في معلمات القالب)
  • نقطة نهاية بوابة HTTP: 19080 (قابل للتكوين في معلمات القالب)

موازنة تحميل Azure

في مورد Microsoft.Network/loadBalancers، يُكوّن موازن تحميل ويُتحقق منه، وتُعدّ القواعد للمنافذ التالية:

  • نقطة نهاية اتصال العَميل: 19000
  • نقطة نهاية HTTP للبوابة: 19080
  • مُنفذ تطبيقات: 80
  • مُنفذ تطبيقات: 443

شبكة افتراضية وشبكة فرعية

يتم الإعلان عن أسماء الشبكة الظاهرية وشبكة فرعية في مَعلمات القالب. يتم أيضا الإعلان عن مساحات العناوين للشبكة الظاهرية والشبكة الفرعية في معلمات القالب وتكوينها في مورد Microsoft.Network/virtualNetworks :

  • مساحة عنوان الشبكة الظاهرية: 10.0.0.0/16
  • مِساحة عنوان الشبكة الفرعية للخدمة Fabric: 10.0.2.0/24

إذا كانت هناك حاجة إلى أي منافذ تطبيقات أخرى، سوف تحتاج إلى ضبط مورد Microsoft.Network/loadBalancers للسماح بازدحام البيانات.

ملحق Service Fabric

في مورد Microsoft.Compute/virtualMachineScaleSets ، يتم تكوين ملحق Service Fabric Linux. يستخدم هذا الملحق ل bootstrap Service Fabric إلى أجهزة Azure الظاهرية وتكوين أمان العقدة.

فيما يلي مقتطف قالب لملحق Service Fabric Linux:

"extensions": [
  {
    "name": "[concat('ServiceFabricNodeVmExt','_vmNodeType0Name')]",
    "properties": {
      "type": "ServiceFabricLinuxNode",
      "autoUpgradeMinorVersion": true,
      "enableAutomaticUpgrade": true,
      "protectedSettings": {
        "StorageAccountKey1": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('supportLogStorageAccountName')),'2015-05-01-preview').key1]",
       },
       "publisher": "Microsoft.Azure.ServiceFabric",
       "settings": {
         "clusterEndpoint": "[reference(parameters('clusterName')).clusterEndpoint]",
         "nodeTypeRef": "[variables('vmNodeType0Name')]",
         "durabilityLevel": "Silver",
         "enableParallelJobs": true,
         "nicPrefixOverride": "[variables('subnet0Prefix')]",
         "certificate": {
           "commonNames": [
             "[parameters('certificateCommonName')]"
           ],
           "x509StoreName": "[parameters('certificateStoreValue')]"
         }
       },
       "typeHandlerVersion": "2.0"
     }
   },

تعيين معلمات القالب

يعلن ملف معلمات⁧⁩azuredeploy.parameters.json⁩عن العديد من القيم المستخدمة لتوزيع المجموعة والموارد المرتبطة بها. بعض المعلمات التي قد تحتاج إلى تعديلها للتوزيع:

المعلمة‬ قيمة المثال ملاحظات
اسم المستخدم المسؤول vmadmin اسم المستخدم المسؤول للكتلة VMs.
adminPassword كلمة المرور#1234 كلمة مرور المسؤول للكتلة VMs.
clusterName mysfcluster123 اسم المجموعة.
موقع southcentralus موقع الكتلة.
شهادة البصمة

يجب أن تكون القيمة فارغة إذا كان إنشاء شهادة موقعة ذاتيًّا أو توفير ملف الشهادة.

لاستخدام شهادة موجودة تم تحميلها مسبقًا إلى قبو مفتاح، قم بتعبئة قيمة بصمة الإبهام شهادة لوغاريتم التجزئة الآمن SHA1. على سبيل المثال، "6190390162C988701DB5676EB81083EA608DCCF3".

شهادة قيمة الرابط

يجب أن تكون القيمة فارغة إذا كان إنشاء شهادة موقعة ذاتيًّا أو توفير ملف الشهادة.

لاستخدام شهادة موجودة تم تحميلها مسبقًا إلى خزنة مفاتيح، قم بتعبئة عنوان URL للشهادة. على سبيل المثال، "https://mykeyvault.vault.azure.net:443/secrets/mycertificate/02bea722c9ef4009a76c5052bcbf8346"؛.

مصدر قيمة Vault

يجب أن تكون القيمة فارغة إذا كان إنشاء شهادة موقعة ذاتيًّا أو توفير ملف الشهادة.

لاستخدام شهادة موجودة تم تحميلها مسبقًا إلى خزنة مفاتيح، املأ قيمة المخزن المصدر. على سبيل المثال، "/subscriptions/333cc2c84-12fa-5778-bd71-c71c07bf873f/resourceGroups/MyTestRG/providers/Microsoft.KeyVault/vaults/MYKEYVAULT".

نشر الشبكة الظاهرية والكتلة

بعد ذلك، إعداد طبولوجيا شبكة الاتصال، ونشر الكتلة "نسيج الخدمة". يُنشئ قالب Azure Resource Manager⁩AzureDeploy.json⁩ شبكة ظاهرية، وشبكة فرعية، ومجموعة أمان شبكة لـ Service Fabric. القالب أيضًا ينشر كتلة مع تمكين أمان الشهادة. بالنسبة إلى مجموعات الإنتاج، استخدم شهادة من مرجع شهادات (CA) كشهادة نظام المجموعة. يمكن استخدام شهادة موقعة ذاتيًّا لتأمين مجموعات الاختبار.

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

إنشاء مَجموعة باستخدام شهادة موجودة

يستخدم البرنامج النصي التالي أمر إنشاء مجموعة az sf وقالب لتوزيع مجموعة جديدة مؤمنة بشهادة موجودة. ينشئ الأمر أيضا مَخزن مفاتيح جديدًا في Azure ويرفع الشهادة.

ResourceGroupName="sflinuxclustergroup"
Location="southcentralus"
Password="q6D7nN%6ck@6"
VaultName="linuxclusterkeyvault"
VaultGroupName="linuxclusterkeyvaultgroup"
CertPath="C:\MyCertificates\MyCertificate.pem"

# sign in to your Azure account and select your subscription
az login
az account set --subscription <guid>

# Create a new resource group for your deployment and give it a name and a location.
az group create --name $ResourceGroupName --location $Location

# Create the Service Fabric cluster.
az sf cluster create --resource-group $ResourceGroupName --location $Location \
   --certificate-password $Password --certificate-file $CertPath \
   --vault-name $VaultName --vault-resource-group $ResourceGroupName  \
   --template-file AzureDeploy.json --parameter-file AzureDeploy.Parameters.json

إنشاء مجموعة باستخدام شهادة جديدة موقعة ذاتيًا

يستخدم البرنامج النصي التالي أمر إنشاء مجموعة az sf وقالب لتوزيع مَجموعة جديدة مؤمنة بشهادة موجودة. ينشئ الأمر أيضا مخزن مفاتيح جديدا في Azure، ويضيف شهادة موقعة ذاتيا جديدة إلى مَخزن المفاتيح، ويزيل ملف الشهادة محليا.

ResourceGroupName="sflinuxclustergroup"
ClusterName="sflinuxcluster"
Location="southcentralus"
Password="q6D7nN%6ck@6"
VaultName="linuxclusterkeyvault"
VaultGroupName="linuxclusterkeyvaultgroup"
CertPath="C:\MyCertificates"

az sf cluster create --resource-group $ResourceGroupName --location $Location \
   --cluster-name $ClusterName --template-file C:\temp\cluster\AzureDeploy.json \
   --parameter-file C:\temp\cluster\AzureDeploy.Parameters.json --certificate-password $Password \
   --certificate-output-folder $CertPath --certificate-subject-name $ClusterName.$Location.cloudapp.azure.com \
   --vault-name $VaultName --vault-resource-group $ResourceGroupName

الاتصال بالعنقود الآمن

الاتصال إلى المجموعة باستخدام الأمر sfctl cluster select Service Fabric CLI بمفتاحك. ملاحظة، استخدم فقط الخيار --no-verify لـشهادة موقعة ذاتيا.

sfctl cluster select --endpoint https://aztestcluster.southcentralus.cloudapp.azure.com:19080 \
--pem ./aztestcluster201709151446.pem --no-verify

تحقق من أنك متصل، وأن المجموعة سليمة باستخدام الأمرsfctl cluster health.

sfctl cluster health

تنظيف الموارد

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

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

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

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