Краткое руководство. Развертывание приложения 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
В каталоге gs-spring-boot клонированного приложения выполните команду
yo azuresfguest
.Введите следующие сведения для каждого запроса.
В папке SpringServiceFabric/SpringServiceFabric/SpringGettingStartedPkg/code создайте файл с именем entryPoint.sh. Добавьте в файл entryPoint.sh следующий код.
#!/bin/bash BASEDIR=$(dirname $0) cd $BASEDIR java -jar *spring-boot*.jar
Добавьте ресурс 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.
Локальный запуск приложения
Запустите локальный кластер на компьютерах 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
. Наличие пяти работоспособных узлов означает, что локальный кластер запущен и работает.Откройте папку gs-spring-boot/SpringServiceFabric.
Выполните следующую команду, чтобы подключиться к локальному кластеру.
sfctl cluster select --endpoint http://localhost:19080
Выполните сценарий install.sh.
./install.sh
Откройте любой веб-браузер и перейдите к приложению по адресу
http://localhost:8080
.
Теперь вы можете получить доступ к приложению Spring Boot, которое развернуто в кластере Service Fabric.
Дополнительные сведения см. на странице начального приложения Spring Boot.
Масштабирование приложений и служб в кластере
Службы могут легко масштабироваться в кластере с учетом изменения нагрузки на них. Масштабирование службы осуществляется путем изменения числа экземпляров, запущенных в кластере. Существует множество способов масштабирования служб. Например, можно использовать скрипты или команды интерфейса командной строки Service Fabric (sfctl). В следующих шагах используется Service Fabric Explorer.
Средство Service Fabric Explorer работает во всех кластерах Service Fabric. Чтобы его открыть, укажите адрес кластера и порт управления HTTP (19080) для кластера в адресной строке браузера, например http://localhost:19080
.
Для масштабирования службы веб-интерфейса сделайте следующее:
Откройте Service Fabric Explorer в своем кластере (например, по ссылке
http://localhost:19080
).Щелкните многоточие (...) рядом с узлом fabric:/SpringServiceFabric/SpringGettingStarted в представлении в виде дерева и выберите Масштабировать службу.
Теперь вы можете выбрать нужное количество экземпляров службы.
Измените количество на 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
Выберите узел fabric:/SpringServiceFabric/SpringGettingStarted в представлении в виде дерева и разверните узел раздела (здесь отображается его идентификатор GUID).
У службы есть три экземпляра. Представление в виде дерева демонстрирует, на каких узлах они запущены.
С помощью этой простой задачи управления вы удвоили количество ресурсов для обработки пользовательской нагрузки для службы веб-интерфейса. Важно понимать, что для надежной работы службы не требуется запускать несколько экземпляров службы. При сбое в работе службы Service Fabric запускает новый экземпляр службы в кластере.
Службы отработки отказа в кластере
Чтобы продемонстрировать отработку отказа службы, с помощью Service Fabric Explorer моделируется перезагрузка узла. Убедитесь, что запущен только один экземпляр службы.
Откройте Service Fabric Explorer в своем кластере (например, по ссылке
http://localhost:19080
).Щелкните многоточие (...) рядом с узлом, на котором запущен экземпляр этой службы, и перезапустите узел.
Этот экземпляр службы перемещается в другой узел без простоев в работе приложения.
Следующие шаги
Из этого руководства вы узнали, как выполнить следующие действия:
- Развертывание приложения Spring Boot в Service Fabric
- Развертывание приложения в локальном кластере.
- Масштабирование приложения на несколько узлов
- Отработка отказа службы без ущерба для ее доступности
Дополнительные сведения о работе с приложениями Java в Service Fabric см. в руководстве по приложениям Java.