Condividi tramite


Distribuire un cluster Linux di Service Fabric in una rete virtuale di Azure

Questo articolo illustra come distribuire un cluster Linux di Service Fabric in una rete virtuale di Azure usando l'interfaccia della riga di comando di Azure e un modello. Al termine, nel cloud è in esecuzione un cluster in cui è possibile distribuire le applicazioni. Per creare un cluster Windows con PowerShell, vedere Creare un cluster Windows sicuro in Azure.

Prerequisiti

Prima di iniziare:

Le procedure seguenti creano un cluster di Service Fabric a sette nodi. Per calcolare i costi sostenuti eseguendo un cluster di Service Fabric in Azure, usare il Calcolatore prezzi di Azure.

Scaricare ed esplorare il modello

Scaricare i file di modello di Resource Manager seguenti:

Per Ubuntu 18.04 LTS:

  • AzureDeploy.json
    • L'attributo vmImageSku è "18.04-LTS"
    • Microsoft.ServiceFabric/della risorsa dei cluster
      • apiVersion impostato su "2019-03-01"
      • Proprietà vmImage impostata su "Ubuntu18_04"
  • AzureDeploy.Parameters.json

Per Ubuntu 20.04 LTS:

  • AzureDeploy.json
    • L'attributo vmImageSku è "20.04-LTS"
    • Microsoft.ServiceFabric/della risorsa dei cluster
      • apiVersion impostato su "2019-03-01"
      • Proprietà vmImage impostata su "Ubuntu20_04"
  • AzureDeploy.Parameters.json

Questi modelli distribuiscono un cluster sicuro di sette macchine virtuali e tre tipi di nodo in una rete virtuale. Altri modelli di esempio sono disponibili in GitHub. Il AzureDeploy.json distribuisce una serie di risorse, tra cui le seguenti.

Cluster di Service Fabric

Nella risorsa Microsoft.ServiceFabric/clusters viene distribuito un cluster Linux con le caratteristiche seguenti:

  • tre tipi di nodo
  • cinque nodi nel tipo di nodo primario (configurabile nei parametri del modello), un nodo in ognuno degli altri tipi di nodo
  • Sistema operativo: (Ubuntu 18.04 LTS / Ubuntu 20.04) (configurabile nei parametri del modello)
  • certificato protetto (configurabile nei parametri del modello)
  • Il servizio DNS è abilitato
  • Livello di durabilità del Bronzo (configurabile attraverso i parametri del modello)
  • Livello di affidabilità di Silver (configurabile nei parametri del modello)
  • endpoint di connessione client: 19000 (configurabile nei parametri del modello)
  • Endpoint del gateway HTTP: 19080 (configurabile nei parametri del modello)

Servizio di bilanciamento del carico di Azure

Nella risorsa Microsoft.Network/loadBalancers viene configurato un servizio di bilanciamento del carico e vengono configurate probe e regole per le porte seguenti:

  • Endpoint di connessione client: 19000
  • Endpoint del gateway HTTP: 19080
  • porta dell'applicazione: 80
  • porta dell'applicazione: 443

Rete virtuale e subnet

I nomi della rete virtuale e della subnet vengono dichiarati nei parametri del modello. Gli spazi indirizzi della rete virtuale e della subnet vengono dichiarati anche nei parametri del modello e configurati nella risorsa Microsoft.Network/virtualNetworks :

  • spazio indirizzi della rete virtuale: 10.0.0.0/16
  • Spazio indirizzi subnet di Service Fabric: 10.0.2.0/24

Se sono necessarie altre porte dell'applicazione, sarà necessario modificare la risorsa Microsoft.Network/loadBalancers per consentire il traffico in ingresso.

Estensione di Service Fabric

Nella risorsa Microsoft.Compute/virtualMachineScaleSets l'estensione Linux di Service Fabric è configurata. Questa estensione viene usata per avviare Service Fabric in macchine virtuali di Azure e configurare la sicurezza dei nodi.

Di seguito è riportato un frammento di modello per l'estensione Linux di 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"
     }
   },

Impostare i parametri del modello

Il file AzureDeploy.Parameters dichiara molti valori usati per distribuire il cluster e le risorse associate. Alcuni dei parametri che potrebbe essere necessario modificare per la distribuzione:

