برنامج تعليمي: نشر كتلة نسيج الخدمة قيد التشغيل Windows في شبكة Azure الظاهرية

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

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

في هذا البرنامج التعليمي، تتعلم كيفية:

  • إنشاء VNET في Azure باستخدام PowerShell
  • إنشاء خزنة مفاتيح، وتحميل شهادة
  • إعداد مصادقة Microsoft Entra
  • تكوين مجموعة التشخيص
  • قم بإعداد خدمة EventStore
  • إعداد سجلات Azure مراقبة
  • إنشاء كتلة نسيج خدمة آمنة في Azure PowerShell
  • تأمين الكتلة مع شهادة X.509
  • اتصل بالمجموعة باستخدام PowerShell
  • إزالة مجموعة

ستتعلم في سلسلة البرامج التعليمية هذه كيفية:

إشعار

نوصي باستخدام الوحدة النمطية Azure Az PowerShell للتفاعل مع Azure. راجع تثبيت Azure PowerShell للبدء. لمعرفة كيفية الترحيل إلى الوحدة النمطية Az PowerShell، راجع ترحيل Azure PowerShell من AzureRM إلى Az.

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

قبل أن تبدأ هذا البرنامج التعليمي:

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

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

تحميل ملفات قالب إدارة الموارد Azure التالية:

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

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

في مورد Microsoft.ServiceFabric/clusters ، يتم تكوين نظام مجموعة Windows بالخصائص التالية:

  • ثلاثة أنواع من العقد.
  • خمس عقد في نوع العقدة الأساسية (قابل للتكوين في معلمات القالب)، وعقدة واحدة في كل من نوعي العقد الأخرى.
  • OS: Windows Server 2016 Datacenter مع حاويات (قابل للتكوين في معلمات القالب).
  • شهادة مضمونة (قابلة للتكوين في معلمات القالب).
  • تم تمكين الوكيل العكسي.
  • تم تمكين خدمة DNS.
  • مستوى المتانة من البرونز (قابل للتكوين في معلمات القالب).
  • مستوى الموثوقية للفضة (قابل للتكوين في معلمات القالب).
  • نقطة نهاية اتصال العميل: 19000 (قابل للتكوين في معلمات القالب).
  • نقطة نهاية بوابة HTTP: 19080 (قابل للتكوين في معلمات القالب).

موازن تحميل Azure

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

  • نقطة نهاية اتصال العميل: 19000
  • نقطة نهاية HTTP للبوابة: 19080
  • منفذ تطبيقات: 80
  • منفذ تطبيقات: 443
  • خدمة النسيج عكس الوكيل: 19081

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

الشبكة الظاهرية والشبكة الفرعية ومجموعة أمان الشبكة

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

  • مساحة عنوان الشبكة الظاهرية: 172.16.0.0/20
  • مساحة عنوان الشبكة الفرعية للخدمة Fabric: 172.16.2.0/23

يتم تمكين قواعد نسبة استخدام الشبكة الواردة التالية في مورد Microsoft.Network/networkSecurityGroups . يمكنك تغيير قيم المنفذ بتغيير متغيرات القالب.

  • ClientConnectionEndpoint (TCP): 19000
  • HttpGatewayEndpoint (HTTP/TCP): 19080
  • SMB: 445
  • الاتصالات الداخلية: 1025، 1026، 1027
  • نطاق المنافذ المؤقتة: 49152 إلى 65534 (تحتاج إلى 256 منفذًا كحد أدنى).
  • منافذ للاستخدام التطبيق: 80 و 443
  • نطاق منفذ التطبيق: من 49152 إلى 65534 (يُستخدم لخدمة الاتصال. لا يتم فتح المنافذ الأخرى في موازنة التحميل).
  • حظر كافة المنافذ الأخرى

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

Windows Defender

بشكل افتراضي، يتم تثبيت برنامج الحماية من الفيروسات ل Windows Defender وتشغيله على Windows Server 2016. يتم تثبيت واجهة المستخدم بشكل افتراضي على بعض وحدات SKUs؛ ولكنها ليست مطلوبة. لكل نوع عقدة/مجموعة مقياس VM معلنة في القالب، يتم استخدام ملحق Azure VM Antimalware لاستبعاد دلائل Service Fabric وعملياته:

