Snabbstart: Distribuera en Java Spring Boot-app i Azure Service Fabric

I den här snabbstarten distribuerar du ett Java Spring Boot-program till Azure Service Fabric med hjälp av välbekanta kommandoradsverktyg i Linux eller macOS. Azure Service Fabric är en plattform för distribuerade system för distribution och hantering av mikrotjänster och containrar.

Förutsättningar

Hämta exemplet

I ett terminalfönster kör du följande kommando för att klona exempelappen Spring Boot Getting Started till den lokala datorn.

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

Skapa Spring Boot-programmet

I katalogen gs-spring-boot/complete kör du kommandot nedan för att skapa programmet

./gradlew build

Paketera Spring Boot-programmet

  1. Kör kommandot i katalogen gs-spring-boot i din klonyo azuresfguest.

  2. Ange följande information för varje fråga.

    Spring Boot Yeoman entries

  3. I mappen SpringServiceFabric/SpringServiceFabric/SpringGettingStartedPkg/code skapar du en fil med namnet entryPoint.sh. Lägg till följande kod i filen entryPoint.sh.

    #!/bin/bash
    BASEDIR=$(dirname $0)
    cd $BASEDIR
    java -jar *spring-boot*.jar
    
  4. Lägg till slutpunktsresursen i filen gs-spring-boot/SpringServiceFabric/SpringServiceFabric/SpringGettingStartedPkg/ServiceManifest.xml

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

    ServiceManifest.xml ser nu ut så här:

    <?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>
    

I det här skedet har du skapat ett Service Fabric-program för exemplet Spring Boot Getting Started som du kan distribuera till Service Fabric.

Köra appen lokalt

  1. Starta ditt lokala kluster på Ubuntu-datorer genom att köra följande kommando:

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

    Om du använder en Mac startar du det lokala klustret från Docker-avbildningen (detta antar att du har följt förutsättningarna för att konfigurera det lokala klustret för Mac).

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

    Det kan ta lite tid att starta det lokala klustret. För att bekräfta att klustret är helt aktiverat öppnar du Service Fabric Explorer på http://localhost:19080. När du ser fem felfria noder vet du att det lokala klustret är igång och redo.

    Service Fabric Explorer shows healthy nodes

  2. Öppna mappen gs-spring-boot/SpringServiceFabric.

  3. Kör följande kommando för att ansluta till det lokala klustret.

    sfctl cluster select --endpoint http://localhost:19080
    
  4. Kör skriptet install.sh .

    ./install.sh
    
  5. Öppna valfri webbläsare och öppna programmet genom att gå till http://localhost:8080.

    Spring Boot Service Fabric sample

Nu kan du komma åt Spring Boot-programmet som har distribuerats till ett Service Fabric-kluster.

Mer information finns i spring boot getting started-exemplet på Spring-webbplatsen.

Skala program och tjänster i ett kluster

Tjänsterna kan enkelt skalas över ett kluster om belastningen på tjänsterna ändras. Du kan skala en tjänst genom att ändra antalet instanser som körs i klustret. Det går att skala tjänsterna på flera sätt, till exempel med skript eller kommandon från Service Fabric CLI (sfctl). I följande steg använder du Service Fabric Explorer.

Service Fabric Explorer körs i alla Service Fabric-kluster och kan nås från en webbläsare genom att du bläddrar till klustrets HTTP-hanteringsport (19080), till exempel http://localhost:19080.

Så här skalar du webbklienttjänsten:

  1. Öppna Service Fabric Explorer i ditt kluster, till exempel http://localhost:19080.

  2. Välj ellipsen (...) bredvid noden fabric:/SpringServiceFabric/SpringGettingStarted i trädvyn och välj Skalningstjänst.

    Service Fabric Explorer scale service sample

    Du kan nu välja att skala antalet instanser av tjänsten.

  3. Ändra talet till 3 och välj Skalningstjänst.

    Ett annat sätt att skala tjänsten med hjälp av kommandoraden är som följer.

    # 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. Välj noden fabric:/SpringServiceFabric/SpringGettingStarted i trädvyn och expandera partitionsnoden (representeras av ett GUID).

    Service Fabric Explorer scale service complete

    Tjänsten har tre instanser, och trädvyn visar vilka noder instanserna körs på.

Med den här enkla hanteringsåtgärden har du dubblerat tillgängliga resurser för bearbetning av användarbelastningen i frontwebbtjänsten. Det är viktigt att förstå att du inte behöver flera instanser av en tjänst för att den ska kunna köras på ett tillförlitligt sätt. Om en tjänst misslyckas ser Service Fabric till att en ny tjänstinstans körs i klustret.

Redundanstjänster i ett kluster

För att demonstrera tjänstredundans simuleras en nodomstart med Service Fabric Explorer. Se till att endast en instans av din tjänst körs.

  1. Öppna Service Fabric Explorer i ditt kluster, till exempel http://localhost:19080.

  2. Välj ellipsen (...) bredvid noden som kör instansen av tjänsten och Starta om noden.

    Service Fabric Explorer restart node

  3. Instansen av tjänsten flyttas till en annan nod och ditt program får inget avbrott.

    Service Fabric Explorer restart node succeed

Nästa steg

I den här snabbstarten har du lärt dig att:

  • Distribuera ett Spring Boot-program till Service Fabric
  • Distribuera programmet till ditt lokala kluster
  • Skala ut programmet över flera noder
  • Utför redundans av tjänsten utan att påverka tillgängligheten

I självstudien för Java-appar finns mer information om hur du arbetar med Java-appar i Service Fabric.