Periodieke back-up en herstel in een Azure Service Fabric-cluster

Service Fabric is een platform voor gedistribueerde systemen waarmee u eenvoudig betrouwbare, gedistribueerde, op microservices gebaseerde cloudtoepassingen kunt ontwikkelen en beheren. Hiermee kunnen zowel staatloze als stateful microservices worden uitgevoerd. Stateful services kunnen een veranderlijke, gezaghebbende status behouden die verder gaat dan de aanvraag en het antwoord of een volledige transactie. Als een Stateful-service lange tijd uitvalt of informatie verliest vanwege een noodgeval, moet deze mogelijk worden hersteld naar een recente back-up van de status om de service te kunnen blijven bieden nadat deze opnieuw is gestart.

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 uitvalt, 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 u te beschermen tegen de volgende scenario's:

  • In het geval van het permanent verlies van een volledig Service Fabric-cluster.
  • Permanent verlies van een meerderheid van de replica's van een servicepartitie
  • Beheerfouten waardoor de status per ongeluk wordt verwijderd of beschadigd. Een beheerder met voldoende bevoegdheden verwijdert bijvoorbeeld ten onrechte de service.
  • Fouten in de service die gegevensbeschadiging veroorzaken. Dit kan bijvoorbeeld gebeuren wanneer een upgrade van de servicecode begint met het schrijven van onjuiste gegevens naar een betrouwbare verzameling. In een dergelijk geval moeten zowel de code als de gegevens mogelijk worden teruggezet naar een eerdere status.
  • Offline gegevensverwerking. Het kan handig zijn om gegevens voor business intelligence offline te verwerken, los van de service die de gegevens genereert.

Service Fabric biedt een ingebouwde API voor back-up 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 bovendien op een bepaald moment een back-up van buiten de service willen activeren, zoals voordat ze de toepassing upgraden, moeten ontwikkelaars back-ups beschikbaar maken (en herstellen) als een API van de service. Het onderhouden van de back-ups zijn extra kosten. 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 eerdere incrementele back-ups verwijderen. Voor deze aanpak is extra code vereist, wat 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 bescherming tegen gegevensverlies en niet-beschikbaarheid van services. 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 aanvullende 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 de functie voor periodieke back-up en herstel:

  • Plan periodieke back-up 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 opsommen
  • Een ad-hocback-up van een partitie activeren
  • Een partitie herstellen met een vorige back-up
  • Back-ups tijdelijk onderbreken
  • Retentiebeheer van back-ups (binnenkort)

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 voor informatie over het ophalen of maken van een X.509-certificaat.
  • Betrouwbare Stateful Service Fabric-toepassing die is gebouwd met Service Fabric SDK versie 3.0 of hoger. Voor toepassingen die zijn gericht 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 (preview) voor het maken van configuratie-aanroepen.
    Install-Module -Name Microsoft.ServiceFabric.Powershell.Http -AllowPrerelease

Notitie

Als uw PowerShellGet-versie lager 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 cluster is verbonden met behulp van de Connect-SFCluster opdracht voordat u een configuratieaanvraag maakt 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

Selectievakje inschakelen Include backup restore service onder + Show optional settings op Cluster Configuration tabblad.

Back-upherstelservice inschakelen met de portal

Azure Resource Manager-sjabloon gebruiken