{
"name": "[concat('VMIaaSAntimalware','_vmNodeType0Name')]",
"properties": {
        "publisher": "Microsoft.Azure.Security",
        "type": "IaaSAntimalware",
        "typeHandlerVersion": "1.5",
        "settings": {
        "AntimalwareEnabled": "true",
        "Exclusions": {
                "Paths": "D:\\SvcFab;D:\\SvcFab\\Log;C:\\Program Files\\Microsoft Service Fabric",
                "Processes": "Fabric.exe;FabricHost.exe;FabricInstallerService.exe;FabricSetup.exe;FabricDeployer.exe;ImageBuilder.exe;FabricGateway.exe;FabricDCA.exe;FabricFAS.exe;FabricUOS.exe;FabricRM.exe;FileStoreService.exe"
        },
        "RealtimeProtectionEnabled": "true",
        "ScheduledScanSettings": {
                "isEnabled": "true",
                "scanType": "Quick",
                "day": "7",
                "time": "120"
        }
        },
        "protectedSettings": null
}
}

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

يعلن ملف معلمات azuredeploy.parameters.json عن العديد من القيم المستخدمة لنشر نظام المجموعة والموارد المقترنة. فيما يلي معلمات لتعديلها للنشر:

المعلمة قيمة المثال الملاحظات
اسم المستخدم المسؤول vmadmin اسم المستخدم المسؤول للكتلة VMs. متطلبات اسم المستخدم للجهاز الظاهري.
adminPassword كلمة المرور#1234 كلمة مرور المسؤول للكتلة VMs. متطلبات كلمة المرور للجهاز الظاهري.
clusterName mysfcluster123 اسم المجموعة. يمكن أن تحتوي على أحرف وأرقام فقط. يمكن أن يتراوح الطول بين 3 و 23 حرفًا.
موقع 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".

إعداد مصادقة عميل Microsoft Entra

بالنسبة لمجموعات "نسيج الخدمة" المنشورة في شبكة اتصال عامة مستضافة على Azure، تكون التوصية الخاصة بالمصادقة المتبادلة بين العميل والعقدة هي:

  • استخدم معرف Microsoft Entra لهوية العميل.
  • استخدم شهادة لهوية الملقم، وتشفير TLS للاتصال HTTP.

يجب إعداد معرف Microsoft Entra لمصادقة العملاء لمجموعة Service Fabric قبل إنشاء نظام المجموعة. يتيح معرف Microsoft Entra للمؤسسات (المعروفة باسم المستأجرين) إدارة وصول المستخدم إلى التطبيقات.

توفر مجموعة Service Fabric العديد من نقاط الإدخال إلى وظائف الإدارة الخاصة بها، بما في ذلك مستكشف Service Fabric المستند إلى الويب وVisual Studio. ونتيجة لذلك، يمكنك إنشاء تطبيقين من Microsoft Entra للتحكم في الوصول إلى نظام المجموعة: تطبيق ويب واحد وتطبيق أصلي واحد. بعد إنشاء التطبيقات، يمكنك تعيين المستخدمين للقراءة فقط وأدوار المسؤول.

إشعار

يجب إكمال الخطوات التالية قبل إنشاء الكتلة. لأن البرامج النصية تتوقع أسماء الكتل ونقاط النهاية، يجب أن تكون القيم مخططة، وليس القيم التي قمت بإنشائها مسبقًا.

في هذه المقالة، نفترض أنك قد أنشأت مستأجرًا بالفعل. إذا لم تكن قد قمت به، فابدأ بقراءة كيفية الحصول على مستأجر Microsoft Entra.

لتبسيط الخطوات المتضمنة في تكوين معرف Microsoft Entra مع مجموعة Service Fabric، أنشأنا مجموعة من البرامج النصية ل Windows PowerShell. قم بتنزيل البرامج النصية على جهاز الكمبيوتر الخاص بك.

إنشاء تطبيقات Microsoft Entra وتعيين المستخدمين للأدوار

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

قم بتشغيل SetupApplications.ps1، وقدم معرف المستأجر واسم نظام المجموعة وعنوان URL للرد على تطبيق الويب كمعلمات. حدد أسماء المستخدمين وكلمات المرور للمستخدمين. على سبيل المثال:

$Configobj = .\SetupApplications.ps1 -TenantId '<MyTenantID>' -ClusterName 'mysfcluster123' -WebApplicationReplyUrl 'https://mysfcluster123.eastus.cloudapp.azure.com:19080/Explorer/index.html' -AddResourceAccess
.\SetupUser.ps1 -ConfigObj $Configobj -UserName 'TestUser' -Password 'P@ssword!123'
.\SetupUser.ps1 -ConfigObj $Configobj -UserName 'TestAdmin' -Password 'P@ssword!123' -IsAdmin

