Condividi tramite


Infrastruttura come codice

In uno scenario di produzione, creare i cluster Azure Service Fabric usando i modelli di Resource Manager. I modelli di Resource Manager offrono un maggiore controllo delle proprietà delle risorse e assicurano di avere a disposizione un modello di risorse coerente.

Tra gli esempi di Azure su GitHub sono disponibili alcuni modelli di Resource Manager di esempio per Windows e Linux. Questi modelli possono essere usati come punto di partenza per il modello del cluster. Scaricare azuredeploy.json e azuredeploy.parameters.json e modificarli in modo da soddisfare i requisiti personalizzati.

Nota

È consigliabile usare il modulo Azure Az PowerShell per interagire con Azure. Per iniziare, vedere Installare Azure PowerShell. Per informazioni su come eseguire la migrazione al modulo AZ PowerShell, vedere Eseguire la migrazione di Azure PowerShell da AzureRM ad Az.

Per distribuire i modelli azuredeploy.json e azuredeploy.parameters.json scaricati in precedenza, usare i comandi dell'interfaccia della riga di comando di Azure seguenti:

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

Creazione di una risorsa con 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

Risorse di Service Fabric

È possibile distribuire applicazioni e servizi in un cluster di Service Fabric tramite Azure Resource Manager. Per altri dettagli, vedere Gestire applicazioni e servizi come risorse di Azure Resource Manager. Il codice seguente include le risorse specifiche dell'applicazione Service Fabric consigliate da includere nelle risorse dei modelli di 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')]"
}

Per distribuire l'applicazione usando Azure Resource Manager, è prima di tutto necessario creare un pacchetto dell'applicazione Service Fabric con estensione sfpkg. Lo script Python seguente è un esempio di come creare un 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()

Configurazione dell'aggiornamento automatico del sistema operativo della macchina virtuale

L'aggiornamento delle macchine virtuali è un'operazione avviata dall'utente ed è consigliabile abilitare gli aggiornamenti automatici delle immagini del set di scalabilità di macchine virtuali per la gestione delle patch dei nodi del cluster di Service Fabric. Patch Orchestration Application (POA) è una soluzione alternativa destinata ai cluster non ospitati in Azure. Anche se è possibile usare POA in Azure, l'hosting richiede una gestione maggiore rispetto all'abilitazione degli aggiornamenti automatici delle immagini del sistema operativo del set di scalabilità. Di seguito sono riportate le proprietà del modello di Resource Manager del set di scalabilità di macchine virtuali per abilitare gli aggiornamenti automatici del sistema operativo:

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

Quando si usano gli aggiornamenti automatici del sistema operativo con Service Fabric, la nuova immagine del sistema operativo viene distribuita un dominio di aggiornamento alla volta per mantenere la disponibilità elevata dei servizi in esecuzione in Service Fabric. Per usare gli aggiornamenti automatici del sistema operativo in Service Fabric, il cluster deve essere configurato per l'uso del livello di durabilità Silver o superiore.

Verificare che la chiave del Registro di sistema seguente sia impostata su false per impedire che i computer host Windows avviino aggiornamenti non coordinati: HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU.

Impostare le proprietà del modello del set di scalabilità di macchine virtuali seguenti per disabilitare Windows Update:

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

Configurazione dell'aggiornamento del cluster di Service Fabric

Di seguito è riportata la proprietà del modello di cluster di Service Fabric per abilitare l'aggiornamento automatico:

"upgradeMode": "Automatic",

Per aggiornare manualmente il cluster, scaricare la distribuzione cab/deb in una macchina virtuale del cluster e quindi richiamare il comando PowerShell seguente:

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">

Passaggi successivi