Delen via


Periodieke back-up en herstel in een zelfstandige Service Fabric

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.

Een service moet bijvoorbeeld een back-up maken van de gegevens om te beschermen tegen de volgende scenario's:

  • 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-up (en herstel) 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.

Back-up van de toepassingsgegevens op periodieke basis is een basisbehoefte voor het beheren van een gedistribueerde toepassing en het beschermen tegen verlies van gegevens of langdurige verlies van servicebeschikbaarheid. Service Fabric biedt een optionele back-up- en herstelservice, waarmee u periodieke back-ups van stateful Reliable Services (inclusief Actor Services) kunt configureren zonder extra code 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 niet-geplande back-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 downloaden van het vereiste pakket.

  • 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 voor informatie over het verkrijgen of maken van een zelfondertekend X.509-certificaat.

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

  • 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

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. Schakel de back-up- en herstelservice in met de volgende stappen:

  1. Controleer of het apiversion is ingesteld 10-2017 in het clusterconfiguratiebestand en werk het bij zoals wordt weergegeven in het volgende codefragment:

    {
        "apiVersion": "10-2017",
        "name": "SampleCluster",
        "clusterConfigurationVersion": "1.0.0",
        ...
    }
    
  2. Schakel nu de back-up- en herstelservice in door de volgende addonFeatures sectie onder properties sectie toe te voegen, zoals wordt weergegeven in het volgende fragment:

        "properties": {
            ...
            "addonFeatures": ["BackupRestoreService"],
            "fabricSettings": [ ... ]
            ...
        }
    
    
  3. Configureer het X.509-certificaat voor versleuteling van referenties. Dit is belangrijk om ervoor te zorgen dat de opgegeven referenties, indien aanwezig, om verbinding te maken met opslag worden versleuteld voordat ze worden bewaard. Configureer het versleutelingscertificaat door de volgende BackupRestoreService sectie onder fabricSettings 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.

  4. Nadat u het clusterconfiguratiebestand 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

  • Het cluster is geconfigureerd met back-up en herstel service_.
  • Er wordt een Reliable Stateful-service geïmplementeerd op het cluster. Voor het doel van deze quickstartgids is fabric:/SampleApp de toepassings-URI en de URI voor reliable Stateful-service die bij deze toepassing hoort, is fabric:/SampleApp/MyStatefulService. Deze service wordt geïmplementeerd met één partitie en de partitie-id is 23aebc1e-e9ea-4e16-9d5c-e91a614fefa7.

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.

Voor back-upopslag maakt u een bestandsshare en geeft u ReadWrite-toegang tot deze bestandsshare voor alle Service Fabric Node-machines. In dit voorbeeld wordt ervan uitgegaan dat de share met de naam BackupStore aanwezig is.StorageServer

PowerShell met microsoft.ServiceFabric.PowerShell.Http-module


New-SFBackupPolicy -Name 'BackupPolicy1' -AutoRestoreOnDataLoss $true -MaxIncrementalBackups 20 -FrequencyBased -Interval 00:15:00 -FileShare -Path '\\StorageServer\BackupStore' -Basic -RetentionDuration '10.00:00:00'

Rest Call using PowerShell

Voer het volgende PowerShell-script uit voor het aanroepen van de vereiste REST API om nieuw beleid te maken.

$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'

Service Fabric Explorer gebruiken

  1. Navigeer in Service Fabric Explorer naar het tabblad Back-ups en selecteer Acties > back-upbeleid maken.

    Back-upbeleid maken

  2. Vul de gegevens in. Voor zelfstandige clusters moet FileShare worden geselecteerd.

    Back-upbeleid bestandsshare maken

Periodieke back-up inschakelen

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

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

Service Fabric Explorer gebruiken

Zorg ervoor dat BackupRestoreService is ingeschakeld op het cluster.

  1. Open Service Fabric Explorer.

  2. Selecteer een toepassing en ga naar de sectie Back-up. Klik op Back-upactie.

  3. Klik op Toepassingsback-up inschakelen/bijwerken.

    Toepassingsback-up inschakelen

  4. Selecteer ten slotte het gewenste beleid en selecteer Back-up inschakelen.

    Beleid selecteren

Controleer of periodieke back-ups werken

Nadat u back-ups voor de toepassing 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.

Statusgebeurtenis Partition BackedUp

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 . Afhankelijk van de vereiste kunnen de back-ups worden geïnventariseerd voor toepassingen, services 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 = "http://localhost:19080/Applications/SampleApp/$/GetBackups?api-version=6.4"

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

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

Voorbeelduitvoer voor de bovenstaande uitvoering:

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            : 

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.

Back-ups inventariseren

Beperkingen/beperkingen

  • Service Fabric PowerShell-cmdlets bevinden zich in de preview-modus.
  • Geen ondersteuning voor Service Fabric-clusters in Linux.

Volgende stappen