Eerst moet u de back-up- en herstelservice inschakelen in uw cluster. Haal de sjabloon op voor het cluster dat u wilt implementeren. U kunt de voorbeeldsjablonen gebruiken of een Resource Manager maken. Schakel de back-up- en herstelservice in met de volgende stappen:

  1. Controleer of de apiversion is ingesteld op 2018-02-01 voor de Microsoft.ServiceFabric/clusters resource en zo niet, werk deze bij zoals wordt weergegeven in het volgende codefragment:

    {
        "apiVersion": "2018-02-01",
        "type": "Microsoft.ServiceFabric/clusters",
        "name": "[parameters('clusterName')]",
        "location": "[parameters('clusterLocation')]",
        ...
    }
    
  2. Schakel nu de back-up- en herstelservice in door de volgende addonFeatures sectie toe te voegen onder properties de sectie, zoals wordt weergegeven in het volgende codefragment:

        "properties": {
            ...
            "addonFeatures":  ["BackupRestoreService"],
            "fabricSettings": [ ... ]
            ...
        }
    
    
  3. X.509-certificaat configureren voor versleuteling van referenties. Dit is belangrijk om ervoor te zorgen dat de referenties die zijn opgegeven om verbinding te maken met de opslag, worden versleuteld voordat ze blijven bestaan. Configureer het versleutelingscertificaat door de volgende BackupRestoreService sectie toe te voegen onder fabricSettings sectie, zoals wordt weergegeven in het volgende codefragment:

    "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. Zodra u de clustersjabloon hebt bijgewerkt met de voorgaande wijzigingen, past u deze toe en laat u de implementatie/upgrade voltooien. Zodra dit is voltooid, wordt de back-up- en herstelservice uitgevoerd in uw cluster. De URI van deze service is fabric:/System/BackupRestoreService en de service kan zich bevinden onder de sectie Systeemservice 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

  • Dat het cluster is ingesteld met behulp van X.509-beveiliging met back-up- en herstelservice.
  • Er wordt een Reliable Stateful-service geïmplementeerd op het cluster. Voor het doel van deze snelstartgids is fabric:/SampleApp de toepassings-URI en is fabric:/SampleApp/MyStatefulServicede URI voor reliable stateful service die bij deze toepassing hoort. Deze service wordt geïmplementeerd met één partitie en de partitie-id is 974bd92a-b395-4631-8a7f-53bd4ae9cf22.
  • Het clientcertificaat met beheerdersrol wordt geïnstalleerd in Mijn (persoonlijke) archiefnaam van de locatie van het certificaatarchief CurrentUser op de computer van waaruit de onderstaande scripts worden aangeroepen. In dit voorbeeld wordt gebruikt 1b7ebe2174649c45474a4819dafae956712c31d3 als vingerafdruk van dit certificaat. 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 met een beschrijving van het back-upschema, de doelopslag voor back-upgegevens, de beleidsnaam en het maximum aantal incrementele back-ups die moeten worden toegestaan voordat volledige back-up en bewaarbeleid voor back-upopslag worden geactiveerd.

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 een container met deze naam gemaakt, als deze nog niet bestaat, tijdens het uploaden van de back-up. Vul ConnectionString een geldige connection string in voor het Azure Storage-account, waarbij u vervangt door de naam van account-name uw opslagaccount en account-key door de sleutel van uw opslagaccount.

PowerShell met behulp van Microsoft.ServiceFabric.Powershell.Http-module

Voer de volgende PowerShell-cmdlets uit om nieuw back-upbeleid te maken. Vervang door account-name de naam van uw opslagaccount en account-key door de sleutel van uw opslagaccount.


New-SFBackupPolicy -Name 'BackupPolicy1' -AutoRestoreOnDataLoss $true -MaxIncrementalBackups 20 -FrequencyBased -Interval 00:15:00 -AzureBlobStore -ConnectionString 'DefaultEndpointsProtocol=https;AccountName=<account-name>;AccountKey=<account-key>;EndpointSuffix=core.windows.net' -ContainerName 'backup-container' -Basic -RetentionDuration '10.00:00:00'

Rest-oproep met Behulp van 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 en account-key door de sleutel van uw opslagaccount.

$StorageInfo = @{
    ConnectionString = 'DefaultEndpointsProtocol=https;AccountName=<account-name>;AccountKey=<account-key>;EndpointSuffix=core.windows.net'
    ContainerName = 'backup-container'
    StorageKind = 'AzureBlobStore'
}

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

Met behulp van Service Fabric Explorer

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

    Back-upbeleid maken

  2. 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 AzureBlobStore zijn geselecteerd.

    Back-upbeleid maken Azure Blob Storage

Periodieke back-up inschakelen

Nadat u het back-upbeleid hebt gedefinieerd om te voldoen aan de vereisten voor gegevensbescherming van de toepassing, moet het back-upbeleid aan de toepassing worden gekoppeld. Afhankelijk van de vereiste kan het back-upbeleid worden gekoppeld aan een toepassing, service of een partitie.

PowerShell met behulp van Microsoft.ServiceFabric.Powershell.Http-module


Enable-SFApplicationBackup -ApplicationId 'SampleApp' -BackupPolicyName 'BackupPolicy1'

Rest-oproep met Behulp van 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 in de bovenstaande stap is 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 de geavanceerde modus voor Service Fabric Explorer is ingeschakeld

  1. Klik op het tandwiel rechtsboven in het SF Explorer-venster.

  2. Schakel het selectievakje voor 'Geavanceerde modus' in en vernieuw de pagina SF Explorer.

  3. Selecteer een toepassing en ga naar actie. Klik op Back-up van toepassing inschakelen/bijwerken.

    Back-up van toepassing inschakelen

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

    Beleid selecteren

Controleren of periodieke back-ups werken

Na het inschakelen van back-ups op toepassingsniveau, wordt van 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 . Back-ups kunnen worden geïnventariseerd voor een toepassing, service of een partitie.

PowerShell met behulp van Microsoft.ServiceFabric.Powershell.Http-module


Get-SFApplicationBackupList -ApplicationId WordCount

Rest-oproep met Behulp van 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 in Service Fabric Explorer wilt bekijken, gaat u naar een partitie en selecteert u het tabblad Back-ups.

Back-ups opsommen

Beperking/voorbehoud

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

Volgende stappen