Sdílet prostřednictvím


Pravidelné zálohování a obnovení v samostatné službě Service Fabric

Service Fabric je platforma pro vývoj a správu spolehlivých distribuovaných cloudových aplikací. Podporuje bezstavové i stavové mikroslužby. Stavové služby můžou uchovávat důležitá data nad rámec jedné žádosti nebo transakce. Pokud stavová služba přestane fungovat nebo ztratí data, může být potřeba ji obnovit z nedávné zálohy, aby mohla pokračovat v práci správně.

Service Fabric replikuje stav napříč několika uzly, aby se zajistilo, že je 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 potřebovat zálohovat svá data, aby se chránila před následujícími scénáři:

  • Trvalá ztráta celého clusteru Service Fabric.
  • Trvalá ztráta většiny replik oddílu služby
  • Chyby správy, kdy se stát omylem odstraní nebo poškodí. Například správce s dostatečným oprávněním chybně odstraní službu.
  • Chyby ve službě, které způsobují poškození dat K tomu může dojít například v případě, že 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.
  • Zpracování offline dat. Může být vhodné mít offline zpracování dat pro business intelligence, ke kterým dochází 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, pokud správci služeb chtějí aktivovat zálohování mimo službu v určitém čase (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 vyšší než tato možnost. Můžete například chtít pořídit pět přírůstkových záloh každou půlhodinu a pak úplné zálohování. Po úplném zálohování můžete předchozí přírůstkové zálohy odstranit. Tento přístup vyžaduje další kód, který při vývoji aplikací vede k dalším nákladům.

Pravidelné zálohování dat aplikace je základní potřeba pro správu distribuované aplikace a ochrana před ztrátou dat nebo dlouhodobé ztráty dostupnosti služeb. Service Fabric poskytuje volitelnou službu zálohování a obnovení, která umožňuje nakonfigurovat pravidelné zálohování stavových spolehlivých služeb (včetně služeb actor), aniž byste museli psát další kód. Usnadňuje také obnovení dříve provedených záloh.

Service Fabric poskytuje sadu rozhraní API pro dosažení následujících funkcí souvisejících s funkcí pravidelného zálohování a obnovení:

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

Požadavky

  • Cluster Service Fabric s Fabric verze 6.4 nebo novější. Postup stažení požadovaného balíčku najdete v tomto článku .

  • Certifikát X.509 pro šifrování tajných kódů potřebných k připojení k úložišti pro ukládání záloh. Informace o získání nebo vytvoření certifikátu X.509 podepsaného svým držitelem najdete v článku .

  • Spolehlivá stavová aplikace Service Fabric sestavená pomocí sady Service Fabric SDK verze 3.0 nebo vyšší. Pro aplikace, které cílí na .NET Core 2.0, by měla být aplikace sestavena pomocí sady Service Fabric SDK verze 3.1 nebo novější.

  • Nainstalujte modul Microsoft.ServiceFabric.PowerShell.Http 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 podporu příznaku -AllowPrerelease :

Install-Module -Name PowerShellGet -Force

  • Před provedením požadavku na 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í

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

  1. Zkontrolujte, jestli apiversion je nastavená na 10-2017 konfigurační soubor clusteru, a pokud ne, aktualizujte ho, jak je znázorněno v následujícím fragmentu kódu:

    {
        "apiVersion": "10-2017",
        "name": "SampleCluster",
        "clusterConfigurationVersion": "1.0.0",
        ...
    }
    
  2. Teď povolte službu zálohování a obnovení přidáním následující addonFeatures části do 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é, abyste před uložením zajistili, že zadané přihlašovací údaje pro připojení k úložišti jsou zašifrované. Nakonfigurujte šifrovací certifikát přidáním následující BackupRestoreService části do fabricSettings části, 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í nahradit platný kryptografický otisk certifikátu, který se má použít k šifrování.

  4. Po aktualizaci konfiguračního souboru clusteru s předchozími změnami je použijte a nechte nasazení nebo upgrade dokončit. Po dokončení se služba zálohování a obnovení spustí ve vašem clusteru. Identifikátor URI této služby je fabric:/System/BackupRestoreService a služba může být umístěna v části systémová služba v Service Fabric Exploreru.

Povolení pravidelného zálohování pro spolehlivé stavové služby a Reliable Actors

Pojďme si projít kroky, jak povolit pravidelné zálohování pro spolehlivé stavové služby a Reliable Actors. Tyto kroky předpokládají:

  • Cluster je nakonfigurovaný se zálohováním a obnovením service_.
  • V clusteru se nasadí spolehlivá stavová služba. Pro účely této příručky pro rychlý start je fabric:/SampleApp identifikátor URI aplikace a identifikátor URI pro spolehlivou stavovou službu, která patří do této aplikace, je fabric:/SampleApp/MyStatefulService. Tato služba se nasadí s jedním oddílem a ID oddílu je 23aebc1e-e9ea-4e16-9d5c-e91a614fefa7.

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

Prvním krokem je vytvoření zásady zálohování. Tato zásada by měla zahrnovat plán zálohování, cílové úložiště pro zálohovaná data, název zásady, maximální povolený počet přírůstkových záloh před aktivací úplného zálohování a zásady uchovávání informací pro úložiště záloh.

Pro úložiště záloh vytvořte sdílenou složku a udělte oprávnění ReadWrite k této sdílené složce pro všechny počítače s uzly Service Fabric. Tento příklad předpokládá, že sdílená složka s názvem BackupStore je přítomna na StorageServer.

PowerShell s využitím modulu Microsoft.ServiceFabric.PowerShell.Http


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

Volání rest pomocí PowerShellu

Spusťte následující skript PowerShellu pro vyvolání požadovaného rozhraní REST API pro vytvoření nové zásady.

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

Použití Service Fabric Exploreru

  1. V Service Fabric Exploreru 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. U samostatných clusterů by se měla vybrat sdílená složka FileShare.

    Vytvoření sdílené složky zásad zálohování

Povolení pravidelného zálohování

Po definování zásady pro splnění požadavků aplikace na ochranu dat by se zásady zálohování měly přidružit k aplikaci. V závislosti na požadavku může být zásada zálohování přidružená k aplikaci, službě nebo oddílu.

PowerShell s využitím modulu 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ásady zálohování k názvu BackupPolicy1 vytvořenému v předchozím kroku s aplikací 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'

Použití Service Fabric Exploreru

Ujistěte se, že je v clusteru povolená služba BackupRestoreService.

  1. Otevřete Service Fabric Explorer.

  2. Vyberte aplikaci a přejděte do části Zálohování. Klikněte na akci zálohování.

  3. Klikněte na Povolit nebo aktualizovat zálohování aplikací.

    Povolení zálohování aplikací

  4. Nakonec vyberte požadovanou zásadu a vyberte Povolit zálohování.

    Vybrat zásadu

Ověření fungování pravidelných záloh

Po povolení zálohování pro aplikaci se všechny oddíly patřící do spolehlivých stavových služeb 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 patřícím do spolehlivých stavových služeb a Reliable Actors aplikace je možné vytvořit výčet pomocí rozhraní GetBackups API. V závislosti na požadavku je možné zálohy vyčíslit pro aplikaci, službu nebo oddíl.

PowerShell s využitím modulu Microsoft.ServiceFabric.PowerShell.Http

    Get-SFApplicationBackupList -ApplicationId WordCount     

Volání rest pomocí PowerShellu

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

$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

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

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            : 

Použití Service Fabric Exploreru

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

Vytvoření výčtu záloh

Omezení/ upozornění

  • Rutiny Prostředí PowerShell pro Service Fabric jsou v režimu preview.
  • V Linuxu se nepodporuje clustery Service Fabric.

Další kroky