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


Инфраструктура как код

В рабочем сценарии создайте кластеры Azure Service Fabric с помощью шаблонов Resource Manager. Шаблоны Resource Manager обеспечивают более широкий контроль над свойствами ресурсов и гарантируют, что у вас есть согласованная модель ресурсов.

Примеры шаблонов Resource Manager доступны для Windows и Linux в примерах Azure на GitHub. Их можно использовать в качестве отправной точки для создания шаблона кластера. Скачайте azuredeploy.json и azuredeploy.parameters.json измените их в соответствии с вашими пользовательскими требованиями.

Примечание.

Мы рекомендуем использовать модуль Azure Az PowerShell для взаимодействия с Azure. Сведения о начале работы см. в статье "Установка Azure PowerShell". Чтобы узнать, как перейти на модуль Az PowerShell, см. статью Миграция Azure PowerShell с AzureRM на Az.

Чтобы развернуть выше скачанные шаблоны azuredeploy.json и azuredeploy.parameters.json, используйте следующие команды Azure CLI:

ResourceGroupName="sfclustergroup"
Location="westus"

az group create --name $ResourceGroupName --location $Location 
az deployment group create --name $ResourceGroupName  --template-file azuredeploy.json --parameters @azuredeploy.parameters.json

Создание ресурса с помощью PowerShell

$ResourceGroupName="sfclustergroup"
$Location="westus"
$Template="azuredeploy.json"
$Parameters="azuredeploy.parameters.json"

New-AzResourceGroup -Name $ResourceGroupName -Location $Location
New-AzResourceGroupDeployment -Name $ResourceGroupName -TemplateFile $Template -TemplateParameterFile $Parameters

Ресурсы Service Fabric

Вы можете развертывать приложения и службы в кластере Service Fabric с помощью Azure Resource Manager. Дополнительные сведения см. в статье "Управление приложениями и службами в качестве ресурсов Azure Resource Manager ". Ниже приведены рекомендации по использованию конкретных ресурсов приложения Service Fabric для включения в ресурсы шаблона Resource Manager.

{
    "apiVersion": "2019-03-01",
    "type": "Microsoft.ServiceFabric/clusters/applicationTypes",
    "name": "[concat(parameters('clusterName'), '/', parameters('applicationTypeName'))]",
    "location": "[variables('clusterLocation')]",
},
{
    "apiVersion": "2019-03-01",
    "type": "Microsoft.ServiceFabric/clusters/applicationTypes/versions",
    "name": "[concat(parameters('clusterName'), '/', parameters('applicationTypeName'), '/', parameters('applicationTypeVersion'))]",
    "location": "[variables('clusterLocation')]",
},
{
    "apiVersion": "2019-03-01",
    "type": "Microsoft.ServiceFabric/clusters/applications",
    "name": "[concat(parameters('clusterName'), '/', parameters('applicationName'))]",
    "location": "[variables('clusterLocation')]",
},
{
    "apiVersion": "2019-03-01",
    "type": "Microsoft.ServiceFabric/clusters/applications/services",
    "name": "[concat(parameters('clusterName'), '/', parameters('applicationName'), '/', parameters('serviceName'))]",
    "location": "[variables('clusterLocation')]"
}

Чтобы развернуть приложение с помощью Azure Resource Manager, сначала необходимо создать пакет приложения sfpkg Service Fabric. Следующий скрипт Python — это пример создания sfpkg:

# Create SFPKG that needs to be uploaded to Azure Storage Blob Container
microservices_sfpkg = zipfile.ZipFile(
    self.microservices_app_package_name, 'w', zipfile.ZIP_DEFLATED)
package_length = len(self.microservices_app_package_path)

for root, dirs, files in os.walk(self.microservices_app_package_path):
    root_folder = root[package_length:]
    for file in files:
        microservices_sfpkg.write(os.path.join(
            root, file), os.path.join(root_folder, file))

microservices_sfpkg.close()

Конфигурация автоматического обновления ОС виртуальной машины

Обновление виртуальных машин — это операция, инициированная пользователем, и рекомендуется включить автоматическое обновление образа масштабируемого набора виртуальных машин для управления исправлениями узла кластера Service Fabric. Приложение оркестрации исправлений (POA) — это альтернативное решение, предназначенное для кластеров, не размещенных в Azure. Хотя POA можно использовать в Azure, его размещение требует больше усилий по управлению, чем просто включение автоматического обновления образа ОС для набора виртуальных машин. Ниже перечислены свойства шаблона Resource Manager для набора виртуальных машин с возможностью масштабирования, обеспечивающие автоматическое обновление ОС.

"upgradePolicy": {
   "mode": "Automatic",
   "automaticOSUpgradePolicy": {
        "enableAutomaticOSUpgrade": true,
        "disableAutomaticRollback": false
    }
},

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

Убедитесь, что для следующего раздела реестра задано значение false, чтобы предотвратить инициирование несогласованных обновлений на хост-компьютерах Windows: HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU.

Задайте следующие свойства шаблона масштабируемого набора виртуальных машин, чтобы отключить Центр обновления Windows:

"osProfile": {
        "computerNamePrefix": "{vmss-name}",
        "adminUsername": "{your-username}",
        "secrets": [],
        "windowsConfiguration": {
          "provisionVMAgent": true,
          "enableAutomaticUpdates": false
        }
      },

Конфигурация обновления кластера Service Fabric

Ниже приведено свойство шаблона кластера Service Fabric для включения автоматического обновления:

"upgradeMode": "Automatic",

Чтобы вручную обновить кластер, скачайте дистрибутив cab/deb на виртуальную машину кластера, а затем вызовите следующую команду PowerShell:

Copy-ServiceFabricClusterPackage -Code -CodePackagePath <"local_VM_path_to_msi"> -CodePackagePathInImageStore ServiceFabric.msi -ImageStoreConnectionString "fabric:ImageStore"
Register-ServiceFabricClusterPackage -Code -CodePackagePath "ServiceFabric.msi"
Start-ServiceFabricClusterUpgrade -Code -CodePackageVersion <"msi_code_version">

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