إشعار

بالنسبة للسحب الوطنية (على سبيل المثال Azure Government، Microsoft Azure التي تديرها 21Vianet، Azure Germany)، حدد المعلمة -Location .

يمكنك العثور على TenantId الخاص بك، أو معرف الدليل، في مدخل Microsoft Azure. حدد خصائص معرف> Microsoft Entra وانسخ قيمة معرف الدليل.

يستخدم ClusterName لبادئة تطبيقات Microsoft Entra التي تم إنشاؤها بواسطة البرنامج النصي. لا يحتاج إلى تطابق اسم المجموعة الفعلي تمامًا. إنه يسهل فقط تعيين البيانات الاصطناعية ل Microsoft Entra إلى مجموعة Service Fabric قيد الاستخدام.

WebApplicationReplyUrl هي نقطة النهاية الافتراضية التي يرجعها معرف Microsoft Entra للمستخدمين بعد الانتهاء من تسجيل الدخول. عيّن نقطة النهاية هذه كنقطة نهاية Service Fabric Explorer للمجموعة الخاصة بك، والتي تكون افتراضيًّا:

<https:// cluster_domain>:19080/Explorer

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

  • ClusterName_Cluster
  • ClusterName_Client

يطبع البرنامج النصي JSON المطلوب بواسطة قالب Resource Manager عند إنشاء الكتلة؛ لذلك من الجيد إبقاء نافذة PowerShell مفتوحة.

"azureActiveDirectory": {
  "tenantId":"<guid>",
  "clusterApplication":"<guid>",
  "clientApplication":"<guid>"
},

إضافة تكوين Microsoft Entra لاستخدام معرف Microsoft Entra للوصول إلى العميل

في azuredeploy.json، قم بتكوين معرف Microsoft Entra في قسم Microsoft.ServiceFabric/clusters. أضف معلمات لمعرف المستأجرID، ومعرف نقطةتطبيق الكتلة ID، ومعرف تطبيق العميل ID.

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json",
  "contentVersion": "1.0.0.0",
  "parameters": {
    ...

    "aadTenantId": {
      "type": "string",
      "defaultValue": "0e3d2646-78b3-4711-b8be-74a381d9890c"
    },
    "aadClusterApplicationId": {
      "type": "string",
      "defaultValue": "cb147d34-b0b9-4e77-81d6-420fef0c4180"
    },
    "aadClientApplicationId": {
      "type": "string",
      "defaultValue": "7a8f3b37-cc40-45cc-9b8f-57b8919ea461"
    }
  },

...

{
  "apiVersion": "2018-02-01",
  "type": "Microsoft.ServiceFabric/clusters",
  "name": "[parameters('clusterName')]",
  ...
  "properties": {
    ...
    "azureActiveDirectory": {
      "tenantId": "[parameters('aadTenantId')]",
      "clusterApplication": "[parameters('aadClusterApplicationId')]",
      "clientApplication": "[parameters('aadClientApplicationId')]"
    },
    ...
  }
}

أضف قيم المعلمات في ملف معلمات azuredeploy.parameters.json . على سبيل المثال:

"aadTenantId": {
"value": "0e3d2646-78b3-4711-b8be-74a381d9890c"
},
"aadClusterApplicationId": {
"value": "cb147d34-b0b9-4e77-81d6-420fef0c4180"
},
"aadClientApplicationId": {
"value": "7a8f3b37-cc40-45cc-9b8f-57b8919ea461"
}

تكوين مجموعة التشخيص على الكتلة

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

إحدى الطرق لتحميل السجلات وتجميعها هي استخدام ملحق تشخيص Azure (WAD) الذي يقوم بتحميل السجلات إلى تخزين Azure، كما يتوفر لديه خيار إرسال سجلات إلى Azure Application Insights أو مراكز الأحداث. يمكنك أيضاً استخدام عملية خارجية لقراءة الأحداث من التخزين ووضعها في أحد منتجات النظام الأساسي للتحليل، مثل سجلات المراقبة في Azure أو أي حل آخر لتحليل السجلات.

إذا كنت تتبع هذا البرنامج التعليمي، يتم تكوين مجموعة التشخيص بالفعل في القالب.

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

