Краткое руководство. Развертывание приложения Java Spring Boot в Azure Service Fabric

В этом кратком руководстве показано развертывание приложения Java Spring Boot в Azure Service Fabric, с использованием уже знакомых средств командной строки в Linux или macOS. Azure Service Fabric — это платформа распределенных систем для развертывания микрослужб и контейнеров и управления ими.

Необходимые компоненты

Скачивание примера приложения

В окне терминала выполните следующую команду, чтобы клонировать пример начального приложения Spring Boot на локальный компьютер.

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

Создание приложения Spring Boot

В каталоге gs-spring-boot/complete выполните указанную ниже команду, чтобы скомпилировать приложение.

./gradlew build

Упаковка приложения Spring Boot

  1. В каталоге gs-spring-boot клонированного приложения выполните команду yo azuresfguest.

  2. Введите следующие сведения для каждого запроса.

    Spring Boot Yeoman entries

  3. В папке SpringServiceFabric/SpringServiceFabric/SpringGettingStartedPkg/code создайте файл с именем entryPoint.sh. Добавьте в файл entryPoint.sh следующий код.

    #!/bin/bash
    BASEDIR=$(dirname $0)
    cd $BASEDIR
    java -jar *spring-boot*.jar
    
  4. Добавьте ресурс Endpoints в файл gs-spring-boot/SpringServiceFabric/SpringServiceFabric/SpringGettingStartedPkg/ServiceManifest.xml.

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

    Файл ServiceManifest.xml теперь выглядит следующим образом:

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

Итак, на данный момент у вас есть приложение Service Fabric, созданное на основе примера "Начало работы" для Spring Boot, которое теперь можно развернуть в Service Fabric.

Локальный запуск приложения

  1. Запустите локальный кластер на компьютерах Ubuntu, выполнив следующую команду:

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

    Если вы пользуетесь компьютером Mac, запустите локальный кластер из образа Docker (при условии, что выполнены предварительные требования по настройке локального кластера для Mac).

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

    Запуск локального кластера занимает некоторое время. Чтобы убедиться, что кластер работает, откройте Service Fabric Explorer по адресу http://localhost:19080. Наличие пяти работоспособных узлов означает, что локальный кластер запущен и работает.

    Service Fabric Explorer shows healthy nodes

  2. Откройте папку gs-spring-boot/SpringServiceFabric.

  3. Выполните следующую команду, чтобы подключиться к локальному кластеру.

    sfctl cluster select --endpoint http://localhost:19080
    
  4. Выполните сценарий install.sh.

    ./install.sh
    
  5. Откройте любой веб-браузер и перейдите к приложению по адресу http://localhost:8080.

    Spring Boot Service Fabric sample

Теперь вы можете получить доступ к приложению Spring Boot, которое развернуто в кластере Service Fabric.

Дополнительные сведения см. на странице начального приложения Spring Boot.

Масштабирование приложений и служб в кластере

Службы могут легко масштабироваться в кластере с учетом изменения нагрузки на них. Масштабирование службы осуществляется путем изменения числа экземпляров, запущенных в кластере. Существует множество способов масштабирования служб. Например, можно использовать скрипты или команды интерфейса командной строки Service Fabric (sfctl). В следующих шагах используется Service Fabric Explorer.

Средство Service Fabric Explorer работает во всех кластерах Service Fabric. Чтобы его открыть, укажите адрес кластера и порт управления HTTP (19080) для кластера в адресной строке браузера, например http://localhost:19080.

Для масштабирования службы веб-интерфейса сделайте следующее:

  1. Откройте Service Fabric Explorer в своем кластере (например, по ссылке http://localhost:19080).

  2. Щелкните многоточие (...) рядом с узлом fabric:/SpringServiceFabric/SpringGettingStarted в представлении в виде дерева и выберите Масштабировать службу.

    Service Fabric Explorer scale service sample

    Теперь вы можете выбрать нужное количество экземпляров службы.

  3. Измените количество на 3 и щелкните Масштабировать службу.

    Масштабирование службы можно настроить и с помощью командной строки, как описано ниже.

    # 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. Выберите узел fabric:/SpringServiceFabric/SpringGettingStarted в представлении в виде дерева и разверните узел раздела (здесь отображается его идентификатор GUID).

    Service Fabric Explorer scale service complete

    У службы есть три экземпляра. Представление в виде дерева демонстрирует, на каких узлах они запущены.

С помощью этой простой задачи управления вы удвоили количество ресурсов для обработки пользовательской нагрузки для службы веб-интерфейса. Важно понимать, что для надежной работы службы не требуется запускать несколько экземпляров службы. При сбое в работе службы Service Fabric запускает новый экземпляр службы в кластере.

Службы отработки отказа в кластере

Чтобы продемонстрировать отработку отказа службы, с помощью Service Fabric Explorer моделируется перезагрузка узла. Убедитесь, что запущен только один экземпляр службы.

  1. Откройте Service Fabric Explorer в своем кластере (например, по ссылке http://localhost:19080).

  2. Щелкните многоточие (...) рядом с узлом, на котором запущен экземпляр этой службы, и перезапустите узел.

    Service Fabric Explorer restart node

  3. Этот экземпляр службы перемещается в другой узел без простоев в работе приложения.

    Service Fabric Explorer restart node succeed

Следующие шаги

Из этого руководства вы узнали, как выполнить следующие действия:

  • Развертывание приложения Spring Boot в Service Fabric
  • Развертывание приложения в локальном кластере.
  • Масштабирование приложения на несколько узлов
  • Отработка отказа службы без ущерба для ее доступности

Дополнительные сведения о работе с приложениями Java в Service Fabric см. в руководстве по приложениям Java.