Развертывание кластера Service Fabric на платформе Linux в виртуальной сети Azure
Из этой статьи вы узнаете как развернуть кластер Service Fabric на платформе Linux в виртуальную сеть Azure с помощью Azure CLI и шаблона. После окончания этого учебника у вас будет кластер в облаке, в который можно разворачивать приложения. Создание кластера Windows с помощью PowerShell описывается в разделе Развертывание безопасного кластера Service Fabric на платформе Windows в виртуальной сети Azure.
Необходимые компоненты
Подготовка к работе:
- Если у вас еще нет подписки Azure, создайте бесплатную учетную запись.
- Установите интерфейс командной строки Service Fabric.
- Установите Azure CLI.
- Чтобы узнать об основных понятиях кластеров, прочитайте статью Общие сведения о кластерах Service Fabric в Azure.
- Спланируйте и подготовьте развертывание рабочего кластера.
Ниже приведены процедуры для создания кластера Service Fabric с семью узлами. Чтобы рассчитать затраты, связанные с запуском кластера Service Fabric в Azure, используйте калькулятор цен Azure.
Скачивание и изучение шаблона
Скачайте следующие файлы шаблона Resource Manager:
Для Ubuntu 18.04 LTS:
- AzureDeploy.json
- для атрибута vmImageSku задано значение "18.04-LTS"
- Ресурс Microsoft.ServiceFabric/clusters
- для параметра apiVersion задано значение "2019-03-01"
- Для свойства vmImage задано значение "Ubuntu18_04".
- AzureDeploy.Parameters.json
Для Ubuntu 20.04 LTS:
- AzureDeploy.json
- для атрибута vmImageSku задано значение "20.04-LTS"
- Ресурс Microsoft.ServiceFabric/clusters
- для параметра apiVersion задано значение "2019-03-01"
- для свойства vmImage задано значение "Ubuntu20_04"
- AzureDeploy.Parameters.json
Эти шаблоны позволяют развернуть безопасный кластер семи виртуальных машин и трех типов узлов в виртуальную сеть. Другие примеры шаблонов можно найти на сайте GitHub. Файл Azuredeploy.json развертывает ряд ресурсов, в том числе следующие.
Кластер Service Fabric
В ресурсе Microsoft.ServiceFabric/clusters развернут кластер Linux со следующими характеристиками:
- три типа узлов;
- пять узлов на первичном типе узла (можно настроить в параметрах шаблона), по одном узлу на каждый тип узла;
- ОС: (Ubuntu 18.04 LTS / Ubuntu 20.04) (настраивается в параметрах шаблона)
- защищенный сертификат (можно настроить в параметрах шаблона);
- служба DNS включена;
- уровень устойчивости Bronze (можно настроить в параметрах шаблона);
- уровень надежности Silver (можно настроить в параметрах шаблона);
- конечная точка подключения клиента: 19000 (можно настроить в параметрах шаблона);
- конечная точка HTTP-шлюза: 19080 (можно настроить в параметрах шаблона).
Azure Load Balancer
В ресурсе Microsoft.Network/loadBalancers настроена подсистема балансировки нагрузки, а также пробы и правила для следующих портов.
- конечная точка подключения клиента: 19000;
- конечная точка HTTP шлюза: 19080;
- порт приложения: 80;
- порт приложения: 443;
Виртуальная сеть и подсеть
В параметрах шаблона объявляются имена виртуальной сети и подсети. Адресные пространства виртуальной сети и подсети также объявляются в параметрах шаблона и настраиваются в ресурсе Microsoft.Network/virtualNetworks:
- адресное пространство виртуальной сети: 10.0.0.0/16;
- адресное пространство подсети Service Fabric: 10.0.2.0/24.
Если нужны другие порты приложений, нужно настроить ресурс Microsoft.Network/loadBalancers, чтобы разрешить входящий трафик.
Расширение Service Fabric
В ресурсе Microsoft.Compute/virtualMachineScaleSets настроено расширение Service Fabric Linux. Это расширение используется для загрузки Service Fabric в Azure Виртуальные машины и настройки безопасности узлов.
Ниже приведен фрагмент шаблона для расширения Service Fabric Linux:
"extensions": [
{
"name": "[concat('ServiceFabricNodeVmExt','_vmNodeType0Name')]",
"properties": {
"type": "ServiceFabricLinuxNode",
"autoUpgradeMinorVersion": true,
"enableAutomaticUpgrade": true,
"protectedSettings": {
"StorageAccountKey1": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('supportLogStorageAccountName')),'2015-05-01-preview').key1]",
},
"publisher": "Microsoft.Azure.ServiceFabric",
"settings": {
"clusterEndpoint": "[reference(parameters('clusterName')).clusterEndpoint]",
"nodeTypeRef": "[variables('vmNodeType0Name')]",
"durabilityLevel": "Silver",
"enableParallelJobs": true,
"nicPrefixOverride": "[variables('subnet0Prefix')]",
"certificate": {
"commonNames": [
"[parameters('certificateCommonName')]"
],
"x509StoreName": "[parameters('certificateStoreValue')]"
}
},
"typeHandlerVersion": "2.0"
}
},
Установка параметров шаблона
В файле параметров AzureDeploy.Parameters объявляются многие значения, используемые для развертывания кластера и связанных ресурсов. Далее представлены некоторые параметры, которые может понадобиться изменить для развертывания:
Параметр | Пример значения | Примечания. |
---|---|---|
adminUserName | vmadmin | Имя администратора кластера виртуальных машин. |
adminPassword | Password#1234 | Пароль администратора для кластера виртуальных машин. |
clusterName | mysfcluster123 | Имя кластера. |
расположение | southcentralus | Расположение кластера. |
certificateThumbprint | Если создается самозаверяющий сертификат или указывается файл сертификата, значение должно быть пустым. Если необходимо использовать имеющийся сертификат, который вы ранее передали в хранилище ключей, заполните значение отпечатка SHA1 сертификата. Например, 6190390162C988701DB5676EB81083EA608DCCF3. |
|
certificateUrlValue | Если создается самозаверяющий сертификат или указывается файл сертификата, значение должно быть пустым. Если необходимо использовать имеющийся сертификат, который вы ранее передали в хранилище ключей, укажите URL-адрес сертификата. Например, https://mykeyvault.vault.azure.net:443/secrets/mycertificate/02bea722c9ef4009a76c5052bcbf8346". |
|
sourceVaultValue | Если создается самозаверяющий сертификат или указывается файл сертификата, значение должно быть пустым. Если необходимо использовать имеющийся сертификат, который вы ранее передали в хранилище ключей, укажите сведения об исходном хранилище. Например, /subscriptions/333cc2c84-12fa-5778-bd71-c71c07bf873f/resourceGroups/MyTestRG/providers/Microsoft.KeyVault/vaults/MYKEYVAULT. |
Развертывание кластера и виртуальной сети
Настройте топологию сети и разверните кластер Service Fabric. Шаблон Resource Manager AzureDeploy.json создает виртуальную сеть (VNET) и подсеть для Service Fabric. Шаблон также развертывает кластер с включенным сертификатом безопасности. Для рабочих кластеров в качестве сертификата нужно использовать сертификат из центра сертификации (ЦС). Самозаверяющий сертификат можно использовать для защиты тестовых кластеров.
Шаблон в этой статье развертывает кластер, использующий отпечаток сертификата для идентификации сертификата кластера. Два сертификата не могут иметь один и тот же отпечаток. Это затрудняет управление сертификатами. Переключение развернутого кластера с использования отпечатков сертификата на использование общих имен сертификатов упрощает управление им. Сведения о том, как обновить кластер для использования общих имен сертификата для управления сертификатами, см. в статье Переход с отпечатка на общее имя сертификата для кластера.
Создание кластера с помощью имеющегося сертификата
В приведенном ниже сценарии используется команда az sf cluster create и шаблон, которые позволяют развернуть новый кластер с помощью имеющегося сертификата. Эта команда также создает хранилище ключей в Azure и отправляет сертификат.
ResourceGroupName="sflinuxclustergroup"
Location="southcentralus"
Password="q6D7nN%6ck@6"
VaultName="linuxclusterkeyvault"
VaultGroupName="linuxclusterkeyvaultgroup"
CertPath="C:\MyCertificates\MyCertificate.pem"
# sign in to your Azure account and select your subscription
az login
az account set --subscription <guid>
# Create a new resource group for your deployment and give it a name and a location.
az group create --name $ResourceGroupName --location $Location
# Create the Service Fabric cluster.
az sf cluster create --resource-group $ResourceGroupName --location $Location \
--certificate-password $Password --certificate-file $CertPath \
--vault-name $VaultName --vault-resource-group $ResourceGroupName \
--template-file AzureDeploy.json --parameter-file AzureDeploy.Parameters.json
Создание кластера с помощью нового самозаверяющего сертификата
В приведенном ниже сценарии используется команда az sf cluster create и шаблон, которые позволяют развернуть в Azure новый кластер. Кроме того, при помощи этой команды создается хранилище ключей в Azure, в него добавляется новый самозаверяющий сертификат и локально скачивается файл сертификата.
ResourceGroupName="sflinuxclustergroup"
ClusterName="sflinuxcluster"
Location="southcentralus"
Password="q6D7nN%6ck@6"
VaultName="linuxclusterkeyvault"
VaultGroupName="linuxclusterkeyvaultgroup"
CertPath="C:\MyCertificates"
az sf cluster create --resource-group $ResourceGroupName --location $Location \
--cluster-name $ClusterName --template-file C:\temp\cluster\AzureDeploy.json \
--parameter-file C:\temp\cluster\AzureDeploy.Parameters.json --certificate-password $Password \
--certificate-output-folder $CertPath --certificate-subject-name $ClusterName.$Location.cloudapp.azure.com \
--vault-name $VaultName --vault-resource-group $ResourceGroupName
Подключение к безопасному кластеру
Подключитесь к кластеру, выполнив в командной строке Service Fabric команду sfctl cluster select
и указав свой ключ. Примечание. Используйте параметр --no-verify только для самозаверяющего сертификата.
sfctl cluster select --endpoint https://aztestcluster.southcentralus.cloudapp.azure.com:19080 \
--pem ./aztestcluster201709151446.pem --no-verify
Выполните команду sfctl cluster health
, чтобы проверить подключение к кластеру и убедиться, что кластер работает.
sfctl cluster health
Очистка ресурсов
Если вы не собираетесь немедленно приступить к следующей статье, то можете удалить кластер, чтобы за него не взималась плата.
Следующие шаги
Узнайте, как масштабировать кластер.
Шаблон в этой статье развертывает кластер, использующий отпечаток сертификата для идентификации сертификата кластера. Два сертификата не могут иметь один и тот же отпечаток. Это затрудняет управление сертификатами. Переключение развернутого кластера с использования отпечатков сертификата на использование общих имен сертификатов упрощает управление им. Сведения о том, как обновить кластер для использования общих имен сертификата для управления сертификатами, см. в статье Переход с отпечатка на общее имя сертификата для кластера.