Avvio rapido: 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.

Questo argomento di avvio rapido 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.

Pagina Web dell'app Voting

Prerequisiti

Per completare questo avvio rapido:

  1. Se non si ha una sottoscrizione di Azure, creare un account Azure gratuito prima di iniziare.

  2. Installare l'interfaccia della riga di comando di Azure

  3. Installare Service Fabric SDK e l'interfaccia della riga di comando

  4. 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 si desidera, è possibile modificare i valori delle variabili in base alle proprie preferenze. Ad esempio, westus anziché eastus per la località.

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 l'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 questo argomento di avvio rapido 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.

Installare il certificato in Firefox

Distribuire l'applicazione Service Fabric

  1. 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
    
  2. 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
    
  3. 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, https://containertestcluster.eastus.cloudapp.azure.com:19080/Explorerad esempio .

  4. Espandere il nodo Applicazioni, in cui sarà ora presente una voce per il tipo dell'applicazione di voto e l'istanza creata.

    Service Fabric Explorer

  5. 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.

    Pagina Web dell'app Voting

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:

  1. Aprire Service Fabric Explorer nel cluster, ad esempio https://containertestcluster.eastus.cloudapp.azure.com:19080/Explorer.

  2. 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.

  3. Espandere il nodo Nodi nella visualizzazione albero. Fare clic sui puntini di sospensione (...) accanto al nodo che esegue il contenitore.

  4. 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.

    Visualizzazione del nodo in Service Fabric Explorer

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:

  1. Aprire Service Fabric Explorer nel cluster, ad esempio https://containertestcluster.eastus.cloudapp.azure.com:19080.

  2. Fare clic sui puntini di sospensione accanto al nodo fabric:/Voting/azurevotefront nella visualizzazione albero e scegliere Scale Service (Ridimensiona servizio).

    Avvio del ridimensionamento dei servizi in Service Fabric Explorer

    Ora è possibile scegliere di modificare il numero di istanze del servizio front-end Web.

  3. Impostare il numero su 2 e fare clic su Scale Service (Ridimensiona servizio).

  4. Fare clic sul nodo fabric:/Voting/azurevotefront nella visualizzazione struttura ad albero ed espandere il nodo della partizione (rappresentato da un GUID).

    Fine del ridimensionamento dei servizi in Service Fabric Explorer

    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.
  • Su Mac: usare l'app Keychain.
  • In Ubuntu: seguire la procedura usata per visualizzare i certificati e rimuovere il certificato.

Passaggi successivi

In questo argomento di avvio rapido è 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 dei contenitori Linux in Service Fabric, continuare con l'esercitazione per le applicazioni contenitore Linux.