Backup e ripristino periodici in un’istanza autonoma di Service Fabric
Service Fabric è una piattaforma per lo sviluppo e la gestione di applicazioni cloud distribuite affidabili. Supporta microservizi con e senza stato. I servizi con stato sono in grado di mantenere dati importanti oltre una singola richiesta o transazione. Se un servizio con stato diventa inattivo o perde i dati, per continuare a funzionare correttamente potrebbe essere necessario ripristinare i dati da un backup recente.
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 necessario 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 operazioni di 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 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 di backup e ripristino opzionale, che consente di configurare il backup periodico di Reliable Services 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
- Attivazione di 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 applicazioni destinate a .NET Core 2.0, l'applicazione deve essere generata usando Service Fabric SDK versione 3.1 o successiva.
Installare il modulo Microsoft.ServiceFabric.PowerShell.Http per effettuare chiamate di configurazione.
Install-Module -Name Microsoft.ServiceFabric.PowerShell.Http -AllowPrerelease
Nota
Se la versione di PowerShellGet è precedente alla versione 1.6.0, è necessario aggiornarla per aggiungere il supporto per il flag -AllowPrerelease:
Install-Module -Name PowerShellGet -Force
- Assicurarsi che il cluster sia connesso usando il comando
Connect-SFCluster
prima di effettuare qualsiasi richiesta di configurazione tramite 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:
Verificare che
apiversion
sia impostato su10-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", ... }
A questo punto, abilitare il servizio di backup e ripristino aggiungendo la sezione
addonFeatures
seguente sotto la sezioneproperties
, come illustrato nel frammento seguente:"properties": { ... "addonFeatures": ["BackupRestoreService"], "fabricSettings": [ ... ] ... }
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 sezionefabricSettings
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 sostituita con l'identificazione personale valida del certificato per poter essere usata per la crittografia.
Dopo aver aggiornato il file di configurazione del cluster con le modifiche precedenti, applicarle e consentire il completamento dell'aggiornamento/distribuzione. Al termine della procedura, il servizio di backup e ripristino viene eseguito nel 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 sia configurato con il servizio di backup e ripristino.
- 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 passaggio consiste nella creazione dei criteri di backup, che devono includere la pianificazione delle operazioni di backup, la risorsa di archiviazione di destinazione per i dati di backup, il nome dei criteri, 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 nuovi criteri.
$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
In Service Fabric Explorer passare alla scheda Backup e selezionare Actions > Create Backup Policy.
Immettere le informazioni richieste. Per i cluster autonomi, è necessario selezionare FileShare.
Abilitare il backup periodico
Dopo aver definito i criteri per soddisfare i requisiti di protezione dei dati dell'applicazione, è necessario associare i criteri di backup all'applicazione. In base ai requisiti, i criteri di backup possono essere associati 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 i criteri 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
Assicurarsi che BackupRestoreService sia abilitato nel cluster.
Aprire Service Fabric Explorer.
Selezionare un'applicazione e passare alla sezione Backup. Fare clic su Backup Action.
Fare clic su Enable/Update Application Backup.
Selezionare infine i criteri desiderati e selezionare Enable Backup.
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.
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. In base ai requisiti, i backup possono essere enumerati per un'applicazione, un servizio o una partizione.
PowerShell con il modulo Microsoft.ServiceFabric.PowerShell.Http
Get-SFApplicationBackupList -ApplicationId WordCount
Chiamata REST con PowerShell
Eseguire lo script PowerShell seguente 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.
Limitazioni/avvertenze
- I cmdlet di PowerShell per Service Fabric sono in modalità di anteprima.
- Nessun supporto per i cluster Service Fabric su Linux.