إضافة مورد تخزين جديد إلى قسم الموارد في القالب:

"resources": [
...
{
  "apiVersion": "2015-05-01-preview",
  "type": "Microsoft.Storage/storageAccounts",
  "name": "[parameters('applicationDiagnosticsStorageAccountName')]",
  "location": "[parameters('computeLocation')]",
  "sku": {
    "accountType": "[parameters('applicationDiagnosticsStorageAccountType')]"
  },
  "tags": {
    "resourceType": "Service Fabric",
    "clusterName": "[parameters('clusterName')]"
  }
},
...
]

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

"parameters": {
...
"applicationDiagnosticsStorageAccountType": {
    "type": "string",
    "allowedValues": [
    "Standard_LRS",
    "Standard_GRS"
    ],
    "defaultValue": "Standard_LRS",
    "metadata": {
    "description": "Replication option for the application diagnostics storage account"
    }
},
"applicationDiagnosticsStorageAccountName": {
    "type": "string",
    "defaultValue": "**STORAGE ACCOUNT NAME GOES HERE**",
    "metadata": {
    "description": "Name for the storage account that contains application diagnostics data from the cluster"
    }
},
...
}

بعد ذلك، أضف ملحق IaaSDiagnostics إلى صفيف الملحقات لخاصية VirtualMachineProfile لكل مورد Microsoft.Compute/virtualMachineScaleSets في نظام المجموعة. إذا كنت تستخدم نموذج القالب، فهناك ثلاث مجموعات مقياس الجهاز الظاهري (واحدة لكل نوع عقدة في نظام المجموعة).

"apiVersion": "2018-10-01",
"type": "Microsoft.Compute/virtualMachineScaleSets",
"name": "[variables('vmNodeType1Name')]",
"properties": {
    ...
    "virtualMachineProfile": {
        "extensionProfile": {
            "extensions": [
                {
                    "name": "[concat(parameters('vmNodeType0Name'),'_Microsoft.Insights.VMDiagnosticsSettings')]",
                    "properties": {
                        "type": "IaaSDiagnostics",
                        "autoUpgradeMinorVersion": true,
                        "protectedSettings": {
                        "storageAccountName": "[parameters('applicationDiagnosticsStorageAccountName')]",
                        "storageAccountKey": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('applicationDiagnosticsStorageAccountName')),'2015-05-01-preview').key1]",
                        "storageAccountEndPoint": "https://core.windows.net/"
                        },
                        "publisher": "Microsoft.Azure.Diagnostics",
                        "settings": {
                        "WadCfg": {
                            "DiagnosticMonitorConfiguration": {
                            "overallQuotaInMB": "50000",
                            "EtwProviders": {
                                "EtwEventSourceProviderConfiguration": [
                                {
                                    "provider": "Microsoft-ServiceFabric-Actors",
                                    "scheduledTransferKeywordFilter": "1",
                                    "scheduledTransferPeriod": "PT5M",
                                    "DefaultEvents": {
                                    "eventDestination": "ServiceFabricReliableActorEventTable"
                                    }
                                },
                                {
                                    "provider": "Microsoft-ServiceFabric-Services",
                                    "scheduledTransferPeriod": "PT5M",
                                    "DefaultEvents": {
                                    "eventDestination": "ServiceFabricReliableServiceEventTable"
                                    }
                                }
                                ],
                                "EtwManifestProviderConfiguration": [
                                {
                                    "provider": "cbd93bc2-71e5-4566-b3a7-595d8eeca6e8",
                                    "scheduledTransferLogLevelFilter": "Information",
                                    "scheduledTransferKeywordFilter": "4611686018427387904",
                                    "scheduledTransferPeriod": "PT5M",
                                    "DefaultEvents": {
                                    "eventDestination": "ServiceFabricSystemEventTable"
                                    }
                                }
                                ]
                            }
                            }
                        },
                        "StorageAccount": "[parameters('applicationDiagnosticsStorageAccountName')]"
                        },
                        "typeHandlerVersion": "1.5"
                    }
                }
            ...
            ]
        }
    }
}

تكوين خدمة EventStore

