Periodieke back-up en herstel in een Azure Service Fabric-cluster
Service Fabric is een platform voor het ontwikkelen en beheren van betrouwbare, gedistribueerde cloudtoepassingen. Het ondersteunt zowel stateless als stateful microservices. Stateful services kunnen belangrijke gegevens buiten één aanvraag of transactie houden. Als een stateful service uitvalt of gegevens verliest, moet deze mogelijk worden hersteld vanuit een recente back-up om goed te kunnen blijven werken.
Service Fabric repliceert de status over meerdere knooppunten om ervoor te zorgen dat de service maximaal beschikbaar is. Zelfs als één knooppunt in het cluster mislukt, blijft de service beschikbaar. In bepaalde gevallen is het echter nog steeds wenselijk dat de servicegegevens betrouwbaar zijn tegen bredere fouten.
De service kan bijvoorbeeld een back-up van de gegevens maken om te beschermen tegen de volgende scenario's:
- In het geval van permanent verlies van een volledig Service Fabric-cluster.
- Permanent verlies van een meerderheid van de replica's van een servicepartitie
- Administratieve fouten waardoor de status per ongeluk wordt verwijderd of beschadigd. Een beheerder met voldoende bevoegdheden verwijdert de service bijvoorbeeld per ongeluk.
- Fouten in de service die beschadiging van gegevens veroorzaken. Dit kan bijvoorbeeld gebeuren wanneer een servicecode-upgrade begint met het schrijven van foutieve gegevens naar een betrouwbare verzameling. In dat geval moeten zowel de code als de gegevens mogelijk worden teruggezet naar een eerdere status.
- Offline gegevensverwerking. Het kan handig zijn om offline gegevens te verwerken voor business intelligence die afzonderlijk plaatsvinden van de service waarmee de gegevens worden gegenereerd.
Service Fabric biedt een ingebouwde API voor het maken van back-ups en herstel naar een bepaald tijdstip. Toepassingsontwikkelaars kunnen deze API's gebruiken om periodiek een back-up te maken van de status van de service. Als servicebeheerders op een bepaald moment een back-up van buiten de service willen activeren, bijvoorbeeld voordat ze de toepassing upgraden, moeten ontwikkelaars back-ups (en herstellen) beschikbaar maken als een API van de service. Het onderhouden van de back-ups is een extra kosten hiervoor. U kunt bijvoorbeeld elk half uur vijf incrementele back-ups maken, gevolgd door een volledige back-up. Na de volledige back-up kunt u de vorige incrementele back-ups verwijderen. Voor deze aanpak is extra code vereist die leidt tot extra kosten tijdens het ontwikkelen van toepassingen.
Met de service Backup and Restore in Service Fabric kunt u eenvoudig en automatisch back-ups maken van gegevens die zijn opgeslagen in stateful services. Het periodiek maken van een back-up van toepassingsgegevens is essentieel voor de beveiliging tegen gegevensverlies en serviceonbeschikbaarheid. Service Fabric biedt een optionele back-up- en herstelservice, waarmee u periodieke back-ups van stateful Reliable Services (inclusief Actor Services) kunt configureren zonder dat u extra code hoeft te schrijven. Het vereenvoudigt ook het herstellen van eerder gemaakte back-ups.
Service Fabric biedt een set API's voor het bereiken van de volgende functionaliteit met betrekking tot periodieke back-up- en herstelfunctie:
- Plan periodieke back-ups van Reliable Stateful-services en Reliable Actors met ondersteuning voor het uploaden van back-ups naar (externe) opslaglocaties. Ondersteunde opslaglocaties
- Azure Storage
- Bestandsshare (on-premises)
- Back-ups inventariseren
- Een ad-hocback-up van een partitie activeren
- Een partitie herstellen met behulp van een vorige back-up
- Back-ups tijdelijk onderbreken
- Bewaarbeheer van back-ups (gepland)
Vereisten
- Service Fabric-cluster met Fabric-versie 6.4 of hoger. Raadpleeg dit artikel voor stappen voor het maken van een Service Fabric-cluster met behulp van een Azure-resourcesjabloon.
- X.509-certificaat voor versleuteling van geheimen die nodig zijn om verbinding te maken met opslag om back-ups op te slaan. Raadpleeg het artikel om te weten hoe u een X.509-certificaat kunt verkrijgen of maken.
- Service Fabric Reliable Stateful-toepassing die is gebouwd met Service Fabric SDK versie 3.0 of hoger. Voor toepassingen die gericht zijn op .NET Core 2.0, moet de toepassing worden gebouwd met service Fabric SDK versie 3.1 of hoger.
- Maak een Azure Storage-account voor het opslaan van toepassingsback-ups.
- Installeer Microsoft.ServiceFabric.Powershell.Http Module voor het maken van configuratie-aanroepen.
Install-Module -Name Microsoft.ServiceFabric.Powershell.Http -AllowPrerelease
Notitie
Als uw PowerShellGet-versie kleiner is dan 1.6.0, moet u bijwerken om ondersteuning toe te voegen voor de vlag -AllowPrerelease :
Install-Module -Name PowerShellGet -Force
- Zorg ervoor dat het cluster is verbonden met behulp van de
Connect-SFCluster
opdracht voordat u een configuratieaanvraag indient met behulp van Microsoft.ServiceFabric.Powershell.Http Module.
Connect-SFCluster -ConnectionEndpoint 'https://mysfcluster.southcentralus.cloudapp.azure.com:19080' -X509Credential -FindType FindByThumbprint -FindValue '1b7ebe2174649c45474a4819dafae956712c31d3' -StoreLocation 'CurrentUser' -StoreName 'My' -ServerCertThumbprint '1b7ebe2174649c45474a4819dafae956712c31d3'
Back-up- en herstelservice inschakelen
Azure-portal gebruiken
Schakel Include backup restore service
het selectievakje onder op + Show optional settings
het tabblad in Cluster Configuration
.
Azure Resource Manager-sjabloon gebruiken
Eerst moet u de back-up- en herstelservice in uw cluster inschakelen. Haal de sjabloon op voor het cluster dat u wilt implementeren. U kunt de voorbeeldsjablonen gebruiken of een Resource Manager-sjabloon maken. Schakel de back-up- en herstelservice in met de volgende stappen:
Controleer of de
apiversion
resource is ingesteld2018-02-01
en werk deMicrosoft.ServiceFabric/clusters
resource bij zoals wordt weergegeven in het volgende fragment:{ "apiVersion": "2018-02-01", "type": "Microsoft.ServiceFabric/clusters", "name": "[parameters('clusterName')]", "location": "[parameters('clusterLocation')]", ... }
Schakel nu de back-up- en herstelservice in door de volgende
addonFeatures
sectie onderproperties
sectie toe te voegen, zoals wordt weergegeven in het volgende fragment:"properties": { ... "addonFeatures": ["BackupRestoreService"], "fabricSettings": [ ... ] ... }
Configureer het X.509-certificaat voor versleuteling van referenties. Dit is belangrijk om ervoor te zorgen dat de referenties die zijn opgegeven om verbinding te maken met opslag, worden versleuteld voordat u deze blijft behouden. Configureer het versleutelingscertificaat door de volgende
BackupRestoreService
sectie onderfabricSettings
sectie toe te voegen, zoals wordt weergegeven in het volgende fragment:"properties": { ... "addonFeatures": ["BackupRestoreService"], "fabricSettings": [ { "name": "BackupRestoreService", "parameters": [ { "name": "SecretEncryptionCertThumbprint", "value": "[Thumbprint]" }, { "name": "SecretEncryptionCertX509StoreName", "value": "My" } ] }] ... }
Notitie
[Vingerafdruk] moet worden vervangen door een geldige certificaatvingerafdruk die moet worden gebruikt voor versleuteling.
Nadat u de clustersjabloon hebt bijgewerkt met de voorgaande wijzigingen, past u deze toe en laat u de implementatie/upgrade voltooien. Zodra de back-up- en herstelservice is voltooid, wordt deze uitgevoerd in uw cluster. De URI van deze service is
fabric:/System/BackupRestoreService
en de service kan zich in de servicesectie van het systeem bevinden in de Service Fabric-verkenner.
Periodieke back-up inschakelen voor reliable stateful service en Reliable Actors
Laten we de stappen doorlopen om periodieke back-ups in te schakelen voor reliable stateful service en Reliable Actors. Bij deze stappen wordt ervan uitgegaan dat
- Het cluster wordt ingesteld met X.509-beveiliging met back-up- en herstelservice.
- Er wordt een Reliable Stateful-service geïmplementeerd op het cluster. Voor deze snelstartgids is
fabric:/SampleApp
de toepassings-URI en de Uri voor reliable Stateful-service die deel uitmaakt van deze toepassing isfabric:/SampleApp/MyStatefulService
. Deze service wordt geïmplementeerd met één partitie en de partitie-id is974bd92a-b395-4631-8a7f-53bd4ae9cf22
. - Het clientcertificaat met de beheerdersrol wordt geïnstalleerd in mijn (persoonlijke) archiefnaam van de locatie van het CurrentUser-certificaatarchief op de computer waar de onderstaande scripts worden aangeroepen. In dit voorbeeld wordt de vingerafdruk van dit certificaat gebruikt
1b7ebe2174649c45474a4819dafae956712c31d3
. Zie Op rollen gebaseerd toegangsbeheer voor Service Fabric-clients voor meer informatie over clientcertificaten.
Back-upbeleid maken
De eerste stap is het maken van een back-upbeleid. Dit beleid moet het back-upschema, de doelopslag voor de back-upgegevens, de beleidsnaam, het maximum aantal incrementele back-ups bevatten dat is toegestaan voordat een volledige back-up wordt geactiveerd en het bewaarbeleid voor de back-upopslag.
Gebruik voor back-upopslag het Azure Storage-account dat hierboven is gemaakt. De container backup-container
is geconfigureerd voor het opslaan van back-ups. Er wordt tijdens het uploaden van een back-up een container met deze naam gemaakt, als deze nog niet bestaat. Vul BlobServiceUri
de URL van het Azure Storage-account in die wordt vervangen door account-name
de naam van uw opslagaccount en vul de optionele parameter ManagedIdentityClientId
in met de client-id van door de gebruiker toegewezen beheerde identiteit als er meerdere beheerde identiteiten zijn toegewezen aan uw resource.
Volg de stappen voor toewijzing van beheerde identiteiten in Azure-resource:
Door het systeem toegewezen of door de gebruiker toegewezen beheerde identiteit inschakelen in de virtuele-machineschaalsets Beheerde identiteiten configureren op virtuele-machineschaalset
De rol toewijzen aan de beheerde identiteit van virtuele-machineschaalsets aan het opslagaccount Azure-rollen toewijzen met behulp van Azure Portal - Azure RBAC
- Inzenderrol voor opslagblobgegevens minimaal
Voor meer informatie over beheerde identiteiten
PowerShell met microsoft.ServiceFabric.Powershell.http-module
Voer de volgende PowerShell-cmdlets uit voor het maken van nieuw back-upbeleid. Vervang door account-name
de naam van uw opslagaccount.
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.
Rest Call using PowerShell
Voer het volgende PowerShell-script uit voor het aanroepen van de vereiste REST API om nieuw beleid te maken. Vervang door account-name
de naam van uw opslagaccount.
$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'
Service Fabric Explorer gebruiken
Klik in Service Fabric Explorer op Cluster aan de linkerkant, navigeer naar het tabblad Back-ups en selecteer Acties > Back-upbeleid maken.
Vul de gegevens in. Zie de eigenschap TimeGrain voor meer informatie over het opgeven van een interval op basis van frequentie. Voor Azure-clusters moet ManagedIdentityAzureBlobStore worden geselecteerd.
Periodieke back-up inschakelen
Nadat u back-upbeleid hebt gedefinieerd om te voldoen aan de vereisten voor gegevensbescherming van de toepassing, moet het back-upbeleid worden gekoppeld aan de toepassing. Afhankelijk van de vereiste kan het back-upbeleid worden gekoppeld aan een toepassing, service of partitie.
PowerShell met microsoft.ServiceFabric.Powershell.http-module
Enable-SFApplicationBackup -ApplicationId 'SampleApp' -BackupPolicyName 'BackupPolicy1'
Rest Call using PowerShell
Voer het volgende PowerShell-script uit voor het aanroepen van de vereiste REST API om back-upbeleid te koppelen aan de naam BackupPolicy1
die u in de bovenstaande stap hebt gemaakt met de toepassing 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'
Service Fabric Explorer gebruiken
Zorg ervoor dat BackupRestoreService is ingeschakeld op het cluster.
Open Service Fabric Explorer.
Selecteer een toepassing en ga naar de sectie Back-up. Klik op Back-upactie.
Klik op Toepassingsback-up inschakelen/bijwerken.
Selecteer ten slotte het gewenste beleid en klik op Back-up inschakelen.
Controleer of periodieke back-ups werken
Nadat u back-ups op toepassingsniveau hebt ingeschakeld, worden alle partities die behoren tot Reliable Stateful-services en Reliable Actors onder de toepassing periodiek een back-up gemaakt volgens het bijbehorende back-upbeleid.
Back-ups weergeven
Back-ups die zijn gekoppeld aan alle partities die behoren tot Reliable Stateful-services en Reliable Actors van de toepassing kunnen worden geïnventariseerd met behulp van de GetBackups-API . Back-ups kunnen worden geïnventariseerd voor een toepassing, service of een partitie.
PowerShell met microsoft.ServiceFabric.Powershell.http-module
Get-SFApplicationBackupList -ApplicationId WordCount
Rest Call using PowerShell
Voer het volgende PowerShell-script uit om de HTTP-API aan te roepen om de back-ups op te sommen die zijn gemaakt voor alle partities in de SampleApp
toepassing.
$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
Voorbeelduitvoer voor de bovenstaande uitvoering:
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 :
Service Fabric Explorer gebruiken
Als u back-ups wilt weergeven in Service Fabric Explorer, gaat u naar een partitie en selecteert u het tabblad Back-ups.
Beperkingen/beperkingen
- Service Fabric PowerShell-cmdlets bevinden zich in de preview-modus.
- Geen ondersteuning voor Service Fabric-clusters in Linux.