Condividi tramite


Guida introduttiva alla distribuzione di un’app Java Spring Boot in Azure Service Fabric

Questo argomento della guida introduttiva illustra come distribuire un'applicazione Java Spring Boot in Azure Service Fabric usando strumenti della riga di comando familiari in Linux o MacOS. Azure Service Fabric è una piattaforma di sistemi distribuiti per la distribuzione e la gestione di microservizi e contenitori.

Prerequisiti

Scaricare l'esempio

In una finestra del terminale eseguire il comando seguente per clonare l'app di esempio Introduzione a Spring Boot nel computer locale.

git clone https://github.com/spring-guides/gs-spring-boot.git

Compilare l'applicazione Spring Boot

All'interno della directory gs-spring-boot/complete eseguire il comando seguente per compilare l'applicazione

./gradlew build

Creare il pacchetto dell'applicazione Spring Boot

  1. All'interno della directory gs-spring-boot nel clone, eseguire il comando yo azuresfguest.

  2. Rispondere alle richieste specificando le informazioni seguenti.

    Voci di Yeoman in Spring Boot

  3. Nella cartella SpringServiceFabric/SpringServiceFabric/SpringGettingStartedPkg/code creare un file denominato entryPoint.sh. Aggiungere il codice seguente alla fine del file entryPoint.sh.

    #!/bin/bash
    BASEDIR=$(dirname $0)
    cd $BASEDIR
    java -jar *spring-boot*.jar
    
  4. Aggiungere la risorsa Endpoints nel file gs-spring-boot/SpringServiceFabric/SpringServiceFabric/SpringGettingStartedPkg/ServiceManifest.xml

        <Resources>
          <Endpoints>
            <Endpoint Name="WebEndpoint" Protocol="http" Port="8080" />
          </Endpoints>
       </Resources>
    

    Il file ServiceManifest.xml sarà ora simile al seguente:

    <?xml version="1.0" encoding="utf-8"?>
    <ServiceManifest Name="SpringGettingStartedPkg" Version="1.0.0"
                     xmlns="http://schemas.microsoft.com/2011/01/fabric" xmlns:xsd="https://www.w3.org/2001/XMLSchema" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" >
    
       <ServiceTypes>
          <StatelessServiceType ServiceTypeName="SpringGettingStartedType" UseImplicitHost="true">
       </StatelessServiceType>
       </ServiceTypes>
    
       <CodePackage Name="code" Version="1.0.0">
          <EntryPoint>
             <ExeHost>
                <Program>entryPoint.sh</Program>
                <Arguments></Arguments>
                <WorkingFolder>CodePackage</WorkingFolder>
             </ExeHost>
          </EntryPoint>
       </CodePackage>
        <Resources>
          <Endpoints>
            <Endpoint Name="WebEndpoint" Protocol="http" Port="8080" />
          </Endpoints>
       </Resources>
     </ServiceManifest>
    

In questa fase è stata creata un'applicazione di Service Fabric per il progetto di esempio Introduzione a Spring Boot che è possibile distribuire in Service Fabric.

Eseguire l'applicazione in locale

  1. Per avviare il cluster locale nei computer Ubuntu, eseguire il comando seguente:

    sudo /opt/microsoft/sdk/servicefabric/common/clustersetup/devclustersetup.sh
    

    Se si usa un Mac, avviare il cluster locale dall'immagine Docker (si presuppone che siano stati seguiti i prerequisiti per configurare il cluster locale per Mac).

    docker run --name sftestcluster -d -p 19080:19080 -p 19000:19000 -p 25100-25200:25100-25200 -p 8080:8080 mysfcluster
    

    L'avvio del cluster locale può richiedere tempo. Per verificare se il cluster è in esecuzione, accedere a Service Fabric Explorer in http://localhost:19080. I cinque nodi integri indicano che il cluster locale è in esecuzione.

    Service Fabric Explorer mostra nodi integri

  2. Aprire la cartella gs-spring-boot/SpringServiceFabric.

  3. Eseguire il comando seguente per connettersi al cluster locale.

    sfctl cluster select --endpoint http://localhost:19080
    
  4. Eseguire lo script install.sh.

    ./install.sh
    
  5. Aprire il Web browser preferito e accedere all'applicazione tramite http://localhost:8080.

    Esempio di Spring Boot in Service Fabric