تعد خدمة EventStore أحد خيارات المراقبة في Service Fabric. يوفر EventStore طريقة لفهم حالة المجموعة، أو أحمال العمل الخاصة بك في وقت معين. EventStore هي خدمة نسيج الخدمة ذات الحالة التي تحافظ على الأحداث من المجموعة. يتم عرض الحدث من خلال Service Fabric Explorer و REST و APIs. يستعلم EventStore المجموعة مباشرة للحصول على بيانات التشخيص عن أي كيان في مجموعتك، ويجب استخدامها للمساعدة:

  • قم بتشخيص المشكلات في التطوير أو الاختبار، أو حيث يمكنك استخدام خط أنابيب للمراقبة
  • تأكد من أن إجراءات الإدارة التي تتخذها على مجموعتك تتم معالجتها بشكل صحيح
  • احصل على "لقطة" عن كيفية تفاعل Service Fabric مع كيان معين

لتمكين خدمة EventStore على نظام المجموعة، أضف ما يلي إلى الخاصية fabric الإعدادات لمورد Microsoft.ServiceFabric/clusters:

"apiVersion": "2018-02-01",
"type": "Microsoft.ServiceFabric/clusters",
"name": "[parameters('clusterName')]",
"properties": {
    ...
    "fabricSettings": [
        ...
        {
            "name": "EventStoreService",
            "parameters": [
                {
                "name": "TargetReplicaSetSize",
                "value": "3"
                },
                {
                "name": "MinReplicaSetSize",
                "value": "1"
                }
            ]
        }
    ]
}

قم بإعداد سجلات Azure Monitor للكتلة

تعد سجلات Azure Monitor توصيتنا لمراقبة الأحداث على مستوى الكتلة. لإعداد سجلات Azure Monitor لمراقبة نظام المجموعة الخاص بك، تحتاج إلى تمكين التشخيص لعرض الأحداث على مستوى نظام المجموعة.

يجب أن تكون مساحة العمل متصلة ببيانات التشخيص الواردة من مجموعتك. يتم تخزين بيانات السجل هذه في حساب تخزين applicationDiagnosticsStorageAccountName ، في جداول WADServiceFabric*EventTable وWADWindowsEventLogsTable وWADETWEventTable.

أضف مساحة عمل Azure Log Analytics، وأضف الحل إلى مساحة العمل:

"resources": [
    ...
    {
        "apiVersion": "2015-11-01-preview",
        "location": "[parameters('omsRegion')]",
        "name": "[parameters('omsWorkspacename')]",
        "type": "Microsoft.OperationalInsights/workspaces",
        "properties": {
            "sku": {
                "name": "Free"
            }
        },
        "resources": [
            {
                "apiVersion": "2015-11-01-preview",
                "name": "[concat(variables('applicationDiagnosticsStorageAccountName'),parameters('omsWorkspacename'))]",
                "type": "storageinsightconfigs",
                "dependsOn": [
                    "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspacename'))]",
                    "[concat('Microsoft.Storage/storageAccounts/', variables('applicationDiagnosticsStorageAccountName'))]"
                ],
                "properties": {
                    "containers": [],
                    "tables": [
                        "WADServiceFabric*EventTable",
                        "WADWindowsEventLogsTable",
                        "WADETWEventTable"
                    ],
                    "storageAccount": {
                        "id": "[resourceId('Microsoft.Storage/storageaccounts/', variables('applicationDiagnosticsStorageAccountName'))]",
                        "key": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('applicationDiagnosticsStorageAccountName')),'2015-06-15').key1]"
                    }
                }
            },
            {
                "apiVersion": "2015-11-01-preview",
                "type": "datasources",
                "name": "sampleWindowsPerfCounter",
                "dependsOn": [
                    "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspacename'))]"
                ],
                "kind": "WindowsPerformanceCounter",
                "properties": {
                    "objectName": "Memory",
                    "instanceName": "*",
                    "intervalSeconds": 10,
                    "counterName": "Available MBytes"
                }
            },
            {
                "apiVersion": "2015-11-01-preview",
                "type": "datasources",
                "name": "sampleWindowsPerfCounter2",
                "dependsOn": [
                    "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspacename'))]"
                ],
                "kind": "WindowsPerformanceCounter",
                "properties": {
                    "objectName": "Service Fabric Service",
                    "instanceName": "*",
                    "intervalSeconds": 10,
                    "counterName": "Average milliseconds per request"
                }
            }
        ]
    },
    {
        "apiVersion": "2015-11-01-preview",
        "location": "[parameters('omsRegion')]",
        "name": "[variables('solution')]",
        "type": "Microsoft.OperationsManagement/solutions",
        "dependsOn": [
            "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspacename'))]"
        ],
        "properties": {
            "workspaceResourceId": "[resourceId('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspacename'))]"
        },
        "plan": {
            "name": "[variables('solution')]",
            "publisher": "Microsoft",
            "product": "[Concat('OMSGallery/', variables('solutionName'))]",
            "promotionCode": ""
        }
    }
]

