Backup e ripristino periodici in un cluster di Azure Service Fabric

Azure Service Fabric è una piattaforma di sistemi distribuiti che semplifica lo sviluppo e la gestione di applicazioni cloud basate su microservizi distribuiti e affidabili. Consente l'esecuzione di microservizi senza stato e con stato. I servizi con stato possono mantenere lo stato modificabile e autorevole oltre alla richiesta e alla risposta o una transazione completa. Se un servizio con stato non funziona per molto tempo o perde informazioni a causa di un'emergenza, potrebbe essere necessario ripristinare un backup recente del relativo stato per poter continuare a fornire il servizio dopo il back up.

Service Fabric consente di replicare lo stato tra più nodi per assicurarsi che il servizio sia a disponibilità elevata. Anche in caso di errore di un nodo nel cluster, il servizio rimarrà quindi comunque disponibile. In alcuni casi, tuttavia, è comunque preferibile che i dati del servizio siano protetti contro errori maggiori.

Ad esempio, è possibile che in un servizio sia consigliabile eseguire il backup dei dati per evitare gli scenari seguenti:

  • Perdita definitiva di un intero cluster di Service Fabric.
  • Perdita definitiva della maggior parte delle repliche di una partizione del servizio.
  • Errori amministrativi che provocano l'eliminazione o il danneggiamento accidentale dello stato. Ad esempio, un amministratore con i privilegi sufficienti elimina accidentalmente il servizio.
  • Bug nel servizio che provocano il danneggiamento dei dati. Ad esempio, questo problema può verificarsi quando un aggiornamento del codice di servizio inizia a scrivere dati non corretti in una raccolta Reliable Collections. In tal caso, potrebbe essere necessario ripristinare uno stato precedente sia per il codice che per i dati.
  • Elaborazione dati offline. Potrebbe essere utile eseguire offline l'elaborazione dei dati per la business intelligence separatamente dal servizio che genera i dati.

Service Fabric fornisce un'API incorporata per eseguire backup e ripristino in un determinato momento. Gli sviluppatori di applicazioni possono usare queste API per eseguire periodicamente il backup dello stato del servizio. Inoltre, se gli amministratori del servizio desiderano attivare un backup dall'esterno del servizio in un momento specifico, ad esempio prima di aggiornare l'applicazione, gli sviluppatori devono esporre il backup (e il ripristino) come API dal servizio. Mantenere i backup rappresenta un costo aggiuntivo ulteriore. Ad esempio, potrebbe essere necessario eseguire cinque backup incrementali ogni mezz'ora, seguiti da un backup completo. Dopo il backup completo, è possibile eliminare i backup incrementali precedenti. Questo approccio richiede un codice aggiuntivo che comporta costi ulteriori durante lo sviluppo delle applicazioni.

Il servizio di backup e ripristino in Service Fabric consente di eseguire in modo semplice e automatico il backup delle informazioni archiviate nei servizi con stato. Il backup periodico dei dati delle applicazioni è fondamentale per la protezione dalla perdita di dati e la mancata disponibilità dei servizi. Service Fabric fornisce un servizio opzionale di backup e ripristino, che consente di configurare il backup periodico dei servizi Reliable con stato (inclusi i servizi Actor) senza dover scrivere alcun codice aggiuntivo. Facilita inoltre il ripristino dei backup precedentemente eseguiti.

Service Fabric fornisce un set di API per ottenere le seguenti funzionalità relative alle funzioni di backup e ripristino periodico:

  • Pianificazione del backup periodico dei servizi Reliable con stato e Reliable Actors con supporto per il caricamento del backup in posizioni di archiviazione (esterne). Posizioni di archiviazione supportate
    • Archiviazione di Azure
    • Condivisione di file (locale)
  • Enumerazione di backup
  • Attivare un backup ad hoc di una partizione
  • Ripristino di una partizione utilizzando un backup precedente
  • Sospensione temporanea dei backup
  • Gestione della memorizzazione dei backup (a breve)

Prerequisiti

  • Cluster di Service Fabric con Fabric versione 6.4 o successiva. Fare riferimento a questo articolo per informazioni sulla procedura per la creazione del cluster di Service Fabric con il modello di risorse di Azure.
  • Certificato X.509 per la crittografia dei dati, necessario per connettersi alla risorsa di archiviazione e archiviare i backup. Fare riferimento all’articolo per sapere come ottenere o creare un certificato X.509.
  • Applicazione Reliable di Service Fabric con informazioni sullo stato, creata utilizzando Service Fabric SDK versione 3.0 o versione successiva. Per le applicazioni destinate a .NET Core 2.0, l'applicazione deve essere compilata usando Service Fabric SDK versione 3.1 o successiva.
  • Creare un account di archiviazione di Azure per i backup dell'applicazione.
  • Installare Microsoft.ServiceFabric.Powershell.Http Module (anteprima) per effettuare chiamate di configurazione.
    Install-Module -Name Microsoft.ServiceFabric.Powershell.Http -AllowPrerelease

