Partilhar via


Infraestrutura como código

Em um cenário de produção, crie clusters do Azure Service Fabric usando modelos do Resource Manager. Os modelos do Resource Manager fornecem maior controle das propriedades do recurso e garantem que você tenha um modelo de recurso consistente.

Os modelos do Resource Manager de exemplo estão disponíveis para Windows e Linux nos exemplos do Azure no GitHub. Esses modelos podem ser usados como um ponto de partida para seu modelo de cluster. Faça o download azuredeploy.json e azuredeploy.parameters.json edite-os para atender às suas necessidades personalizadas.

Nota

Recomendamos que utilize o módulo Azure Az do PowerShell para interagir com o Azure. Para começar, consulte Instalar o Azure PowerShell. Para saber como migrar para o módulo do Az PowerShell, veja Migrar o Azure PowerShell do AzureRM para o Az.

Para implantar os modelos e azuredeploy.parameters.json que azuredeploy.json você baixou acima, use os seguintes comandos da CLI do Azure:

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

Criando um recurso usando o 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

Recursos do Service Fabric

Pode implementar serviços e aplicações no seu cluster do Service Fabric através do Azure Resource Manager. Consulte Gerenciar aplicativos e serviços como recursos do Azure Resource Manager para obter detalhes. A seguir estão os recursos específicos do aplicativo Service Fabric de práticas recomendadas para incluir em seus recursos de modelo do 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')]"
}

Para implantar seu aplicativo usando o Gerenciador de Recursos do Azure, primeiro você deve criar um pacote de Aplicativo do Service Fabric sfpkg . O seguinte script Python é um exemplo de como criar um 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()

Configuração de atualização automática do SO da máquina virtual

A atualização de suas máquinas virtuais é uma operação iniciada pelo usuário e é recomendável habilitar as atualizações automáticas de imagem do conjunto de dimensionamento da máquina virtual para o gerenciamento de patches do nó de cluster do Service Fabric. O Patch Orchestration Application (POA) é uma solução alternativa destinada a clusters hospedados que não são do Azure. Embora o POA possa ser usado no Azure, hospedá-lo requer mais gerenciamento do que simplesmente habilitar atualizações automáticas de imagem do sistema operacional de conjunto de escala. A seguir estão as propriedades do modelo do Resource Manager do conjunto de dimensionamento da máquina virtual para habilitar atualizações automáticas do sistema operacional:

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

Ao usar atualizações automáticas do sistema operacional com o Service Fabric, a nova imagem do sistema operacional é implantada um domínio de atualização de cada vez para manter a alta disponibilidade dos serviços em execução no Service Fabric. Para utilizar as Atualizações Automáticas do SO no Service Fabric, o cluster deve ser configurado para usar o Nível de Durabilidade Silver ou superior.

Verifique se a seguinte chave do Registro está definida como false para impedir que suas máquinas host do Windows iniciem atualizações descoordenadas: HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU.

Defina as seguintes propriedades de modelo de conjunto de escala de máquina virtual para desabilitar o Windows Update:

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

Configuração de atualização de cluster do Service Fabric

A seguir está a propriedade do modelo de cluster do Service Fabric para habilitar a atualização automática:

"upgradeMode": "Automatic",

Para atualizar manualmente seu cluster, baixe a distribuição cab/deb para uma máquina virtual de cluster e invoque o seguinte 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">

Próximos passos