È ora possibile accedere all'applicazione Spring Boot distribuita in un cluster di Service Fabric.

Per altre informazioni, vedere l'esempio Introduzione di Spring Boot nel sito Web Spring.

Ridimensionare applicazioni e servizi in un cluster

I servizi possono essere facilmente ridimensionati in un cluster per supportare le modifiche del carico sui servizi. È possibile ridimensionare un servizio modificando il numero di istanze in esecuzione nel cluster. Sono disponibili diversi sistemi per garantire il ridimensionamento dei servizi. È ad esempio possibile usare gli script o i comandi dell'interfaccia della riga di comando di Service Fabric (sfctl). I passaggi seguenti usano Service Fabric Explorer.

Service Fabric Explorer è in esecuzione in tutti i cluster di Service Fabric ed è accessibile da un browser passando alla porta di gestione HTTP (19080) del cluster, ad esempio http://localhost:19080.

Per ridimensionare il servizio front-end Web, seguire questa procedura:

  1. Aprire Service Fabric Explorer nel cluster, ad esempio http://localhost:19080.

  2. Selezionare i puntini di sospensione (...) accanto al nodo fabric:/SpringServiceFabric/SpringGettingStarted nella visualizzazione ad albero e selezionare Scale Service (Ridimensiona servizio).

    Esempio di ridimensionamento dei servizi in Service Fabric Explorer

    È ora possibile scegliere di modificare il numero di istanze del servizio.

  3. Impostare il numero su 3 e selezionare Scale Service (Ridimensiona servizio).

    Di seguito è illustrato un modo alternativo per modificare il numero di istanze del servizio tramite la riga di comando.

    # Connect to your local cluster
    sfctl cluster select --endpoint https://<ConnectionIPOrURL>:19080 --pem <path_to_certificate> --no-verify
    
    # Run Bash command to scale instance count for your service
    sfctl service update --service-id 'SpringServiceFabric~SpringGettingStarted' --instance-count 3 --stateless 
    
  4. Selezionare il nodo fabric:/SpringServiceFabric/SpringGettingStarted nella visualizzazione struttura ad albero ed espandere il nodo della partizione (rappresentato da un GUID).

    Ridimensionamento dei servizi in Service Fabric Explorer completato

    Il servizio ha tre istanze. Nella visualizzazione ad albero viene indicato in quali nodi vengono eseguite.

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.

Servizi di failover in un cluster

Per dimostrare il failover del servizio, viene simulato il riavvio di un nodo tramite Service Fabric Explorer. Verificare che sia in esecuzione una sola istanza del servizio.

  1. Aprire Service Fabric Explorer nel cluster, ad esempio http://localhost:19080.

  2. Selezionare i puntini di sospensione (...) accanto al nodo che esegue l'istanza del servizio e riavviare il nodo.

    Riavvio del nodo con Service Fabric Explorer

  3. L'istanza del servizio verrà spostata in un altro nodo e nell'applicazione non si verificheranno tempi di inattività.

    Riavvio del nodo eseguito con successo con Service Fabric Explorer

Passaggi successivi

In questa guida introduttiva si è appreso come:

  • Distribuire un'applicazione Spring Boot in Service Fabric
  • Distribuire l'applicazione nel cluster locale
  • Scalare in orizzontale l'applicazione in più nodi
  • Eseguire il failover del servizio senza compromettere la disponibilità

Per altre informazioni sull'uso di app Java in Service Fabric, continuare con l'esercitazione sulle app Java.