Nota

Se la versione di PowerShellGet è inferiore alla 1.6.0, è necessario eseguire l'aggiornamento per aggiungere il supporto per il flag -AllowPrerelease :

Install-Module -Name PowerShellGet -Force

  • Assicurarsi che Cluster sia connesso usando il Connect-SFCluster comando prima di effettuare qualsiasi richiesta di configurazione usando Il modulo Microsoft.ServiceFabric.Powershell.Http.

    Connect-SFCluster -ConnectionEndpoint 'https://mysfcluster.southcentralus.cloudapp.azure.com:19080'   -X509Credential -FindType FindByThumbprint -FindValue '1b7ebe2174649c45474a4819dafae956712c31d3' -StoreLocation 'CurrentUser' -StoreName 'My' -ServerCertThumbprint '1b7ebe2174649c45474a4819dafae956712c31d3'

Abilitare il servizio di backup e ripristino

Uso del portale di Azure

Casella di controllo Abilita Include backup restore service nella Cluster Configuration+ Show optional settings scheda .

Abilitare il servizio di ripristino di backup con il portale

Uso del modello di Azure Resource Manager

È innanzitutto necessario abilitare il servizio di backup e ripristino nel cluster. Ottenere il modello per il cluster che si vuole distribuire. È possibile usare i modelli di esempio o creare un modello di Resource Manager. Per abilitare il servizio di backup e ripristino, seguire questa procedura:

  1. Verificare che apiversion sia impostato su 2018-02-01 per la risorsa Microsoft.ServiceFabric/clusters e, se non lo è, aggiornarlo come illustrato nel frammento seguente:

    {
        "apiVersion": "2018-02-01",
        "type": "Microsoft.ServiceFabric/clusters",
        "name": "[parameters('clusterName')]",
        "location": "[parameters('clusterLocation')]",
        ...
    }
    
  2. A questo punto, abilitare il servizio di backup e ripristino aggiungendo la sezione addonFeaturesseguente sotto la sezione properties , come illustrato nel frammento seguente:

        "properties": {
            ...
            "addonFeatures":  ["BackupRestoreService"],
            "fabricSettings": [ ... ]
            ...
        }
    
    
  3. Configurare il certificato X.509 per la crittografia delle credenziali. Questo è importante per garantire che le credenziali fornite per connettersi alla risorsa di archiviazione vengano crittografate prima di renderle permanenti. Configurare il certificato di crittografia aggiungendo la sezione BackupRestoreService sotto la sezione fabricSettings come illustrato nel frammento seguente:

    "properties": {
        ...
        "addonFeatures": ["BackupRestoreService"],
        "fabricSettings": [{
            "name": "BackupRestoreService",
            "parameters":  [{
                "name": "SecretEncryptionCertThumbprint",
                "value": "[Thumbprint]"
            },{
                "name": "SecretEncryptionCertX509StoreName",
                "value": "My"
            }]
        }
        ...
    }
    

    Nota

    [Identificazione personale] deve essere sostituito da un'identificazione personale del certificato valida da usare per la crittografia.

  4. Dopo avere aggiornato il modello di cluster con le modifiche precedenti, applicarle e consentire il completamento dell'aggiornamento/implementazione. Al termine della procedura, il servizio di backup e ripristino inizia l'esecuzione del cluster. L'Uri di questo servizio è fabric:/System/BackupRestoreService e il servizio può essere individuato in Service Fabric Explorer.

Abilita i backup periodici per servizio Reliable con stato e Reliable Actors

Seguire il procedimento per abilitare i backup periodici per servizio Reliable con stato e Reliable Actors. Questi passaggi presuppongono che

  • Che il cluster sia installato utilizzando il certificato di sicurezza X.509 con backup e ripristino del servizio.
  • Un servizio Reliable con stato venga distribuito nel cluster. Ai fini della presente Guida rapida, l'applicazione Uri è fabric:/SampleApp e il servizio Uri per il servizio Reliable con stato appartenente a questa applicazione è fabric:/SampleApp/MyStatefulService. Questo servizio viene distribuito con singola partizione e l'ID di partizione è 974bd92a-b395-4631-8a7f-53bd4ae9cf22.
  • Il certificato client con ruolo di amministratore è installato in My (Personale) nome di archivio CurrentUser percorso del certificato dal computer da cui gli script seguenti verranno richiamati. Questo esempio utilizza 1b7ebe2174649c45474a4819dafae956712c31d3 come identificazione personale del certificato. Per altre informazioni sui certificati client, vedere Controllo degli accessi in base al ruolo per i client di Service Fabric.

Creare criteri di backup

Il primo passo consiste nel creare criteri di backup che descrivano la pianificazione del backup, la risorsa di archiviazione di destinazione per i dati di backup, il nome dei criteri e i backup incrementali massimi consentiti prima dell'avvio del backup completo e i criteri di conservazione per l'archivio di backup.

Per l'archiviazione di backup, utilizzare l'archiviazione dell’account Azure creato in precedenza. Il contenitore backup-container è configurato per archiviare i backup. Un contenitore con questo nome viene creato, se non esiste già, durante il caricamento del backup. Popolare ConnectionString con una stringa di connessione valida per l'account di Archiviazione di Azure, sostituendo account-name con il nome dell'account di archiviazione, e account-key con la chiave dell'account di archiviazione.

PowerShell con il modulo Microsoft.ServiceFabric.Powershell.Http

Eseguire i cmdlet di PowerShell seguenti per la creazione di nuovi criteri di backup. Sostituire account-name con il nome dell'account di archiviazione e account-key con la chiave dell'account di archiviazione.


New-SFBackupPolicy -Name 'BackupPolicy1' -AutoRestoreOnDataLoss $true -MaxIncrementalBackups 20 -FrequencyBased -Interval 00:15:00 -AzureBlobStore -ConnectionString 'DefaultEndpointsProtocol=https;AccountName=<account-name>;AccountKey=<account-key>;EndpointSuffix=core.windows.net' -ContainerName 'backup-container' -Basic -RetentionDuration '10.00:00:00'

Chiamata REST con PowerShell

Eseguire lo script PowerShell seguente per richiamare le API REST necessarie per creare un nuovo criterio. Sostituire account-name con il nome dell'account di archiviazione e account-key con la chiave dell'account di archiviazione.

$StorageInfo = @{
    ConnectionString = 'DefaultEndpointsProtocol=https;AccountName=<account-name>;AccountKey=<account-key>;EndpointSuffix=core.windows.net'
    ContainerName = 'backup-container'
    StorageKind = 'AzureBlobStore'
}

$ScheduleInfo = @{
    Interval = 'PT15M'
    ScheduleKind = 'FrequencyBased'
}

$RetentionPolicy = @{
    RetentionPolicyType = 'Basic'
    RetentionDuration =  'P10D'
}

$BackupPolicy = @{
    Name = 'BackupPolicy1'
    MaxIncrementalBackups = 20
    Schedule = $ScheduleInfo
    Storage = $StorageInfo
    RetentionPolicy = $RetentionPolicy
}

$body = (ConvertTo-Json $BackupPolicy)
$url = "https://mysfcluster.southcentralus.cloudapp.azure.com:19080/BackupRestore/BackupPolicies/$/Create?api-version=6.4"

Invoke-WebRequest -Uri $url -Method Post -Body $body -ContentType 'application/json' -CertificateThumbprint '1b7ebe2174649c45474a4819dafae956712c31d3'

Uso di Service Fabric Explorer

  1. In Service Fabric Explorer passare alla scheda Backup e selezionare Azioni > Crea criteri di backup.

    Creare criteri di backup

  2. Compilare le informazioni. Per informazioni dettagliate su come specificare un intervallo basato sulla frequenza, vedere la proprietà TimeGrain. Per i cluster di Azure, AzureBlobStore deve essere selezionato.

    Creare criteri di backup Archiviazione BLOB di Azure

Abilitare il backup periodico

Dopo aver definito il criterio di backup per soddisfare i requisiti di protezione dei dati dell'applicazione, il criterio di backup deve essere associato all'applicazione. A seconda del requisito, il criterio di backup può essere associato a un'applicazione, un servizio o una partizione.

PowerShell con Microsoft.ServiceFabric.Powershell.Http Module


Enable-SFApplicationBackup -ApplicationId 'SampleApp' -BackupPolicyName 'BackupPolicy1'

Chiamata rest con PowerShell

Eseguire lo script PowerShell seguente per richiamare l'API REST necessaria per associare il criterio di backup al nome BackupPolicy1 creato nel passaggio precedente con l'applicazione SampleApp.

$BackupPolicyReference = @{
    BackupPolicyName = 'BackupPolicy1'
}

$body = (ConvertTo-Json $BackupPolicyReference)
$url = "https://mysfcluster.southcentralus.cloudapp.azure.com:19080/Applications/SampleApp/$/EnableBackup?api-version=6.4"

Invoke-WebRequest -Uri $url -Method Post -Body $body -ContentType 'application/json' -CertificateThumbprint '1b7ebe2174649c45474a4819dafae956712c31d3'

Uso di Service Fabric Explorer

Assicurarsi che la modalità avanzata per Service Fabric Explorer sia abilitata

  1. Fare clic sull'ingranaggio in alto a destra della finestra esplora sf.

  2. Selezionare la casella "Modalità avanzata" e aggiornare la pagina SF Explorer.

  3. Selezionare un'applicazione e passare all'azione. Fare clic su Abilita/Aggiorna backup dell'applicazione.

    Abilitare il backup dell'applicazione

  4. Infine, selezionare i criteri desiderati e fare clic su Abilita backup.

    Selezionare Criteri

Verificare che i backup periodici funzionino

Dopo aver abilitato il backup a livello applicazione, tutte le partizioni appartenenti ai servizi Reliable con stato e Reliable Actors sotto l'applicazione inizieranno a essere sottoposte periodicamente a backup secondo il criterio di backup associato.

Evento di integrità del backup della partizione

Elenco dei backup

I backup associati a tutte le partizioni appartenenti ai servizi Reliable con stato e agli Reliable Actors dell'applicazione possono essere enumerati utilizzando gli API GetBackups. I backup possono essere enumerati per applicazione, servizio o partizione.

PowerShell con Microsoft.ServiceFabric.Powershell.Http Module


Get-SFApplicationBackupList -ApplicationId WordCount

Chiamata rest con PowerShell

Eseguire il seguente script PowerShell per richiamare l'API HTTP ed elencare i backup creati per tutte le partizioni all'interno dell'applicazione SampleApp.

$url = "https://mysfcluster.southcentralus.cloudapp.azure.com:19080/Applications/SampleApp/$/GetBackups?api-version=6.4"

$response = Invoke-WebRequest -Uri $url -Method Get -CertificateThumbprint '1b7ebe2174649c45474a4819dafae956712c31d3'

$BackupPoints = (ConvertFrom-Json $response.Content)
$BackupPoints.Items

Esempio di output per l’esecuzione sopra indicata:

BackupId                : b9577400-1131-4f88-b309-2bb1e943322c
BackupChainId           : b9577400-1131-4f88-b309-2bb1e943322c
ApplicationName         : fabric:/SampleApp
ServiceName             : fabric:/SampleApp/MyStatefulService
PartitionInformation    : @{LowKey=-9223372036854775808; HighKey=9223372036854775807; ServicePartitionKind=Int64Range; Id=974bd92a-b395-4631-8a7f-53bd4ae9cf22}
BackupLocation          : SampleApp\MyStatefulService\974bd92a-b395-4631-8a7f-53bd4ae9cf22\2018-04-06 20.55.16.zip
BackupType              : Full
EpochOfLastBackupRecord : @{DataLossNumber=131675205859825409; ConfigurationNumber=8589934592}
LsnOfLastBackupRecord   : 3334
CreationTimeUtc         : 2018-04-06T20:55:16Z
FailureError            :

BackupId                : b0035075-b327-41a5-a58f-3ea94b68faa4
BackupChainId           : b9577400-1131-4f88-b309-2bb1e943322c
ApplicationName         : fabric:/SampleApp
ServiceName             : fabric:/SampleApp/MyStatefulService
PartitionInformation    : @{LowKey=-9223372036854775808; HighKey=9223372036854775807; ServicePartitionKind=Int64Range; Id=974bd92a-b395-4631-8a7f-53bd4ae9cf22}
BackupLocation          : SampleApp\MyStatefulService\974bd92a-b395-4631-8a7f-53bd4ae9cf22\2018-04-06 21.10.27.zip
BackupType              : Incremental
EpochOfLastBackupRecord : @{DataLossNumber=131675205859825409; ConfigurationNumber=8589934592}
LsnOfLastBackupRecord   : 3552
CreationTimeUtc         : 2018-04-06T21:10:27Z
FailureError            :

BackupId                : 69436834-c810-4163-9386-a7a800f78359
BackupChainId           : b9577400-1131-4f88-b309-2bb1e943322c
ApplicationName         : fabric:/SampleApp
ServiceName             : fabric:/SampleApp/MyStatefulService
PartitionInformation    : @{LowKey=-9223372036854775808; HighKey=9223372036854775807; ServicePartitionKind=Int64Range; Id=974bd92a-b395-4631-8a7f-53bd4ae9cf22}
BackupLocation          : SampleApp\MyStatefulService\974bd92a-b395-4631-8a7f-53bd4ae9cf22\2018-04-06 21.25.36.zip
BackupType              : Incremental
EpochOfLastBackupRecord : @{DataLossNumber=131675205859825409; ConfigurationNumber=8589934592}
LsnOfLastBackupRecord   : 3764
CreationTimeUtc         : 2018-04-06T21:25:36Z
FailureError            :

Uso di Service Fabric Explorer

Per visualizzare i backup in Service Fabric Explorer, passare a una partizione e selezionare la scheda Backup.

Enumerare i backup

Limitazioni/avvertenze

  • I cmdlet di PowerShell di Service Fabric sono in modalità di anteprima.
  • Nessun supporto per i cluster Service Fabric su Linux.

Passaggi successivi