Sdílet prostřednictvím


Pravidelné zálohování a obnovení v clusteru Azure Service Fabric

Service Fabric je platforma distribuovaných systémů, která usnadňuje vývoj a správu spolehlivých, distribuovaných cloudových aplikací založených na mikroslužbách. Umožňuje provoz bezstavových i stavových mikroslužeb. Stavové služby mohou udržovat proměnlivý, autoritativní stav mimo požadavek a odpověď nebo úplnou transakci. Pokud stavová služba bude dlouhou dobu mimo provoz nebo ztratí informace kvůli havárii, může být potřeba ji obnovit do nějaké nedávné zálohy svého stavu, aby bylo možné pokračovat v poskytování služby i po jejím návratu.

Service Fabric replikuje stav napříč několika uzly, aby byla služba vysoce dostupná. I když jeden uzel v clusteru selže, bude služba dál dostupná. V některých případech je však stále žádoucí, aby data služby byla spolehlivá proti širším selháním.

Služba může například chtít zálohovat svá data, aby byla chráněna před následujícími scénáři:

  • V případě trvalé ztráty celého clusteru Service Fabric.
  • Trvalá ztráta většiny replik oddílu služby
  • Administrativní chyby, při kterých se stav omylem odstraní nebo poškodí. Například správce s dostatečnými oprávněními chybně odstraní službu.
  • Chyby ve službě, které způsobují poškození dat. K tomu může například dojít, když upgrade kódu služby začne zapisovat chybná data do spolehlivé kolekce. V takovém případě může být nutné vrátit kód i data do dřívějšího stavu.
  • Offline zpracování dat. Může být vhodné offline zpracování dat pro business intelligence, které probíhá odděleně od služby, která generuje data.

Service Fabric poskytuje integrované rozhraní API pro zálohování a obnovení k určitému bodu v čase. Vývojáři aplikací můžou tato rozhraní API používat k pravidelnému zálohování stavu služby. Kromě toho platí, že pokud správci služby chtějí v určitou dobu aktivovat zálohování mimo službu, například před upgradem aplikace, musí vývojáři zveřejnit zálohování (a obnovení) jako rozhraní API ze služby. Údržba záloh je nad tím i další náklady. Můžete například chtít každou půlhodinu vytvořit pět přírůstkových záloh následovaných úplným zálohováním. Po dokončení úplného zálohování můžete odstranit předchozí přírůstkové zálohy. Tento přístup vyžaduje další kód, který vede k dodatečným nákladům během vývoje aplikace.

Služba Zálohování a obnovení v Service Fabric umožňuje snadné a automatické zálohování informací uložených ve stavových službách. Pravidelné zálohování dat aplikací je zásadní pro ochranu před ztrátou dat a nedostupností služeb. Service Fabric poskytuje volitelnou službu zálohování a obnovení, která umožňuje konfigurovat pravidelné zálohování stavových reliable services (včetně služeb objektů actor), aniž byste museli psát jakýkoli další kód. Usnadňuje také obnovení dříve pořízených záloh.

Service Fabric poskytuje sadu rozhraní API pro zajištění následujících funkcí souvisejících s funkcí pravidelného zálohování a obnovení:

  • Naplánujte pravidelné zálohování Reliable Stateful Services a Reliable Actors s podporou nahrávání záloh do (externích) úložišť. Podporovaná umístění úložiště
    • Azure Storage
    • Sdílená složka (místní)
  • Vytvoření výčtu záloh
  • Aktivace ad hoc zálohování oddílu
  • Obnovení oddílu pomocí předchozí zálohy
  • Dočasné pozastavení zálohování
  • Správa uchovávání záloh (chystané)

Požadavky

  • Cluster Service Fabric s fabric verze 6.4 nebo vyšší. Postup vytvoření clusteru Service Fabric pomocí šablony prostředků Azure najdete v tomto článku .
  • Certifikát X.509 pro šifrování tajných kódů potřebných pro připojení k úložišti za účelem ukládání záloh. Informace o tom, jak získat nebo vytvořit certifikát X.509, najdete v článku .
  • Service Fabric Reliable Stateful aplikace vytvořená pomocí sady Service Fabric SDK verze 3.0 nebo vyšší. Pro aplikace, které cílí na .NET Core 2.0, by se měly sestavit pomocí sady Service Fabric SDK verze 3.1 nebo vyšší.
  • Vytvořte účet Azure Storage pro ukládání záloh aplikací.
  • Nainstalujte modul Microsoft.ServiceFabric.Powershell.Http (Preview) pro volání konfigurace.
    Install-Module -Name Microsoft.ServiceFabric.Powershell.Http -AllowPrerelease

