Inicio rápido: Implementación de una aplicación de Spring Boot de Java en Azure Service Fabric

En este inicio rápido, se implementa una aplicación de Spring Boot con Java en Azure Service Fabric mediante herramientas de línea de comandos conocidas en Linux o macOS. Azure Service Fabric es una plataforma de sistemas distribuidos para implementar y administrar microservicios y contenedores.

Requisitos previos

Descarga del ejemplo

En una ventana de terminal, ejecute el siguiente comando para clonar la aplicación de ejemplo de la introducción de Spring Boot en su máquina local.

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

Creación de una aplicación Spring Boot

En el directorio gs-spring-boot/complete, ejecute el comando siguiente para compilar la aplicación

./gradlew build

Empaquetado de una aplicación de Spring Boot

  1. En el directorio gs-spring-boot del clon, ejecute el comando yo azuresfguest.

  2. Escriba la siguiente información para cada mensaje.

    Spring Boot Yeoman entries

  3. En la carpeta SpringServiceFabric/SpringServiceFabric/SpringGettingStartedPkg/code, cree un archivo denominado entryPoint.sh. Agregue el siguiente código al archivo entryPoint.sh.

    #!/bin/bash
    BASEDIR=$(dirname $0)
    cd $BASEDIR
    java -jar *spring-boot*.jar
    
  4. Agregue el recurso Endpoints al archivo gs-spring-boot/SpringServiceFabric/SpringServiceFabric/SpringGettingStartedPkg/ServiceManifest.xml.

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

    El archivo ServiceManifest.xml ahora tiene este aspecto:

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

En este punto, ha creado una aplicación de Service Fabric del ejemplo Getting Started de Spring Boot que se puede implementar en Service Fabric.

Ejecución de la aplicación de forma local

  1. Inicie el clúster local en máquinas Ubuntu mediante la ejecución del siguiente comando:

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

    Si utiliza un equipo Mac, inicie el clúster local desde la imagen del Docker (suponiendo que ha seguido los requisitos previos para configurar el clúster local para Mac).

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

    El inicio del clúster local tarda algún tiempo. Para confirmar que el clúster está totalmente operativo, acceda a Service Fabric Explorer en http://localhost:19080. Los cinco nodos con estado correcto indican que el clúster local está en funcionamiento.

    Service Fabric Explorer shows healthy nodes

  2. Abra la carpeta gs-spring-boot/SpringServiceFabric.

  3. Ejecute el comando siguiente para conectarse a su clúster local.

    sfctl cluster select --endpoint http://localhost:19080
    
  4. Ejecute el script install.sh.

    ./install.sh
    
  5. Abra el explorador web favorito y acceda a la aplicación a través de http://localhost:8080.

    Spring Boot Service Fabric sample

Ahora puede acceder a la aplicación de Spring Boot que se implementó en un clúster de Service Fabric.

Para más información, consulte el ejemplo de la introducción de Spring Boot en el sitio web de Spring.

Escalar aplicaciones y servicios en un clúster

Los servicios se pueden escalar en un clúster para adaptarse a un cambio en la carga en los servicios. Para escalar un servicio, cambie el número de instancias que se ejecutan en el clúster. Hay muchas formas de escalar los servicios; por ejemplo, se pueden usar scripts o comandos de la CLI de Service Fabric (sfctl). En los pasos siguientes se utiliza Service Fabric Explorer.

Service Fabric Explorer se ejecuta en todos los clústeres de Service Fabric y se puede acceder a él desde un explorador. Para ello, vaya al puerto de administración HTTP de clústeres (19080); por ejemplo, http://localhost:19080.

Para escalar el servicio front-end web, realice estas operaciones:

  1. Abra Service Fabric Explorer en el clúster, por ejemplo, http://localhost:19080.

  2. Seleccione los puntos suspensivos (...) al lado del nodo fabric:/SpringServiceFabric/SpringGettingStarted en la vista de árbol y seleccione Escalar servicio.

    Service Fabric Explorer scale service sample

    Ahora puede escalar el número de instancias del servicio.

  3. Cambie el número a 3 y seleccione Scale Service (Escalar servicio).

    También puede escalar el servicio mediante la línea de comandos.

    # 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. Seleccione el nodo fabric:/SpringServiceFabric/SpringGettingStarted en la vista de árbol y expanda el nodo de partición (representado por un GUID).

    Service Fabric Explorer scale service complete

    El servicio tiene tres instancias y la vista de árbol muestra en qué nodos se ejecutan las instancias.

Mediante esta sencilla tarea de administración, hemos duplicado los recursos disponibles para el servicio de front-end para procesar la carga de usuarios. Es importante entender que no hacen falta varias instancias de un servicio para que se ejecute de forma confiable. Si se produce un error en un servicio, Service Fabric se asegurará de que se ejecute una nueva instancia de servicio en el clúster.

Servicios de conmutación por error en un clúster

Para demostrar la conmutación por error del servicio, se simula un reinicio del nodo mediante Service Fabric Explorer. Asegúrese de que solo se esté ejecutando una instancia del servicio.

  1. Abra Service Fabric Explorer en el clúster, por ejemplo, http://localhost:19080.

  2. Seleccione los puntos suspensivos (...) junto al nodo que ejecuta la instancia del servicio y reinicie el nodo.

    Service Fabric Explorer restart node

  3. La instancia del servicio se moverá a otro nodo y la aplicación no tendrá ningún tiempo de inactividad.

    Service Fabric Explorer restart node succeed

Pasos siguientes

En este inicio rápido ha aprendido a:

  • Implementación de una aplicación de Spring Boot en Service Fabric
  • Implementar la aplicación en el clúster local
  • Escalar horizontalmente la aplicación en varios nodos
  • Realización de la conmutación por error del servicio sin impacto en la disponibilidad

Para más información sobre cómo trabajar con aplicaciones Java en Service Fabric, diríjase al tutorial de las aplicaciones Java.