Backup e ripristino periodici in un'istanza autonoma di Service Fabric

Service Fabric è una piattaforma di sistemi distribuiti che semplifica lo sviluppo e la gestione di applicazioni cloud affidabili, distribuite e basate su microservizi. 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 si arresta per molto tempo o perde informazioni a causa di un'emergenza, potrebbe essere necessario ripristinarlo in un backup recente dello stato per continuare a fornire il servizio dopo il ripristino.

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, un servizio potrebbe dover eseguire il backup dei dati per proteggersi dagli 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 offre un'API predefinita per eseguire il backup e il ripristino temporizzato. Gli sviluppatori di applicazioni possono usare queste API per eseguire periodicamente il backup dello stato del servizio. Inoltre, se gli amministratori del servizio vogliono 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 backup dei dati delle applicazioni a cadenza periodica è una necessità fondamentale per la gestione di un'applicazione distribuita e per proteggersi contro la perdita di dati o la perdita prolungata della disponibilità del servizio. 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 non pianificato 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 all'articolo per i passaggi per scaricare il pacchetto richiesto.

  • 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 acquisire o come creare un certificato X.509 autofirmato.

  • 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.

  • 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

È 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. Per abilitare il servizio di backup e ripristino, seguire questa procedura:

  1. Verificare che apiversion sia impostato su 10-2017 nel file di configurazione del cluster e, se non lo è, aggiornarlo come illustrato nel frammento seguente:

    {
        "apiVersion": "10-2017",
        "name": "SampleCluster",
        "clusterConfigurationVersion": "1.0.0",
        ...
    }
    
  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. Ciò è importante per assicurarsi che le eventuali credenziali fornite per connettersi alla risorsa di archiviazione siano crittografate prima di continuare. 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 aver aggiornato il file di configurazione del cluster con le modifiche precedenti, applicarle e consentire il completamento della distribuzione o dell'aggiornamento. 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

  • Il cluster è configurato con il backup e il ripristino service_.
  • 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 è 23aebc1e-e9ea-4e16-9d5c-e91a614fefa7.

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, creare la condivisione file e consentire l'accesso ReadWrite a questa condivisione file per tutti i computer di nodo del Service Fabric. Questo esempio presuppone che la condivisione con nome BackupStore sia presente su StorageServer.

PowerShell con il modulo Microsoft.ServiceFabric.PowerShell.Http


New-SFBackupPolicy -Name 'BackupPolicy1' -AutoRestoreOnDataLoss $true -MaxIncrementalBackups 20 -FrequencyBased -Interval 00:15:00 -FileShare -Path '\\StorageServer\BackupStore' -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.

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

$StorageInfo = @{
    Path = '\\StorageServer\BackupStore'
    StorageKind = 'FileShare'
}

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

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

$body = (ConvertTo-Json $BackupPolicy)
$url = "http://localhost:19080/BackupRestore/BackupPolicies/$/Create?api-version=6.4"

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

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 i cluster autonomi, è necessario selezionare Condivisione file.

    Creare una condivisione file di criteri di backup

Abilitare il backup periodico

Dopo aver definito il criterio 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 il modulo Microsoft.ServiceFabric.PowerShell.Http

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 = "http://localhost:19080/Applications/SampleApp/$/EnableBackup?api-version=6.4"

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

Uso di Service Fabric Explorer

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

    Abilitare il backup delle applicazioni

  2. Infine, selezionare il criterio desiderato e selezionare Abilita backup.

    Selezionare Criteri

Verificare che i backup periodici funzionino

Dopo aver abilitato il backup per l'applicazione, tutte le partizioni appartenenti ai servizi Reliable con stato e Reliable Actors sotto l'applicazione inizieranno a essere sottoposti 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. A seconda del requisito, i backup possono essere enumerati per applicazione, servizio o partizione.

PowerShell con il modulo Microsoft.ServiceFabric.PowerShell.Http

    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 = "http://localhost:19080/Applications/SampleApp/$/GetBackups?api-version=6.4"

$response = Invoke-WebRequest -Uri $url -Method Get

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

Esempio di output per l’esecuzione sopra indicata:

BackupId                : d7e4038e-2c46-47c6-9549-10698766e714
BackupChainId           : d7e4038e-2c46-47c6-9549-10698766e714
ApplicationName         : fabric:/SampleApp
ServiceName             : fabric:/SampleApp/MyStatefulService
PartitionInformation    : @{LowKey=-9223372036854775808; HighKey=9223372036854775807; ServicePartitionKind=Int64Range; Id=23aebc1e-e9ea-4e16-9d5c-e91a614fefa7}
BackupLocation          : SampleApp\MyStatefulService\23aebc1e-e9ea-4e16-9d5c-e91a614fefa7\2018-04-01 19.39.40.zip
BackupType              : Full
EpochOfLastBackupRecord : @{DataLossNumber=131670844862460432; ConfigurationNumber=8589934592}
LsnOfLastBackupRecord   : 2058
CreationTimeUtc         : 2018-04-01T19:39:40Z
FailureError            : 

BackupId                : 8c21398a-2141-4133-b4d7-e1a35f0d7aac
BackupChainId           : d7e4038e-2c46-47c6-9549-10698766e714
ApplicationName         : fabric:/SampleApp
ServiceName             : fabric:/SampleApp/MyStatefulService
PartitionInformation    : @{LowKey=-9223372036854775808; HighKey=9223372036854775807; ServicePartitionKind=Int64Range; Id=23aebc1e-e9ea-4e16-9d5c-e91a614fefa7}
BackupLocation          : SampleApp\MyStatefulService\23aebc1e-e9ea-4e16-9d5c-e91a614fefa7\2018-04-01 19.54.38.zip
BackupType              : Incremental
EpochOfLastBackupRecord : @{DataLossNumber=131670844862460432; ConfigurationNumber=8589934592}
LsnOfLastBackupRecord   : 2237
CreationTimeUtc         : 2018-04-01T19:54:38Z
FailureError            : 

BackupId                : fc75bd4c-798c-4c9a-beee-e725321f73b2
BackupChainId           : d7e4038e-2c46-47c6-9549-10698766e714
ApplicationName         : fabric:/SampleApp
ServiceName             : fabric:/SampleApp/MyStatefulService
PartitionInformation    : @{LowKey=-9223372036854775808; HighKey=9223372036854775807; ServicePartitionKind=Int64Range; Id=23aebc1e-e9ea-4e16-9d5c-e91a614fefa7}
BackupLocation          : SampleApp\MyStatefulService\23aebc1e-e9ea-4e16-9d5c-e91a614fefa7\2018-04-01 20.09.44.zip
BackupType              : Incremental
EpochOfLastBackupRecord : @{DataLossNumber=131670844862460432; ConfigurationNumber=8589934592}
LsnOfLastBackupRecord   : 2437
CreationTimeUtc         : 2018-04-01T20:09:44Z
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