بعد ذلك، أضف المعلمات

"parameters": {
    ...
    "omsWorkspacename": {
        "type": "string",
        "defaultValue": "mysfomsworkspace",
        "metadata": {
            "description": "Name of your OMS Log Analytics Workspace"
        }
    },
    "omsRegion": {
        "type": "string",
        "defaultValue": "West Europe",
        "allowedValues": [
            "West Europe",
            "East US",
            "Southeast Asia"
        ],
        "metadata": {
            "description": "Specify the Azure Region for your OMS workspace"
        }
    }
}

بعد ذلك، أضف متغيرات:

"variables": {
    ...
    "solution": "[Concat('ServiceFabric', '(', parameters('omsWorkspacename'), ')')]",
    "solutionName": "ServiceFabric"
}

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

"apiVersion": "2018-10-01",
"type": "Microsoft.Compute/virtualMachineScaleSets",
"name": "[variables('vmNodeType1Name')]",
"properties": {
    ...
    "virtualMachineProfile": {
        "extensionProfile": {
            "extensions": [
                {
                    "name": "[concat(variables('vmNodeType0Name'),'OMS')]",
                    "properties": {
                        "publisher": "Microsoft.EnterpriseCloud.Monitoring",
                        "type": "MicrosoftMonitoringAgent",
                        "typeHandlerVersion": "1.0",
                        "autoUpgradeMinorVersion": true,
                        "settings": {
                            "workspaceId": "[reference(resourceId('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspacename')), '2015-11-01-preview').customerId]"
                        },
                        "protectedSettings": {
                            "workspaceKey": "[listKeys(resourceId('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspacename')),'2015-11-01-preview').primarySharedKey]"
                        }
                    }
                }
            ...
            ]
        }
    }
}

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

بعد ذلك، إعداد طبولوجيا شبكة الاتصال، ونشر الكتلة "نسيج الخدمة". ينشئ قالب azuredeploy.json Resource Manager شبكة ظاهرية وشبكة فرعية ومجموعة أمان شبكة ل Service Fabric. القالب أيضًا ينشر كتلة مع تمكين أمان الشهادة. بالنسبة لمجموعات الإنتاج، استخدم شهادة من مرجع مصدق كشهادة نظام المجموعة. يمكن استخدام شهادة موقعة ذاتيًّا لتأمين مجموعات الاختبار.

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

إنشاء كتلة باستخدام شهادة موجودة

يستخدم البرنامج النصي التالي الأمر New-AzServiceFabricCluster وقالب لنشر نظام مجموعة جديد في Azure. ينشئ cmdlet قبو مفتاح جديد في Azure، ويحمل الشهادة الخاصة بك.

# Variables.
$groupname = "sfclustertutorialgroup"
$clusterloc="southcentralus"  # Must match the location parameter in the template
$templatepath="C:\temp\cluster"

$certpwd="q6D7nN%6ck@6" | ConvertTo-SecureString -AsPlainText -Force
$clustername = "mysfcluster123"  # Must match the clustername parameter in the template
$vaultname = "clusterkeyvault123"
$vaultgroupname="clusterkeyvaultgroup123"
$subname="$clustername.$clusterloc.cloudapp.azure.com"

# Sign in to your Azure account and select your subscription
Connect-AzAccount
Get-AzSubscription
Set-AzContext -SubscriptionId <guid>

# Create a new resource group for your deployment, and give it a name and a location.
New-AzResourceGroup -Name $groupname -Location $clusterloc

# Create the Service Fabric cluster.
New-AzServiceFabricCluster  -ResourceGroupName $groupname -TemplateFile "$templatepath\azuredeploy.json" `
-ParameterFile "$templatepath\azuredeploy.parameters.json" -CertificatePassword $certpwd `
-KeyVaultName $vaultname -KeyVaultResourceGroupName $vaultgroupname -CertificateFile $certpath

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

يستخدم البرنامج النصي التالي الأمر New-AzServiceFabricCluster وقالب لنشر نظام مجموعة جديد في Azure. ينشئ cmdlet قبو مفتاح جديد في Azure، ويضيف شهادة موقعة ذاتيًّا جديدة إلى خزنة المفاتيح، ويتم تنزيل ملف الشهادة محليًّا.

