Guida introduttiva: Distribuire contenitori Linux in Service Fabric
Azure Service Fabric è una piattaforma di sistemi distribuiti per la distribuzione e la gestione di microservizi e contenitori scalabili e affidabili.
Questa guida introduttiva illustra come distribuire contenitori Linux in un cluster di Service Fabric in Azure. Al termine, si avrà un'applicazione di voto costituita da un front-end Web Python e un back-end Redis in esecuzione in un cluster di Service Fabric. Verrà anche illustrato come effettuare il failover di un'applicazione e come ridimensionare un'applicazione del cluster.
Prerequisiti
Per completare questa guida introduttiva:
Se non si ha una sottoscrizione di Azure, creare un account Azure gratuito prima di iniziare.
Installare l'interfaccia della riga di comando di Azure
Installare Service Fabric SDK e l'interfaccia della riga di comando
Installare Git
Ottenere il pacchetto dell'applicazione
Per distribuire contenitori in Service Fabric, è necessario un set di file manifesto che descrivono i singoli contenitori e l'applicazione (definizione di applicazione).
In una console usare git per clonare una copia della definizione di applicazione, quindi passare alla directory Voting
nel clone.
git clone https://github.com/Azure-Samples/service-fabric-containers.git
cd service-fabric-containers/Linux/container-tutorial/Voting
Creare un cluster di Service Fabric
Per distribuire l'applicazione in Azure, è necessario un cluster di Service Fabric per eseguire l'applicazione. I comandi seguenti creano un cluster con cinque nodi in Azure. Creano inoltre un certificato autofirmato, lo aggiungono a un insieme di credenziali delle chiavi e lo scaricano in locale. Il nuovo certificato viene usato per proteggere il cluster in fase di distribuzione e per l'autenticazione dei client.
Se lo si desidera, è possibile modificare i valori delle variabili in base alle preferenze. Ad esempio, westus anziché eastus per la posizione.
Nota
I nomi dell'insieme di credenziali delle chiavi devono essere universalmente univoci, perché sono accessibili come https://{vault-name}.vault.azure.net.
#!/bin/bash
# Variables
ResourceGroupName='containertestcluster'
ClusterName='containertestcluster'
Location='eastus'
Password='q6D7nN%6ck@6'
Subject='containertestcluster.eastus.cloudapp.azure.com'
VaultName='containertestvault'
VmPassword='Mypa$$word!321'
VmUserName='sfadminuser'
# Login to Azure and set the subscription
az login
az account set --subscription <mySubscriptionID>
# Create resource group
az group create --name $ResourceGroupName --location $Location
# Create secure five node Linux cluster. Creates a key vault in a resource group
# and creates a certificate in the key vault. The certificate's subject name must match
# the domain that you use to access the Service Fabric cluster. The certificate is downloaded locally.
az sf cluster create --resource-group $ResourceGroupName --location $Location --certificate-output-folder . --certificate-password $Password --certificate-subject-name $Subject --cluster-name $ClusterName --cluster-size 5 --os UbuntuServer1804 --vault-name $VaultName --vault-resource-group $ResourceGroupName --vm-password $VmPassword --vm-user-name $VmUserName
Nota
Il servizio front-end Web è configurato per l'ascolto del traffico in ingresso sulla porta 80. Per impostazione predefinita, la porta 80 è aperta nelle VM del cluster e in Azure Load Balancer.
Configurare il tuo ambiente
Service Fabric fornisce numerosi strumenti che è possibile usare per gestire un cluster e le applicazioni:
- Service Fabric Explorer, uno strumento basato su browser.
- Interfaccia della riga di comando di Service Fabric, la cui esecuzione si basa sull'interfaccia della riga di comando di Azure.
- Comandi di PowerShell.
In questa guida introduttiva si usano l'interfaccia della riga di comando di Service Fabric e Service Fabric Explorer, uno strumento basato sul Web. Per usare Service Fabric Explorer, è necessario importare il file PFX del certificato nel browser. Per impostazione predefinita il file PFX non prevede una password.
Mozilla Firefox è il browser predefinito in Ubuntu 18.04. Per importare il certificato in Firefox, fare clic sul pulsante di menu nell'angolo in alto a destra del browser, quindi fare clic su Opzioni. Nella pagina Preferenze usare la casella di ricerca per cercare "certificati". Fare clic su Mostra certificati, selezionare la scheda Certificati personali, fare clic su Importa e seguire i prompt per importare il certificato.
Distribuire l'applicazione Service Fabric
Connettersi al cluster di Service Fabric in Azure con l'interfaccia della riga di comando. L'endpoint è l'endpoint di gestione del cluster. Nella sezione precedente è stato creato il file PEM.
sfctl cluster select --endpoint https://containertestcluster.eastus.cloudapp.azure.com:19080 --pem containertestcluster22019013100.pem --no-verify
Usare lo script di installazione per copiare la definizione di applicazione di voto nel cluster, registrare il tipo di applicazione e creare un'istanza dell'applicazione. Il file del certificato PEM dovrebbe trovarsi nella stessa directory del file install.sh.
./install.sh
Aprire un Web browser e passare all'endpoint Service Fabric Explorer per il cluster. L’endpoint ha il formato seguente: https://<my-azure-service-fabric-cluster-url>:19080/Explorer; ad esempio,
https://containertestcluster.eastus.cloudapp.azure.com:19080/Explorer
.Espandere il nodo Applicazioni, in cui sarà ora presente una voce per il tipo dell'applicazione di voto e l'istanza creata.
Per connettersi al contenitore in esecuzione, aprire un Web browser e passare all'URL del cluster, ad esempio
http://containertestcluster.eastus.cloudapp.azure.com:80
. Nel browser verrà visualizzata l'applicazione di voto.
Nota
È anche possibile distribuire le applicazioni di Service Fabric con Docker Compose. È ad esempio possibile usare il comando seguente per distribuire e installare l'applicazione nel cluster usando Docker Compose.
sfctl compose create --deployment-name TestApp --file-path ../docker-compose.yml
Effettuare il failover di un contenitore in un cluster
Service Fabric garantisce lo spostamento automatico delle istanze di contenitore in altri nodi del cluster in caso di errore. È anche possibile svuotare manualmente un nodo per i contenitori e passare quindi normalmente ad altri nodi del cluster. Service Fabric offre diversi modi per ridimensionare i servizi. Nei passaggi seguenti si usa Service Fabric Explorer.
Per effettuare il failover del contenitore front-end, seguire questa procedura:
Aprire Service Fabric Explorer nel cluster, ad esempio
https://containertestcluster.eastus.cloudapp.azure.com:19080/Explorer
.Fare clic sul nodo fabric:/Voting/azurevotefront nella visualizzazione struttura ad albero ed espandere il nodo della partizione (rappresentato da un GUID). Si noti il nome del nodo nella visualizzazione struttura ad albero, che indica i nodi in cui il contenitore è attualmente in esecuzione, ad esempio
_nodetype_1
.Espandere il nodo Nodi nella visualizzazione albero. Fare clic sui puntini di sospensione (...) accanto al nodo che esegue il contenitore.
Scegliere Riavvia per riavviare il nodo e confermare l'azione di riavvio. Il riavvio causa il failover del contenitore in un altro nodo del cluster.
Ridimensionare applicazioni e servizi in un cluster
I servizi di Service Fabric possono essere facilmente ridimensionati in un cluster per supportarne il carico. È possibile ridimensionare un servizio modificando il numero di istanze in esecuzione nel cluster.
Per scalare il servizio front-end Web, seguire questa procedura:
Aprire Service Fabric Explorer nel cluster, ad esempio
https://containertestcluster.eastus.cloudapp.azure.com:19080
.Fare clic sui puntini di sospensione accanto al nodo fabric:/Voting/azurevotefront nella visualizzazione albero e scegliere Scale Service (Ridimensiona servizio).
Ora è possibile scegliere di modificare il numero di istanze del servizio front-end Web.
Impostare il numero su 2 e fare clic su Scale Service (Ridimensiona servizio).
Fare clic sul nodo fabric:/Voting/azurevotefront nella visualizzazione struttura ad albero ed espandere il nodo della partizione (rappresentato da un GUID).
Saranno ora presenti due istanze del servizio. Nella visualizzazione albero si può verificare in quali nodi vengono eseguite le istanze.
Con questa semplice attività di gestione, sono state raddoppiate le risorse disponibili per il servizio front-end per l'elaborazione del carico utente. È importante comprendere che non sono necessarie più istanze di un servizio perché questo venga eseguito in modo affidabile. In caso di problemi di un servizio, Service Fabric assicura l'esecuzione di una nuova istanza del servizio nel cluster.
Pulire le risorse
Usare lo script di disinstallazione (uninstall.sh) incluso nel modello per eliminare l'istanza dell'applicazione dal cluster e annullare la registrazione del tipo di applicazione. La pulizia dell'istanza con questo script richiede tempo ed è quindi consigliabile non eseguire lo script di installazione immediatamente dopo questo script. È possibile usare Service Fabric Explorer per determinare quando è stata rimossa l'istanza ed è stata annullata la registrazione del tipo di applicazione.
./uninstall.sh
Il modo più semplice per eliminare il cluster e tutte le risorse che utilizza consiste nell'eliminare il gruppo di risorse.
Accedere ad Azure e selezionare l'ID della sottoscrizione da usare per rimuovere il cluster. È possibile trovare l'ID della sottoscrizione accedendo al portale di Azure. Eliminare il gruppo di risorse e tutte le risorse del cluster con il comando az group delete.
az login
az account set --subscription <guid>
ResourceGroupName="containertestcluster"
az group delete --name $ResourceGroupName
Se non è necessario eseguire altre operazioni con il cluster, è possibile rimuovere il certificato dall'archivio certificati. Ad esempio:
- In Windows: usare lo snap-in di MMC Certificati. Assicurarsi di selezionare My user account (Account utente personale) quando si aggiunge lo snap-in. Passare a
Certificates - Current User\Personal\Certificates
e rimuovere il certificato. - In Mac: usare l'app Keychain.
- In Ubuntu: seguire la procedura usata per visualizzare i certificati e rimuovere il certificato.
Passaggi successivi
In questa guida introduttiva è stata distribuita un'applicazione contenitore Linux in un cluster di Service Fabric in Azure, è stato effettuato il failover nell'applicazione ed è stata ridimensionata l'applicazione nel cluster. Per altre informazioni sull'uso di contenitori Linux in Service Fabric, continuare con l'esercitazione sulle applicazioni contenitore Linux.