Поделиться через


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

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

Предпосылки

Скачивание примера

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

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

  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 отображает работоспособные узлы

  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

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

Дополнительные сведения см. в примере "Начало работы с Spring Boot" на веб-сайте Spring.

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

Службы можно масштабировать в кластере для изменения нагрузки на службы. Масштабируйте службу, изменив количество экземпляров, работающих в кластере. Существует множество способов масштабирования служб, например, вы можете использовать скрипты или команды из интерфейса командной строки 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

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

  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 завершена

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

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

Резервное переключение служб в кластере

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

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

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

    Перезапуск узла в Service Fabric Explorer

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

    Перезапуск узла в Service Fabric Explorer выполнен успешно

Дальнейшие действия

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

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

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