Share via


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

Service Fabric is een platform voor gedistribueerde systemen waarmee u eenvoudig betrouwbare, gedistribueerde, microservicesgebaseerde cloudtoepassingen kunt ontwikkelen en beheren. Hiermee kunnen staatloze en stateful microservices worden uitgevoerd. Stateful services kunnen de onveranderbare, gezaghebbende status buiten de aanvraag en het antwoord of een volledige transactie behouden. 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 blijven leveren nadat deze weer is opgehaald.

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 (preview) 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 .

Back-upherstelservice inschakelen met portal

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:

  1. Controleer of de apiversion resource is ingesteld 2018-02-01 en werk de Microsoft.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')]",
        ...
    }
    
  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 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 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 geldige certificaatvingerafdruk die moet worden gebruikt voor versleuteling.

  4. 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 is ingesteld met X.509-beveiliging met back-up- en herstelservice.
  • 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 974bd92a-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 back-upbeleid met een beschrijving van het back-upschema, de doelopslag voor back-upgegevens, de beleidsnaam, het maximum aantal incrementele back-ups dat moet worden toegestaan voordat een volledig back-up- en bewaarbeleid voor back-upopslag wordt 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 verbindingsreeks in voor het Azure Storage-account, vervang deze door account-name de naam van uw opslagaccount en account-key door de sleutel van uw opslagaccount.

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

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. Zie de eigenschap TimeGrain voor meer informatie over het opgeven van een interval op basis van frequentie. Voor Azure-clusters moet AzureBlobStore worden geselecteerd.

    Back-upbeleid voor Azure Blob Storage maken

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 een 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 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 'Geavanceerde modus' in en vernieuw de PAGINA SF Explorer.

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

    Toepassingsback-up inschakelen

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

    Beleid selecteren

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.

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

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