Poznámka

Pokud je vaše verze PowerShellGet menší než 1.6.0, budete muset aktualizovat, abyste přidali podporu pro příznak -AllowPrerelease :

Install-Module -Name PowerShellGet -Force

  • Před vytvořením jakékoli žádosti o konfiguraci pomocí modulu Microsoft.ServiceFabric.Powershell.Http se ujistěte, že je cluster připojený pomocí Connect-SFCluster příkazu .

    Connect-SFCluster -ConnectionEndpoint 'https://mysfcluster.southcentralus.cloudapp.azure.com:19080'   -X509Credential -FindType FindByThumbprint -FindValue '1b7ebe2174649c45474a4819dafae956712c31d3' -StoreLocation 'CurrentUser' -StoreName 'My' -ServerCertThumbprint '1b7ebe2174649c45474a4819dafae956712c31d3'

Povolení služby zálohování a obnovení

Pomocí webu Azure Portal

Zaškrtávací políčko Povolit Include backup restore service na + Show optional settings kartě na kartě Cluster Configuration

Povolení služby obnovení zálohování pomocí portálu

Použití šablony Azure Resource Manager

Nejprve musíte v clusteru povolit službu zálohování a obnovení . Získejte šablonu pro cluster, který chcete nasadit. Můžete použít ukázkové šablony nebo vytvořit šablonu Resource Manager. Povolte službu zálohování a obnovení pomocí následujících kroků:

  1. Zkontrolujte, že apiversion je pro Microsoft.ServiceFabric/clusters prostředek nastavený na 2018-02-01 , a pokud ne, aktualizujte ho, jak je znázorněno v následujícím fragmentu kódu:

    {
        "apiVersion": "2018-02-01",
        "type": "Microsoft.ServiceFabric/clusters",
        "name": "[parameters('clusterName')]",
        "location": "[parameters('clusterLocation')]",
        ...
    }
    
  2. Teď povolte službu zálohování a obnovení přidáním následující addonFeatures části v properties části , jak je znázorněno v následujícím fragmentu kódu:

        "properties": {
            ...
            "addonFeatures":  ["BackupRestoreService"],
            "fabricSettings": [ ... ]
            ...
        }
    
    
  3. Nakonfigurujte certifikát X.509 pro šifrování přihlašovacích údajů. To je důležité k zajištění toho, aby přihlašovací údaje zadané pro připojení k úložišti byly před uložením zašifrované. Šifrovací certifikát nakonfigurujte tak, že do části přidáte následující BackupRestoreService část fabricSettings , jak je znázorněno v následujícím fragmentu kódu:

    "properties": {
        ...
        "addonFeatures": ["BackupRestoreService"],
        "fabricSettings": [{
            "name": "BackupRestoreService",
            "parameters":  [{
                "name": "SecretEncryptionCertThumbprint",
                "value": "[Thumbprint]"
            },{
                "name": "SecretEncryptionCertX509StoreName",
                "value": "My"
            }]
        }
        ...
    }
    

    Poznámka

    [Kryptografický otisk] musí být nahrazený platným kryptografickým otiskem certifikátu, který se použije k šifrování.

  4. Jakmile aktualizujete šablonu clusteru pomocí předchozích změn, použijte je a nechte nasazení/upgrade dokončit. Po dokončení se v clusteru spustí služba zálohování a obnovení . Identifikátor URI této služby je fabric:/System/BackupRestoreService a služba se nachází v části systémová služba v service fabric exploreru.

Povolení pravidelného zálohování pro Reliable Stateful Service a Reliable Actors

Pojďme si projít kroky k povolení pravidelného zálohování pro Reliable Stateful Service a Reliable Actors. V těchto krocích se předpokládá, že

  • Cluster je nastavený pomocí zabezpečení X.509 se službou zálohování a obnovení.
  • V clusteru je nasazená spolehlivá stavová služba. Pro účely tohoto rychlého startu je fabric:/SampleApp identifikátor URI aplikace a identifikátor URI pro Reliable Stateful service, který patří do této aplikace, je fabric:/SampleApp/MyStatefulService. Tato služba je nasazená s jedním oddílem a ID oddílu je 974bd92a-b395-4631-8a7f-53bd4ae9cf22.
  • Klientský certifikát s rolí správce se nainstaluje do úložiště My (Personal) ( Název úložiště Moje (osobní) umístění úložiště certifikátů CurrentUser na počítači, ze kterého se budou vyvolávat následující skripty. Tento příklad používá 1b7ebe2174649c45474a4819dafae956712c31d3 jako kryptografický otisk tohoto certifikátu. Další informace o klientských certifikátech najdete v tématu Řízení přístupu na základě role pro klienty Service Fabric.

Vytvoření zásady zálohování

Prvním krokem je vytvoření zásady zálohování popisující plán zálohování, cílové úložiště pro zálohovaná data, název zásady a maximální povolené přírůstkové zálohování před aktivací úplného zálohování a zásad uchovávání informací pro úložiště záloh.

Jako úložiště zálohování použijte účet Azure Storage vytvořený výše. Kontejner backup-container je nakonfigurovaný pro ukládání záloh. Kontejner s tímto názvem se vytvoří, pokud ještě neexistuje, během nahrávání zálohy. Vyplňte ConnectionString platným připojovacím řetězcem pro účet služby Azure Storage a nahraďte account-name názvem vašeho účtu úložiště a account-key klíčem účtu úložiště.

PowerShell využívající modul Microsoft.ServiceFabric.Powershell.Http

Spuštěním následujících rutin PowerShellu vytvořte nové zásady zálohování. Nahraďte account-name názvem vašeho účtu úložiště a account-key nahraďte klíčem účtu úložiště.


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'

Volání REST pomocí PowerShellu

Spuštěním následujícího skriptu PowerShellu vyvoláte požadované rozhraní REST API k vytvoření nové zásady. Nahraďte account-name názvem vašeho účtu úložiště a account-key nahraďte klíčem účtu úložiště.

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

Použití Service Fabric Explorer

  1. V Service Fabric Explorer přejděte na kartu Zálohování a vyberte Akce > Vytvořit zásadu zálohování.

    Vytvoření zásad zálohování

  2. Vyplňte informace. Podrobnosti o tom, jak určit interval založený na frekvenci, naleznete TimeGrain vlastnost. Pro clustery Azure by měl být vybraný AzureBlobStore.

    Vytvoření Azure Blob Storage zásad zálohování

Povolit pravidelné zálohování

Po definování zásad zálohování, které splňují požadavky aplikace na ochranu dat, by zásady zálohování měly být přidružené k aplikaci. V závislosti na požadavku je možné zásady zálohování přidružit k aplikaci, službě nebo oddílu.

PowerShell využívající modul Microsoft.ServiceFabric.Powershell.Http


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

Volání REST pomocí PowerShellu

Spusťte následující skript PowerShellu pro vyvolání požadovaného rozhraní REST API pro přidružení zásad zálohování s názvem BackupPolicy1 vytvořeným v předchozím kroku k aplikaci 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'

Použití Service Fabric Explorer

Ujistěte se, že je povolený rozšířený režim pro Service Fabric Explorer.

  1. Klikněte na ozubené kolečko v pravém horním rohu okna průzkumníka SF.

  2. Zaškrtněte políčko Rozšířený režim a aktualizujte stránku Průzkumníka SF.

  3. Vyberte aplikaci a přejděte do akce. Klikněte na Povolit nebo aktualizovat zálohování aplikací.

    Povolit zálohování aplikací

  4. Nakonec vyberte požadovanou zásadu a klikněte na Povolit zálohování.

    Vybrat zásadu

Ověření fungování pravidelného zálohování

Po povolení zálohování na úrovni aplikace se všechny oddíly patřící do Reliable Stateful Services a Reliable Actors v rámci aplikace začnou pravidelně zálohovat podle přidružených zásad zálohování.

Událost stavu zálohovaného oddílu

Výpis záloh

Zálohy přidružené ke všem oddílům, které patří do Reliable Stateful Services a Reliable Actors aplikace, je možné vyčíslit pomocí rozhraní API GetBackups . Zálohy je možné vyčíslit pro aplikaci, službu nebo oddíl.

PowerShell využívající modul Microsoft.ServiceFabric.Powershell.Http


Get-SFApplicationBackupList -ApplicationId WordCount

Volání REST pomocí PowerShellu

Spuštěním následujícího skriptu PowerShellu vyvolejte rozhraní HTTP API pro vytvoření výčtu záloh vytvořených pro všechny oddíly uvnitř SampleApp aplikace.

$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

Ukázkový výstup pro výše uvedené spuštění:

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            :

Použití Service Fabric Explorer

Pokud chcete zobrazit zálohy v Service Fabric Explorer, přejděte na oddíl a vyberte kartu Zálohy.

Vytvoření výčtu záloh

Omezení a upozornění

  • Rutiny Service Fabric PowerShellu jsou v režimu Preview.
  • Clustery Service Fabric v Linuxu nejsou podporované.

Další kroky