Parametro Valore di esempio Note
adminUserName vmadmin Nome utente amministratore per le macchine virtuali del cluster.
adminPassword Password#1234 Password amministratore per le macchine virtuali del cluster.
nome del cluster mysfcluster123 Nome del cluster.
ubicazione southcentralus Località del cluster.
certificateThumbprint

Il valore deve essere vuoto se si crea un certificato autofirmato o si specifica un file di certificato.

Per usare un certificato esistente precedentemente caricato in un insieme di credenziali delle chiavi, immettere il valore di identificazione personale SHA1 del certificato, Ad esempio, "AA11BB22CC33DD44EE55FF66AA77BB88CC99DD00".

certificateUrlValue

Il valore deve essere vuoto se si crea un certificato autofirmato o si specifica un file di certificato.

Compilare l'URL del certificato per utilizzare un certificato esistente caricato in precedenza nel tuo key vault. Ad esempio, "https://mykeyvault.vault.azure.net:443/secrets/mycertificate/02bea722c9ef4009a76c5052bcbf8346".

sourceVaultValue

Il valore deve essere vuoto se si crea un certificato autofirmato o si specifica un file di certificato.

Per usare un certificato esistente precedentemente caricato in un insieme di credenziali delle chiavi, immettere il valore dell'insieme di credenziali di origine, ad esempio "/subscriptions/333cc2c84-12fa-5778-bd71-c71c07bf873f/resourceGroups/MyTestRG/providers/Microsoft.KeyVault/vaults/MYKEYVAULT".

Distribuire la rete virtuale e il cluster

Configurare quindi la topologia di rete e distribuire il cluster di Service Fabric. Il modelloAzureDeploy.json Resource Manager crea una rete virtuale e una subnet per Service Fabric. Il modello distribuisce anche un cluster con sicurezza dei certificati abilitata. Per i cluster di produzione, usare un certificato di un'autorità di certificazione (CA) come certificato del cluster. È possibile usare un certificato autofirmato per proteggere i cluster di test.

Il modello in questo articolo distribuisce un cluster che usa l'identificazione personale del certificato per identificare il certificato del cluster. Nessun certificato può avere la stessa impronta digitale, rendendo più difficile la gestione dei certificati. Il passaggio di un cluster distribuito dall'uso delle identificazioni personali del certificato all'uso dei nomi comuni dei certificati rende la gestione dei certificati molto più semplice. Per informazioni su come aggiornare il cluster per usare i nomi comuni dei certificati per la gestione dei certificati, leggere modificare il cluster in base alla gestione dei nomi comuni del certificato.

Creare un cluster usando un certificato esistente

Lo script seguente usa il comando az sf cluster create e il modello per distribuire un nuovo cluster protetto con un certificato esistente. Il comando crea anche un nuovo Key Vault in Azure e carica il certificato.

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

Creare un cluster usando un nuovo certificato autofirmato

Lo script seguente usa il comando az sf cluster create e un modello per distribuire un nuovo cluster in Azure. Il comando crea anche un nuovo insieme di credenziali delle chiavi in Azure, aggiunge un nuovo certificato autofirmato all'insieme di credenziali delle chiavi e scarica il file di certificato in locale.

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

Connettersi al cluster sicuro

Collegarsi al cluster usando il comando CLI sfctl cluster select di Service Fabric, utilizzando la tua chiave. Si noti che usare solo l'opzione --no-verify per un certificato autofirmato.

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

Verificare di essere connessi e che il cluster sia integro usando il sfctl cluster health comando .

sfctl cluster health

Pulire le risorse

Se non si passa immediatamente all'articolo successivo, è possibile eliminare il cluster per evitare addebiti.

Passaggi successivi

Informazioni su come ridimensionare un cluster.

Il modello in questo articolo distribuisce un cluster che usa l'identificazione personale del certificato per identificare il certificato del cluster. Due certificati non possono avere la stessa impronta digitale, il che rende più difficile la gestione dei certificati. Il passaggio di un cluster distribuito dall'uso delle identificazioni personali del certificato all'uso dei nomi comuni dei certificati rende la gestione dei certificati molto più semplice. Per informazioni su come aggiornare il cluster per usare i nomi comuni dei certificati per la gestione dei certificati, leggere modificare il cluster in base alla gestione dei nomi comuni del certificato.