# Variables.
$groupname = "sfclustertutorialgroup"
$clusterloc="southcentralus"  # Must match the location parameter in the template
$templatepath="C:\temp\cluster"

$certpwd="q6D7nN%6ck@6" | ConvertTo-SecureString -AsPlainText -Force
$certfolder="c:\mycertificates\"
$clustername = "mysfcluster123"
$vaultname = "clusterkeyvault123"
$vaultgroupname="clusterkeyvaultgroup123"
$subname="$clustername.$clusterloc.cloudapp.azure.com"

# Sign in to your Azure account and select your subscription
Connect-AzAccount
Get-AzSubscription
Set-AzContext -SubscriptionId <guid>

# Create a new resource group for your deployment, and give it a name and a location.
New-AzResourceGroup -Name $groupname -Location $clusterloc

# Create the Service Fabric cluster.
New-AzServiceFabricCluster  -ResourceGroupName $groupname -TemplateFile "$templatepath\azuredeploy.json" `
-ParameterFile "$templatepath\azuredeploy.parameters.json" -CertificatePassword $certpwd `
-CertificateOutputFolder $certfolder -KeyVaultName $vaultname -KeyVaultResourceGroupName $vaultgroupname -CertificateSubjectName $subname

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

الاتصال إلى الكتلة باستخدام الوحدة النمطية PowerShell نسيج الخدمة المثبتة مع SDK النسيج الخدمة. أولاً، قم بتثبيت الشهادة في مخزن الشخصية (My) للمستخدم الحالي على جهاز الكمبيوتر الخاص بك. تشغيل أمر PowerShell التالي:

$certpwd="q6D7nN%6ck@6" | ConvertTo-SecureString -AsPlainText -Force
Import-PfxCertificate -Exportable -CertStoreLocation Cert:\CurrentUser\My `
        -FilePath C:\mycertificates\mysfcluster20170531104310.pfx `
        -Password $certpwd

أنت الآن جاهز للاتصال بمجموعتك الآمنة.

توفر الوحدة النمطية Service Fabric PowerShell العديد من أوامر cmdlets لإدارة مجموعات Service Fabric والتطبيقات والخدمات. استخدم الاتصال-ServiceFabricCluster cmdlet للاتصال بالمجموعة الآمنة. تم العثور على بصمة الإبهام لشهادة لوغاريتم التجزئة الآمن SHA1، وتفاصيل نقطة نهاية الاتصال في الإخراج من الخطوة السابقة.

إذا قمت مسبقا بإعداد مصادقة عميل Microsoft Entra، فقم بتشغيل الأمر التالي:

Connect-ServiceFabricCluster -ConnectionEndpoint mysfcluster123.southcentralus.cloudapp.azure.com:19000 `
        -KeepAliveIntervalInSec 10 `
        -AzureActiveDirectory `
        -ServerCertThumbprint C4C1E541AD512B8065280292A8BA6079C3F26F10

إذا لم تقم بإعداد مصادقة عميل Microsoft Entra، فقم بتشغيل الأمر التالي:

Connect-ServiceFabricCluster -ConnectionEndpoint mysfcluster123.southcentralus.cloudapp.azure.com:19000 `
          -KeepAliveIntervalInSec 10 `
          -X509Credential -ServerCertThumbprint C4C1E541AD512B8065280292A8BA6079C3F26F10 `
          -FindType FindByThumbprint -FindValue C4C1E541AD512B8065280292A8BA6079C3F26F10 `
          -StoreLocation CurrentUser -StoreName My

تحقق من أنك متصل وأن نظام المجموعة سليم باستخدام Get-ServiceFabricClusterHealth cmdlet.

Get-ServiceFabricClusterHealth

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

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

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

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

  • إنشاء VNET في Azure باستخدام PowerShell
  • إنشاء خزنة مفاتيح، وتحميل شهادة
  • إعداد مصادقة Microsoft Entra
  • تكوين مجموعة التشخيص
  • قم بإعداد خدمة EventStore
  • إعداد سجلات Azure مراقبة
  • إنشاء كتلة نسيج خدمة آمنة في Azure PowerShell
  • تأمين الكتلة مع شهادة X.509
  • اتصل بالمجموعة باستخدام PowerShell
  • إزالة مجموعة

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