Share via


Infraestrutura como código

Num cenário de produção, crie clusters do Azure Service Fabric com Resource Manager modelos. Resource Manager modelos fornecem um maior controlo das propriedades dos recursos e garantem que tem um modelo de recursos consistente.

Os modelos de Resource Manager de exemplo estão disponíveis para Windows e Linux nos exemplos do Azure no GitHub. Estes modelos podem ser utilizados como um ponto de partida para o modelo de cluster. Transfira azuredeploy.json e azuredeploy.parameters.json edite-os para satisfazer os seus requisitos personalizados.

Nota

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

Para implementar os azuredeploy.json modelos e azuredeploy.parameters.json que transferiu acima, utilize 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

Criar um recurso com 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 aplicações e serviços no cluster do Service Fabric através do Azure Resource Manager. Veja Gerir aplicações e serviços como recursos do Azure Resource Manager para obter detalhes. Seguem-se os recursos específicos da aplicação do Service Fabric de melhores práticas para incluir nos seus recursos de modelo 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 implementar a sua aplicação com o Azure Resource Manager, primeiro tem de criar um pacote de Aplicação do Service Fabric de 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 das máquinas virtuais é uma operação iniciada pelo utilizador e recomenda-se que ative as atualizações automáticas de imagens do conjunto de dimensionamento de máquinas virtuais para a gestão de patches de nós do cluster do Service Fabric. A Aplicação de Orquestração de Patches (POA) é uma solução alternativa que se destina a clusters não alojados no Azure. Embora a POA possa ser utilizada no Azure, aloja-a requer mais gestão do que simplesmente ativar atualizações automáticas da imagem do SO do conjunto de dimensionamento. Seguem-se o conjunto de dimensionamento de máquinas virtuais Resource Manager propriedades do modelo para ativar as atualizações automáticas do SO:

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

Ao utilizar atualizações automáticas do SO com o Service Fabric, a nova imagem do SO é lançada um Domínio de Atualização de cada vez para manter a elevada disponibilidade dos serviços em execução no Service Fabric. Para utilizar As Atualizações Automáticas do SO no Service Fabric, o cluster tem de estar configurado para utilizar o Escalão de Durabilidade De Prata ou superior.

Certifique-se de que a seguinte chave de registo está definida como falsa para impedir que os computadores anfitriões do Windows iniciem atualizações descoordenadas: HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU.

Defina as seguintes propriedades do modelo do conjunto de dimensionamento de máquinas virtuais para desativar Windows Update:

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

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

Segue-se a propriedade modelo de cluster do Service Fabric para ativar a atualização automática:

"upgradeMode": "Automatic",

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

Passos seguintes