Déployer un cluster Service Fabric Linux dans un réseau virtuel Azure

Dans cet article, vous découvrirez comment déployer un cluster Service Fabric Linux dans un réseau virtuel Azure à l’aide de l’interface Azure CLI et d’un modèle. Lorsque 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 Windows à l’aide de PowerShell, consultez la section relative à la création d’un cluster Windows sécurisé sur Azure.

Prérequis

Avant de commencer :

Les procédures suivantes créent un cluster Service Fabric à sept nœuds. Pour calculer le coût lié à l’exécution d’un cluster Service Fabric dans Azure, utilisez la calculatrice de prix Azure.

Télécharger et explorer le modèle

Téléchargez les fichiers de modèle Resource Manager suivants :

Pour Ubuntu 18.04 LTS :

  • AzureDeploy.json
    • L’attribut vmImageSku est défini sur « 18.04-LTS »
    • pour la ressource Microsoft.ServiceFabric/clusters :
      • apiVersion est défini sur « 2019-03-01 »
      • propriété vmImage définie sur « Ubuntu18_04 »
  • AzureDeploy.Parameters.json

Pour Ubuntu 20.04 LTS :

  • AzureDeploy.json
    • L’attribut vmImageSku est défini sur « 20.04-LTS »
    • pour la ressource Microsoft.ServiceFabric/clusters :
      • apiVersion est défini sur « 2019-03-01 »
      • La propriété vmImage est définie sur « Ubuntu20_04 »
  • AzureDeploy.Parameters.json

Ces modèles déploient un cluster sécurisé de sept machines virtuelles et trois types de nœuds dans un réseau virtuel. D’autres exemples de modèles sont disponibles sur GitHub. Le modèle AzureDeploy.json déploie un certain nombre de ressources, notamment celles mentionnées ci-dessous.

Cluster Service Fabric

Dans la ressource Microsoft.ServiceFabric/clusters, un cluster Linux est déployé avec les caractéristiques suivantes :

  • Trois types de nœuds
  • Cinq nœuds dans le type de nœud principal (configurable dans les paramètres du modèle) et un nœud dans chacun des autres types
  • Système d’exploitation : (Ubuntu 18.04 LTS/Ubuntu 20.04) (configurable dans les paramètres du modèle)
  • certificat sécurisé (configurable dans les paramètres du modèle)
  • 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)

Équilibrage de charge Azure

Dans la ressource Microsoft.Network/loadBalancers, un équilibreur de charge est configuré et 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

Réseau virtuel et sous-réseau

Les noms du réseau virtuel et du sous-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 : 10.0.0.0/16
  • Espace d’adressage du sous-réseau Service Fabric : 10.0.2.0/24

Si d’autres ports de l’application sont nécessaires, vous devez ajuster les ressources Microsoft.Network/loadBalancers pour autoriser le trafic entrant.

Extension Service Fabric

Dans la ressource Microsoft.Compute/virtualMachineScaleSets, l’extension Linux Service Fabric est configurée. Cette extension est utilisée pour démarrer Service Fabric sur des machines virtuelles Azure et configurer la sécurité des nœuds.

L’élément suivant est un extrait de modèle pour l’extension Linux Service Fabric :

"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"
     }
   },

Définir les paramètres de modèle

Le fichier AzureDeploy.Parameters déclare de nombreuses valeurs servant à déployer le cluster et les ressources associées. Voici certains des paramètres que vous devrez peut-être modifier pour votre déploiement :

Paramètre Exemple de valeur Notes
adminUsername vmadmin Nom d’utilisateur administrateur pour les machines virtuelles de cluster.
adminPassword Password#1234 Mot de passe d’administrateur pour les machines virtuelles de cluster.
clusterName mysfcluster123 Nom du cluster.
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 ».

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 et un sous-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 (AC) 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. Basculer un cluster déployé de l’utilisation des empreintes de certificat à l’utilisation des noms communs de certificat simplifie considérablement la gestion des certificats. Pour savoir 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 la commande az sf cluster create et le modèle pour déployer un nouveau cluster sécurisé à l’aide d’un certificat existant. La commande crée aussi un coffre de clés dans Azure et charge votre certificat.

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

Créer un cluster à l’aide d’un nouveau certificat auto-signé

Le script suivant utilise la commande az sf cluster create et un modèle pour déployer un nouveau cluster dans Azure. La commande crée aussi un coffre de clés dans Azure, ajoute un nouveau certificat autosigné dans le coffre de clés, puis télécharge le fichier de certificat localement.

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

Se connecter à un cluster sécurisé

Connectez-vous au cluster avec votre clé par le biais de la commande sfctl cluster select de l’interface de ligne de commande de Service Fabric. Notez que vous ne pouvez utiliser que l’option --no-verify pour un certificat auto-signé.

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

Vérifiez que vous êtes connecté et que le cluster est sain à l’aide de la commande sfctl cluster health.

sfctl cluster health

Nettoyer les ressources

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

Découvrez comment mettre à l'échelle un cluster.

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. Basculer un cluster déployé de l’utilisation des empreintes de certificat à l’utilisation des noms communs de certificat simplifie considérablement la gestion des certificats. Pour savoir 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.