Краткое руководство. Развертывание контейнеров Linux в Service Fabric
Azure Service Fabric — это платформа распределенных систем для развертывания масштабируемых надежных микрослужб и контейнеров и управления ими.
В этом руководстве объясняется, как развертывать контейнеры Linux в кластер Service Fabric в Azure. Изучив это руководство, вы создадите приложение для голосования с веб-интерфейсом Python и серверной частью Redis, которое работает в кластере Service Fabric. Вы также узнаете, как выполнить отработку отказа приложения и масштабировать приложение в кластере.
Необходимые компоненты
Для работы с этим кратким руководством сделайте следующее:
Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начинать работу.
Установите Azure CLI.
Установите пакет SDK и CLI для Service Fabric.
Установка репозитория Git
Получение пакета приложения
Чтобы развернуть контейнеры в кластер Service Fabric, вам понадобится набор файлов манифеста (определение приложения), которые описывают отдельные контейнеры и приложение.
В консоли с помощью Git клонируйте копию определения приложения, а затем замените каталоги клонированного экземпляра каталогом Voting
.
git clone https://github.com/Azure-Samples/service-fabric-containers.git
cd service-fabric-containers/Linux/container-tutorial/Voting
Создание кластера Service Fabric
Чтобы развернуть приложение в Azure, требуется кластер Service Fabric, в котором будет выполняться приложение. С помощью следующих команд можно создать кластер из пяти узлов в Azure. Команды также создают самозаверяющий сертификат, добавляют его в хранилище ключей и скачивают сертификат локально. Новый сертификат используется для защиты кластера во время развертывания и для проверки подлинности клиентов.
При желании вы можете изменить значения переменных в нужное значение. Например, расположение westus вместо eastus.
Примечание.
Имена хранилищ ключей должны быть универсальными, так как доступ к ним выполняется в виде https://{имя-хранилища}.vault.azure.net.
#!/bin/bash
# Variables
ResourceGroupName='containertestcluster'
ClusterName='containertestcluster'
Location='eastus'
Password='q6D7nN%6ck@6'
Subject='containertestcluster.eastus.cloudapp.azure.com'
VaultName='containertestvault'
VmPassword='Mypa$$word!321'
VmUserName='sfadminuser'
# Login to Azure and set the subscription
az login
az account set --subscription <mySubscriptionID>
# Create resource group
az group create --name $ResourceGroupName --location $Location
# Create secure five node Linux cluster. Creates a key vault in a resource group
# and creates a certificate in the key vault. The certificate's subject name must match
# the domain that you use to access the Service Fabric cluster. The certificate is downloaded locally.
az sf cluster create --resource-group $ResourceGroupName --location $Location --certificate-output-folder . --certificate-password $Password --certificate-subject-name $Subject --cluster-name $ClusterName --cluster-size 5 --os UbuntuServer1804 --vault-name $VaultName --vault-resource-group $ResourceGroupName --vm-password $VmPassword --vm-user-name $VmUserName
Примечание.
Служба веб-интерфейса ожидает передачи данных через порт 80 для входящего трафика. По умолчанию порт 80 открыт в виртуальных машинах кластера и в подсистеме балансировки нагрузки Azure.
Настройка вашей среды
Service Fabric предоставляет ряд средств, которые можно использовать для управления кластером и его приложениями:
- средство Service Fabric Explorer на основе браузера;
- интерфейс командной строки (CLI) Service Fabric, который работает поверх Azure CLI;
- команды PowerShell.
При работе с этим кратким руководством используется интерфейс командной строки Service Fabric и Service Fabric Explorer (сетевой инструмент). Чтобы использовать Service Fabric Explorer, вам необходимо импортировать сертификат PFX-файла в браузер. По умолчанию PFX-файл не имеет пароля.
В Ubuntu 18.04 браузером по умолчанию является Mozilla Firefox. Чтобы импортировать сертификат в Firefox, нажмите кнопку меню в правом верхнем углу браузера, а затем щелкните Параметры. На странице Настройки введите в поле поиска слово "сертификаты". Нажмите кнопку Просмотр сертификатов, выберите вкладку Ваши сертификаты, щелкните Импорт и следуйте инструкциям на экране, чтобы импортировать сертификат.
Развертывание приложения Service Fabric
Подключитесь к кластеру Service Fabric в Azure с помощью CLI. Конечная точка — это конечная точка управления кластера. В предыдущем разделе вы создали PEM-файл.
sfctl cluster select --endpoint https://containertestcluster.eastus.cloudapp.azure.com:19080 --pem containertestcluster22019013100.pem --no-verify
С помощью скрипта установки, предназначенного для копирования определения приложения для голосования в кластер, зарегистрируйте тип приложения и создайте экземпляр приложения. Файл сертификата PEM должен находиться в том же каталоге, что и файл install.sh.
./install.sh
Откройте веб-браузер и перейдите в конечную точку Service Fabric Explorer для кластера. Конечная точка имеет следующий формат: https://<URL-адрес_кластера_Service_Fabric_Azure>:19080/Explorer, например,
https://containertestcluster.eastus.cloudapp.azure.com:19080/Explorer
.Разверните узел Приложения, чтобы увидеть запись для типа приложения голосования и созданный вами экземпляр.
Чтобы подключиться к запущенному контейнеру, откройте веб-браузер и перейдите по URL-адресу кластера, например
http://containertestcluster.eastus.cloudapp.azure.com:80
. Вы должны увидеть приложение голосования в браузере.
Примечание.
Можно также развернуть приложения Service Fabric с помощью Docker Compose. Например, следующую команду можно использовать для развертывания и установки приложения в кластере с помощью Docker Compose.
sfctl compose create --deployment-name TestApp --file-path ../docker-compose.yml
Отработка отказа контейнера в кластере
Платформа Service Fabric обеспечивает автоматический перенос экземпляров контейнера на другие узлы в кластере в случае сбоя. Можно также вручную перенести контейнеры с одного узла на другие узлы в кластере. Service Fabric предоставляет несколько способов масштабирования ваших служб. В приведенных далее шагах используется средство Service Fabric Explorer.
Чтобы выполнить отработку отказа внешнего контейнера, сделайте следующее:
Откройте Service Fabric Explorer в своем кластере (например, по ссылке
https://containertestcluster.eastus.cloudapp.azure.com:19080/Explorer
).Щелкните узел fabric:/Voting/azurevotefront в представлении в виде дерева и разверните узел раздела (он отображается в виде идентификатора GUID). Найдите имя узла в представлении в виде дерева с узлами, на которых сейчас выполняется контейнер. Пример:
_nodetype_1
.Разверните узел Узлы в представлении в виде дерева. Щелкните многоточие (…) рядом с узлом, на котором выполняется контейнер.
Выберите Перезапустить, чтобы перезапустить этот узел, и подтвердите операцию перезапуска. Перезапуск приведет к отработке отказа контейнера на другой узел в кластере.
Масштабирование приложений и служб в кластере
Службы Service Fabric можно легко масштабировать в пределах кластера в соответствии с изменениями нагрузки на службы. Масштабирование службы осуществляется путем изменения числа экземпляров, запущенных в кластере.
Для масштабирования службы веб-интерфейса выполните следующие действия:
Откройте Service Fabric Explorer в своем кластере (например, по ссылке
https://containertestcluster.eastus.cloudapp.azure.com:19080
).Щелкните многоточие (три точки) рядом с узлом fabric:/Voting/azurevotefront в представлении в виде дерева и выберите Масштабировать службу.
Теперь вы можете изменить количество экземпляров службы веб-интерфейса.
Измените количество на 2 и нажмите кнопку Масштабировать службу.
Щелкните узел fabric:/Voting/azurevotefront в представлении в виде дерева и разверните узел раздела (он отображается в виде идентификатора GUID).
Теперь вы можете увидеть два экземпляра службы. В представлении в виде дерева можно просмотреть, на каких узлах выполняются эти экземпляры.
С помощью этой простой задачи управления вы удвоили количество ресурсов для обработки пользовательской нагрузки для службы веб-интерфейса. Важно понимать, что для надежной работы службы не требуется запускать несколько экземпляров службы. При сбое в работе службы Service Fabric запускает новый экземпляр службы в кластере.
Очистка ресурсов
Чтобы удалить экземпляр приложения из кластера и отменить регистрацию типа приложения, используйте скрипт удаления (uninstall.sh), указанный в шаблоне. Очистка экземпляра займет некоторое время. Поэтому не следует запускать скрипт установки сразу же после выполнения скрипта удаления. С помощью Service Fabric Explorer вы сможете определить, что экземпляр удален, а регистрация типа приложения отменена.
./uninstall.sh
Чтобы удалить кластер и все ресурсы, который он использует, проще всего удалить группу ресурсов.
Войдите в Azure и выберите идентификатор подписки, в которой вы хотите удалить кластер. Идентификатор подписки можно узнать, войдя на портал Azure. Удалите группу ресурсов и все ресурсы кластера с помощью команды az group delete.
az login
az account set --subscription <guid>
ResourceGroupName="containertestcluster"
az group delete --name $ResourceGroupName
По завершении работы с кластером можно удалить сертификат из хранилища сертификатов. Например:
- В Windows: используйте оснастку MMC для сертификатов. При добавлении оснастки не забудьте выбрать свою учетную запись пользователя. Перейдите в папку
Certificates - Current User\Personal\Certificates
и удалите сертификат. - В Mac: используйте приложение цепочки ключей.
- В Ubuntu: выполните шаги, которые вы использовали для просмотра сертификатов, и удалите сертификат.
Следующие шаги
Из этого краткого руководства вы узнали, как развернуть приложение-контейнер Linux в кластере Service Fabric в Azure, выполнить отработку отказа для приложения и масштабировать приложение в кластере. Дополнительные сведения о работе с контейнерами Linux в Service Fabric см. в руководстве для приложений-контейнеров Linux.