Tutoriel : Déployer un cluster Service Fabric exécutant Windows sur un réseau virtuel Azure
Ce tutoriel est la première partie d’une série d’étapes. Vous allez découvrir comment déployer un cluster Azure Service Fabric exécutant Windows dans un réseau virtuel Azure et un groupe de sécurité réseau à l’aide de PowerShell et d’un modèle. Quand vous avez terminé, vous disposez d’un cluster en cours d’exécution dans le cloud sur lequel vous pouvez déployer des applications. Pour créer un cluster Linux qui utilise Azure CLI, consultez Créer un cluster Linux sécurisé sur Azure.
Ce didacticiel décrit un scénario de production. Si vous souhaitez créer un petit cluster à des fins de test, consultez Créer un cluster de test.
Dans ce tutoriel, vous allez apprendre à :
- Créer un réseau virtuel dans Azure à l’aide de PowerShell
- Créer un coffre de clés et charger un certificat
- Configurer l'authentification Microsoft Entra
- Configurer la collecte de diagnostics
- Configurer le service EventStore
- Configurer les journaux Azure Monitor
- Créer un cluster Service Fabric sécurisé dans Azure PowerShell
- Sécuriser le cluster avec un certificat X.509
- Se connecter à un cluster à l’aide de PowerShell
- Supprimer un cluster
Cette série de tutoriels vous montre comment effectuer les opérations suivantes :
- Créer un cluster sécurisé sur Azure
- Superviser un cluster
- Mettre à l’échelle un cluster
- Mettre à niveau le runtime d’un cluster
- Supprimer un cluster
Notes
Nous vous recommandons d’utiliser le module Azure Az PowerShell pour interagir avec Azure. Pour bien démarrer, consultez Installer Azure PowerShell. Pour savoir comment migrer vers le module Az PowerShell, consultez Migrer Azure PowerShell depuis AzureRM vers Az.
Prérequis
Avant de commencer ce tutoriel :
- Si vous n’avez pas d’abonnement Azure, créez un compte gratuit.
- Installez le Kit de développement logiciel (SDK) Service Fabric et le module PowerShell.
- Installez Azure PowerShell.
- Passez en revue les concepts clés des clusters Azure.
- Planifiez et préparez un déploiement de cluster de production.
Les procédures suivantes créent un cluster Service Fabric à sept nœuds. Utilisez la calculatrice de prix Azure pour calculer le coût lié à l’exécution d’un cluster Service Fabric dans Azure.
Télécharger et explorer le modèle
Téléchargez les fichiers de modèle Azure Resource Manager suivants :
Ce modèle déploie un cluster sécurisé de sept machines virtuelles et trois types de nœuds dans un réseau virtuel et un groupe de sécurité réseau. D’autres exemples de modèles sont disponibles sur GitHub. Le modèle azuredeploy.json déploie un certain nombre de ressources, notamment celles ci-dessous.
Cluster Service Fabric
Dans la ressource Microsoft.servicefabric/clusters, un cluster Windows est configuré avec les caractéristiques suivantes :
- Trois types de nœuds
- Cinq nœuds dans le type de nœud principal (configurables dans les paramètres du modèle) et un nœud dans chacun des deux autres types
- Système d’exploitation : Windows Server 2016 Datacenter avec Containers (configurables dans les paramètres du modèle)
- Sécurisation par certificat (configurable dans les paramètres du modèle)
- Proxy inverse activé
- Service DNS activé
- Niveau de durabilité Bronze (configurable dans les paramètres du modèle)
- Niveau de fiabilité Silver (configurable dans les paramètres du modèle)
- Point de terminaison de connexion client : 19000 (configurable dans les paramètres du modèle)
- point de terminaison de passerelle HTTP : 19080 (configurable dans les paramètres du modèle)
Azure Load Balancer
Dans la ressource Microsoft.Network/loadBalancers, un équilibreur de charge est configuré. Des sondes et règles sont configurées pour les ports suivants :
- Point de terminaison de connexion client : 19000
- point de terminaison de passerelle HTTP : 19080
- Port de l’application : 80
- Port de l’application : 443
- proxy inverse de Service Fabric : 19081
Si d’autres ports de l’application sont nécessaires, vous devez ajuster les ressources Microsoft.Network/loadBalancers et Microsoft.Network/networkSecurityGroups pour autoriser le trafic entrant.
Réseau virtuel, sous-réseau et groupe de sécurité réseau
Les noms du réseau virtuel, du sous-réseau et du groupe de sécurité réseau sont déclarés dans les paramètres du modèle. Les espaces d’adressage du réseau virtuel et du sous-réseau sont également déclarés dans les paramètres de modèle et configurés dans la ressource Microsoft.Network/virtualNetworks :
- Espace d’adressage du réseau virtuel : 172.16.0.0/20
- Espace d’adressage du sous-réseau Service Fabric : 172.16.2.0/23
Les règles de trafic entrant suivantes sont activées dans la ressource Microsoft.Network/networkSecurityGroups. Vous pouvez modifier les valeurs de port en modifiant les variables de modèle.
- ClientConnectionEndpoint (TCP) : 19000
- HttpGatewayEndpoint (HTTP/TCP) : 19080
- SMB : 445
- Internodecommunication : 1025, 1026, 1027
- Plage de ports éphémères : 49152 à 65534 (besoin d’un minimum de 256 ports)
- Ports pour l’utilisation de l’application : 80 et 443
- Plage de ports de l’application : 49152 à 65534 (utilisés pour les communications entre services. Les autres ports ne sont pas ouverts sur l’équilibreur de charge).
- Bloquer tous les autres ports
Si d’autres ports de l’application sont nécessaires, vous devez ajuster les ressources Microsoft.Network/loadBalancers et Microsoft.Network/networkSecurityGroups pour autoriser le trafic entrant.
Windows Defender
Par défaut, le programme antivirus Windows Defender est installé sur Windows Server 2016 et fonctionne correctement. L’interface utilisateur est installée par défaut sur certaines références SKU, mais elle n’est pas obligatoire. Pour tous les types de nœuds ou groupes de machines virtuelles identiques déclarés dans le modèle, l’extension Azure VM Antimalware est utilisée pour exclure les répertoires et les processus 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
}
}
Définir les paramètres de modèle
Le fichier de paramètres azuredeploy.parameters.json déclare de nombreuses valeurs servant à déployer le cluster et les ressources associées. Voici les paramètres à modifier pour votre déploiement :
Paramètre | Exemple de valeur | Remarques |
---|---|---|
adminUsername | vmadmin | Nom d’utilisateur administrateur pour les machines virtuelles de cluster. Conditions requises pour les noms d’utilisateur de la machine virtuelle. |
adminPassword | Password#1234 | Mot de passe d’administrateur pour les machines virtuelles de cluster. Conditions requises pour les mots de passe de la machine virtuelle. |
clusterName | mysfcluster123 | Nom du cluster. Peut contenir seulement des lettres et des chiffres. Le nom peut contenir entre 3 et 23 caractères. |
location | southcentralus | Emplacement du cluster. |
certificateThumbprint | La valeur doit être vide si vous créez un certificat auto-signé ou si vous fournissez un fichier de certificat. Pour utiliser un certificat existant déjà chargé dans un coffre de clés, renseignez la valeur d’empreinte du certificat SHA-1. Par exemple, « 6190390162C988701DB5676EB81083EA608DCCF3 ». |
|
certificateUrlValue | La valeur doit être vide si vous créez un certificat auto-signé ou si vous fournissez un fichier de certificat. Pour utiliser un certificat existant déjà chargé dans un coffre de clés, renseignez l’URL du certificat. Par exemple : "https://mykeyvault.vault.azure.net:443/secrets/mycertificate/02bea722c9ef4009a76c5052bcbf8346". |
|
sourceVaultValue | La valeur doit être vide si vous créez un certificat auto-signé ou si vous fournissez un fichier de certificat. Pour utiliser un certificat existant déjà chargé dans un coffre de clés, renseignez la valeur de coffre source. Par exemple, « /subscriptions/333cc2c84-12fa-5778-bd71-c71c07bf873f/resourceGroups/MyTestRG/providers/Microsoft.KeyVault/vaults/MYKEYVAULT ». |
Configurer l'authentification du client Microsoft Entra
Pour les clusters Service Fabric déployés dans un réseau public hébergé dans Azure, les recommandations concernant l’authentification mutuelle client à nœud sont les suivantes :
- Utilisez Microsoft Entra ID pour l’identité du client.
- Utiliser un certificat pour l’identité du serveur et le chiffrement TLS de la communication HTTP
La configuration de Microsoft Entra ID pour authentifier les clients pour un cluster Service Fabric doit être effectuée avant de créer le cluster. Microsoft Entra ID permet aux organisations (appelées locataires) de gérer l'accès des utilisateurs aux applications.
Un cluster Service Fabric offre plusieurs points d’entrée pour ses fonctionnalités de gestion, notamment les outils web Service Fabric Exploreret Visual Studio. Par conséquent, vous créez deux applications Microsoft Entra pour contrôler l'accès au cluster : une application Web et une application native. Après avoir créé les applications, vous devez affecter les utilisateurs aux rôles en lecture seule et administrateur.
Notes
Vous devez exécuter les étapes suivantes avant de créer le cluster. Étant donné que les scripts attendent des noms de cluster et des points de terminaison, ces valeurs doivent être des valeurs planifiées et non celles que vous avez déjà créées.
Dans cet article, nous partons du principe que vous avez déjà créé un locataire. Si ce n'est pas le cas, commencez par lire Comment obtenir un locataire Microsoft Entra.
Pour simplifier les étapes de configuration de Microsoft Entra ID avec un cluster Service Fabric, nous avons créé un ensemble de scripts Windows PowerShell. Téléchargez les scripts sur votre ordinateur.
Créer des applications Microsoft Entra et attribuer des rôles aux utilisateurs
Créez deux applications Microsoft Entra pour contrôler l'accès au cluster : une application Web et une application native. Une fois que vous avez créé les applications pour représenter votre cluster, attribuez à vos utilisateurs les rôles pris en charge par Service Fabric : lecture seule et administrateur.
Exécutez SetupApplications.ps1
, puis entrez l'ID du locataire, le nom du cluster et l'URL de réponse de l'application web en tant que paramètres. Spécifiez les noms d’utilisateur et les mots de passe des utilisateurs. Par exemple :
$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
Notes
Pour les clouds nationaux (notamment Azure Government, Microsoft Azure géré par 21Vianet, Azure Allemagne), spécifiez le paramètre -Location
.
Vous trouverez votre ID de locataire, ou ID de répertoire, dans le portail Azure. Sélectionnez Propriétés>Microsoft Entra ID et copiez la valeur de l'ID de répertoire.
ClusterName est utilisé pour préfixer les applications Microsoft Entra créées par le script. Il ne doit pas forcément correspondre précisément au nom du cluster. Cela facilite uniquement le mappage des artefacts Microsoft Entra au cluster Service Fabric utilisé.
WebApplicationReplyUrl est le point de terminaison par défaut que Microsoft Entra ID renvoie à vos utilisateurs une fois leur connexion terminée. Définissez ce point de terminaison en tant que point de terminaison Service Fabric Explorer pour votre cluster, qui est par défaut :
https://<cluster_domain>:19080/Explorer
Vous êtes invité à vous connecter à un compte disposant de privilèges administratifs pour le locataire Microsoft Entra. Une fois que vous vous êtes connecté, le script crée les applications web et native pour représenter votre cluster Service Fabric. Dans les applications du locataire dans le portail Azure, vous devez voir deux nouvelles entrées :
- ClusterName_Cluster
- ClusterName_Client
Comme le script imprime le code JSON exigé par le modèle Resource Manager quand vous créez le cluster, il est préférable de garder la fenêtre PowerShell ouverte.
"azureActiveDirectory": {
"tenantId":"<guid>",
"clusterApplication":"<guid>",
"clientApplication":"<guid>"
},
Ajouter la configuration Microsoft Entra pour utiliser l'ID Microsoft Entra pour l'accès client
Dans azuredeploy.json, configurez Microsoft Entra ID dans la section Microsoft.ServiceFabric/clusters. Ajoutez des paramètres pour l’ID du locataire, l’ID de l’application de cluster et l’ID de l’application cliente.
{
"$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')]"
},
...
}
}
Ajoutez les valeurs des paramètres dans le fichier de paramètres azuredeploy.parameters.json. Par exemple :
"aadTenantId": {
"value": "0e3d2646-78b3-4711-b8be-74a381d9890c"
},
"aadClusterApplicationId": {
"value": "cb147d34-b0b9-4e77-81d6-420fef0c4180"
},
"aadClientApplicationId": {
"value": "7a8f3b37-cc40-45cc-9b8f-57b8919ea461"
}
Configurer la collecte de diagnostics sur le cluster
Quand vous exécutez un cluster Service Fabric, il peut être intéressant de recueillir les journaux de tous les nœuds pour les regrouper dans un emplacement central. La centralisation des journaux d’activité vous permet d’analyser et résoudre les problèmes que vous pourriez rencontrer dans votre cluster ou dans les applications et services exécutés dans ce cluster.
Pour charger et recueillir des journaux, vous pouvez utiliser l’extension Diagnostics Azure pour Windows (WAD), qui charge les journaux dans Stockage Azure, ou envoyer les journaux à Azure Application Insights ou Event Hubs. Vous pouvez également utiliser un processus externe pour lire les événements à partir du stockage et les placer dans une plateforme d’analyse comme les journaux Azure Monitor ou une autre solution d’analyse des journaux.
Si vous suivez ce tutoriel, la collecte des diagnostics est déjà configurée dans le modèle.
Si l’extension Diagnostics n’est pas déployée sur l’un de vos clusters existants, vous pouvez l’ajouter ou la mettre à jour par le biais du modèle de cluster. Modifiez le modèle Resource Manager utilisé pour créer le cluster existant ou téléchargez le modèle à partir du portail. Modifiez le fichier template.json en effectuant les opérations suivantes :
Ajoutez une nouvelle ressource de stockage à la section resources dans le modèle :
"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')]"
}
},
...
]
Ensuite, ajoutez des paramètres pour le type et le nom du compte de stockage à la section parameters du modèle. Remplacez le texte de l’espace réservé storage account name goes here par le nom du compte de stockage de votre choix.
"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"
}
},
...
}
Ensuite, ajoutez l’extension IaaSDiagnostics au tableau d’extensions de la propriété VirtualMachineProfile de chaque ressource Microsoft.Compute/virtualMachineScaleSets dans le cluster. Si vous utilisez l’exemple de modèle, il existe trois groupes de machines virtuelles identiques (un pour chaque type de nœud dans le cluster).
"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"
}
}
...
]
}
}
}
Configurer le service EventStore
Le service EventStore est une option de supervision de Service Fabric. EventStore offre un moyen de comprendre l’état de votre cluster ou de vos charges de travail à un moment donné dans le temps. EventStore est un service Service Fabric avec état qui conserve les événements du cluster. Les événements sont exposés via Service Fabric Explorer, REST et les API. EventStore interroge le cluster directement pour obtenir des données de diagnostic sur une entité de votre cluster et doit être utilisé pour aider à :
- Diagnostiquer les problèmes de développement ou de test, ou lorsque vous utilisez peut-être un pipeline de surveillance.
- Vérifier que les actions de gestion que vous entreprenez sur votre cluster sont traitées correctement
- Obtenir un « instantané » de la façon dont interagit Service Fabric avec une entité en particulier
Pour activer le service EventStore sur votre cluster, ajoutez le code suivant à la propriété fabricSettings de la ressource 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"
}
]
}
]
}
Configurer les journaux Azure Monitor pour le cluster
Nous vous recommandons d’utiliser les journaux Azure Monitor pour superviser les événements au niveau du cluster. Pour configurer les journaux Azure Monitor afin de superviser votre cluster, vous devez activer les diagnostics pour voir les événements au niveau du cluster.
L’espace de travail a besoin d’être connecté aux données de diagnostic provenant de votre cluster. Ces données de journaux sont stockées dans le compte de stockage applicationDiagnosticsStorageAccountName, dans les tables WADServiceFabric*EventTable, WADWindowsEventLogsTable et WADETWEventTable.
Ajoutez l’espace de travail Azure Log Analytics et ajoutez la solution à l’espace de travail :
"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": ""
}
}
]
Ensuite, ajoutez des paramètres :
"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"
}
}
}
Ensuite, ajoutez des variables :
"variables": {
...
"solution": "[Concat('ServiceFabric', '(', parameters('omsWorkspacename'), ')')]",
"solutionName": "ServiceFabric"
}
Ajoutez l’extension de l’agent Log Analytics à chaque groupe de machines virtuelles identiques dans le cluster, et connectez l’agent à l’espace de travail Log Analytics. Cela permet de collecter des données de diagnostic sur les conteneurs, les applications et les performances. Si vous l’ajoutez en tant qu’extension à la ressource de groupe de machines virtuelles identiques, Azure Resource Manager veille à l’installer sur tous les nœuds, même lors de la mise à l’échelle du cluster.
"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]"
}
}
}
...
]
}
}
}
Déployer le réseau virtuel et le cluster
Puis, configurez la topologie de réseau et déployez le cluster Service Fabric. Le modèle Resource Manager azuredeploy.json crée un réseau virtuel, un sous-réseau et un groupe de sécurité réseau pour Service Fabric. Le modèle déploie également un cluster avec la sécurité de certificat activée. Pour les clusters de production, utilisez un certificat délivré par une autorité de certification en tant que certificat de cluster. Un certificat auto-signé peut être utilisé pour garantir la sécurité des clusters de test.
Dans cet article, le modèle déploie un cluster qui utilise l’empreinte numérique du certificat pour identifier le certificat de cluster. Deux certificats ne peuvent pas avoir la même empreinte numérique, ce qui complique leur gestion. Le fait de basculer un cluster déployé des empreintes de certificat aux noms communs de certificat simplifie la gestion des certificats. Pour découvrir comment mettre à jour le cluster pour que celui-ci utilise des noms communs de certificat pour la gestion des certificats, consultez Modifier un cluster pour qu’il passe de l’utilisation d’une empreinte de certificat à l’utilisation d’un nom commun.
Créer un cluster à l’aide d’un certificat existant
Le script suivant utilise l’applet de commande New-AzServiceFabricCluster et un modèle pour déployer un nouveau cluster dans Azure. L’applet de commande crée un coffre de clés dans Azure et charge votre certificat.
# 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
Créer un cluster à l’aide d’un nouveau certificat auto-signé
Le script suivant utilise l’applet de commande New-AzServiceFabricCluster et un modèle pour déployer un nouveau cluster dans Azure. L’applet de commande crée un coffre de clés dans Azure, ajoute un nouveau certificat auto-signé dans le coffre de clés, puis télécharge le fichier de certificat localement.
# 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
Se connecter à un cluster sécurisé
Connectez-vous au cluster à l’aide du module Service Fabric PowerShell installé avec le SDK Service Fabric. Tout d’abord, installez le certificat dans le magasin personnel de l’utilisateur actuel sur votre ordinateur. Exécutez la commande PowerShell suivante :
$certpwd="q6D7nN%6ck@6" | ConvertTo-SecureString -AsPlainText -Force
Import-PfxCertificate -Exportable -CertStoreLocation Cert:\CurrentUser\My `
-FilePath C:\mycertificates\mysfcluster20170531104310.pfx `
-Password $certpwd
Vous êtes maintenant prêt à vous connecter à votre cluster sécurisé.
Le module Service Fabric PowerShell fournit de nombreuses cmdlets pour la gestion des services, applications et clusters Service Fabric. Pour vous connecter au cluster sécurisé, utilisez la cmdlet Connect-ServiceFabricCluster. Les détails du point de terminaison de connexion et de l’empreinte de certificat SHA-1 se trouvent dans la sortie de l’étape précédente.
Si vous avez déjà configuré l'authentification du client Microsoft Entra, exécutez la commande suivante :
Connect-ServiceFabricCluster -ConnectionEndpoint mysfcluster123.southcentralus.cloudapp.azure.com:19000 `
-KeepAliveIntervalInSec 10 `
-AzureActiveDirectory `
-ServerCertThumbprint C4C1E541AD512B8065280292A8BA6079C3F26F10
Si vous n'avez pas configuré l'authentification du client Microsoft Entra, exécutez la commande suivante :
Connect-ServiceFabricCluster -ConnectionEndpoint mysfcluster123.southcentralus.cloudapp.azure.com:19000 `
-KeepAliveIntervalInSec 10 `
-X509Credential -ServerCertThumbprint C4C1E541AD512B8065280292A8BA6079C3F26F10 `
-FindType FindByThumbprint -FindValue C4C1E541AD512B8065280292A8BA6079C3F26F10 `
-StoreLocation CurrentUser -StoreName My
Vérifiez que vous êtes connecté et que le cluster est sain à l’aide de l’applet de commande Get-ServiceFabricClusterHealth.
Get-ServiceFabricClusterHealth
Nettoyer les ressources
Les autres articles de cette série de tutoriels utilisent le cluster que vous avez créé. Si vous ne passez pas immédiatement à l’article suivant, vous souhaiterez peut-être supprimer le cluster pour éviter de subir des frais.
Étapes suivantes
Passez au tutoriel suivant pour découvrir comment mettre à l’échelle votre cluster.
- Créer un réseau virtuel dans Azure à l’aide de PowerShell
- Créer un coffre de clés et charger un certificat
- Configurer l'authentification Microsoft Entra
- Configurer la collecte de diagnostics
- Configurer le service EventStore
- Configurer les journaux Azure Monitor
- Créer un cluster Service Fabric sécurisé dans Azure PowerShell
- Sécuriser le cluster avec un certificat X.509
- Se connecter à un cluster à l’aide de PowerShell
- Supprimer un cluster
Maintenant, passez au tutoriel suivant pour découvrir comment superviser votre cluster.