Backup e ripristino periodici in un cluster Azure 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 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
- Attivazione di 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 applicazioni destinate a .NET Core 2.0, l'applicazione deve essere generata usando Service Fabric SDK versione 3.1 o successiva.
- Creare un account di archiviazione di Azure per i backup dell'applicazione.
- 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
Con il portale di Azure
Abilitare la casella di controllo Include backup restore service
nella sezione + Show optional settings
della scheda Cluster Configuration
.
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:
Verificare che
apiversion
sia impostato su2018-02-01
per la risorsaMicrosoft.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')]", ... }
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. 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 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 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
- Il cluster sia stato configurato usando il certificato di sicurezza X.509 con servizio di backup e ripristino.
- Un servizio Reliable con stato venga distribuito nel cluster. Ai fini di questa guida di avvio rapido, l'URI dell’applicazione è
fabric:/SampleApp
e l’URI di Reliable Service 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 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, utilizzare l'archiviazione dell’account Azure creato in precedenza. Il contenitore backup-container
è configurato per archiviare i backup. Durante il caricamento del backup, viene creato un contenitore con questo nome, se non esiste già. Popolare BlobServiceUri
con l'URL dell'account di Archiviazione di Azure sostituendo account-name
con il nome dell'account di archiviazione e popolare il parametro facoltativo ManagedIdentityClientId
con l'ID client dell'identità gestita assegnata dall'utente se alla risorsa sono assegnate più identità gestite.
Seguire la procedura per l'assegnazione di identità gestite in una risorsa di Azure:
Abilitare l'identità gestita assegnata dal sistema o dall'utente nel set di scalabilità di macchine virtuali Configurare le identità gestite nel set di scalabilità di macchine virtuali
Assegnare il ruolo all'identità gestita del set di scalabilità di macchine virtuali nell'account di archiviazione Assegnare ruoli di Azure usando il portale di Azure - Controllo degli accessi in base al ruolo di Azure
- Ruolo Collaboratore ai dati dei BLOB di archiviazione (come minimo)
Per altre informazioni sull’identità gestita
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.
New-SFBackupPolicy -Name 'BackupPolicy1' -AutoRestoreOnDataLoss $false -MaxIncrementalBackups 20 -FrequencyBased -Interval "<hh:mm>" -ManagedIdentityAzureBlobStore -FriendlyName "AzureMI_storagesample" -BlobServiceUri 'https://<account-name>.blob.core.windows.net' -ContainerName 'backup-container' -ManagedIdentityType "VMSS" -ManagedIdentityClientId "<Client-Id of User-Assigned MI>" -Basic -RetentionDuration '10.00:00:00'
# Use Optional parameter `ManagedIdentityClientId` with Client-Id of User-Assigned Managed Identity in case of multiple User-Assigned Managed Identities assigned to your resource, or both SAMI & UAMI assigned and we need to use UAMI as the default, else no need of this paramter.
Chiamata REST con PowerShell
Eseguire lo script PowerShell seguente per richiamare le API REST necessarie per creare nuovi criteri. Sostituire account-name
con il nome dell'account di archiviazione.
$StorageInfo = @{
StorageKind = "ManagedIdentityAzureBlobStore"
FriendlyName = "AzureMI_storagesample"
BlobServiceUri = "https://<account-name>.blob.core.windows.net"
ContainerName = "backup-container"
ManagedIdentityType = "VMSS"
ManagedIdentityClientId = "<Client-Id of User-Assigned MI>" # Use Optional parameter `ManagedIdentityClientId` with Client-Id of User-Assigned Managed Identity in case of multiple User-Assigned Managed Identities assigned to your resource, or both SAMI & UAMI assigned and we need to use UAMI as the default, else no need of this paramter.
}
$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
In Service Fabric Explorer fare clic sul pannello Cluster sul lato sinistro, passare alla scheda Backup e selezionare Azioni > Crea criteri di backup.
Immettere le informazioni richieste. Per informazioni dettagliate su come specificare un intervallo basato sulla frequenza, vedere la proprietà TimeGrain. Per i cluster di Azure, è necessario selezionare ManagedIdentityAzureBlobStore.
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. 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 = "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 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 fare clic su Enable Backup.
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.
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 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 = "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.
Limitazioni/avvertenze
- I cmdlet di PowerShell per Service Fabric sono in modalità di anteprima.
- Nessun supporto per i cluster Service Fabric su Linux.