Distribuire un cluster Linux di Service Fabric in una rete virtuale di Azure
In questo articolo si apprenderà 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, si ottiene un cluster in esecuzione nel cloud nel quale è possibile distribuire applicazioni. Per creare un cluster Windows tramite PowerShell, vedere Creare un cluster sicuro di Windows in Azure.
Prerequisiti
Prima di iniziare:
- Se non si ha una sottoscrizione di Azure, creare un account gratuito.
- Installare l'interfaccia della riga di comando di Service Fabric
- Installare l'interfaccia della riga di comando di Azure
- Per informazioni sui concetti chiave dei cluster, vedere Panoramica dei cluster di Azure
- Pianificare e preparare la distribuzione di un cluster di produzione.
Le procedure seguenti creano un cluster di Service Fabric a sette nodi. Per calcolare i costi sostenuti per l'esecuzione di un cluster di Service Fabric in Azure, usare il calcolatore dei prezzi di Azure.
Scaricare ed esplorare il modello
Scaricare i file del 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"
- La proprietà vmImage viene 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"
- La proprietà vmImage viene 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 su GitHub. AzureDeploy.json distribuisce varie risorse, incluse le seguenti.
Cluster di Service Fabric
Nella risorsa Microsoft.ServiceFabric/clusters viene distribuito un cluster Linux con le caratteristiche seguenti:
- tre tipi di nodi
- Cinque nodi del tipo di nodo primario (configurabile nei parametri del modello), un nodo di ognuno degli altri tipi di nodi
- Sistema operativo: (Ubuntu 18.04 LTS / Ubuntu 20.04) (configurabile nei parametri del modello)
- Protezione con certificato (configurabile nei parametri del modello)
- Servizio DNS abilitato
- Livello di durabilità Bronzo (configurabile nei parametri del modello)
- Livello di affidabilità Argento (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)
Azure Load Balancer
Nella risorsa Microsoft.Network/loadBalancers viene configurato un servizio di bilanciamento del carico e vengono impostate probe e regole per le porte seguenti:
- Endpoint di connessione client: 19000
- Endpoint del gateway HTTP: 19080
- Porta applicazione: 80
- Porta applicazione: 443
Rete virtuale e subnet
I nomi della rete virtuale e della subnet sono dichiarati nei parametri del modello. così come gli spazi indirizzi della rete virtuale e della subnet. Questi ultimi vengono configurati nella risorsa Microsoft.Network/virtualNetworks:
- Spazio indirizzi della rete virtuale: 10.0.0.0/16
- Spazio indirizzi della subnet di Service Fabric: 10.0.2.0/24
Se sono necessarie altre porte dell'applicazione, si dovrà modificare la risorsa Microsoft.Network/loadBalancers in modo da 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
Nel file AzureDeploy.Parameters vengono dichiarati molti valori usati per distribuire il cluster e le risorse associate. Di seguito sono riportati alcuni dei parametri che potrebbe essere necessario modificare per la propria distribuzione:
Parametro | Valore di esempio | Note |
---|---|---|
adminUserName | vmadmin | Nome utente amministratore per le VM del cluster. |
adminPassword | Password#1234 | Password amministratore per le VM del cluster. |
clusterName | mysfcluster123 | Nome del cluster. |
posizione | Stati Uniti centro-meridionali | 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 "6190390162C988701DB5676EB81083EA608DCCF3". |
|
certificateUrlValue | 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 l'URL del certificato, 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 modello di Resource Manager AzureDeploy.json crea una rete virtuale e una subnet per Service Fabric. Il modello distribuisce anche un cluster in cui è abilitata la sicurezza basata su certificati. Come certificato per i cluster di produzione usare un certificato di un'entità di certificazione (CA). Per proteggere i cluster di test è possibile usare un certificato autofirmato.
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 identificazione personale di un altro, il che rende più difficile gestire i certificati. Commutare un cluster distribuito dall'uso di identificazioni personali del certificato all'uso di nomi comuni del certificato rende molto più semplice la gestione dei certificati. Per informazioni su come aggiornare il cluster per l'uso dei nomi comuni del certificato per la gestione dei certificati, vedere Passare dall'uso di identificazioni personali del certificato all'uso di nomi comuni del certificato in un cluster.
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 insieme di credenziali delle chiavi 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 insieme di credenziali delle chiavi in Azure, aggiunge un nuovo certificato autofirmato all'insieme di credenziali delle chiavi e scarica il file del 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
Connettersi al cluster tramite l'interfaccia della riga di comando di Service Fabric sfctl cluster select
con la chiave. 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 comando sfctl cluster health
.
sfctl cluster health
Pulire le risorse
Se non si intende passare subito all'articolo successivo, è opportuno eliminare il cluster per evitare di sostenere costi.
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. Nessun certificato può avere la stessa identificazione personale di un altro, il che rende più difficile gestire i certificati. Commutare un cluster distribuito dall'uso di identificazioni personali del certificato all'uso di nomi comuni del certificato rende molto più semplice la gestione dei certificati. Per informazioni su come aggiornare il cluster per l'uso dei nomi comuni del certificato per la gestione dei certificati, vedere Passare dall'uso di identificazioni personali del certificato all'uso di nomi comuni del certificato in un cluster.