Sdílet prostřednictvím


Pravidelné zálohování a obnovení v clusteru Azure 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 chtít zálohovat svá data, aby se chránila 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 služebního oddílu
  • 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 předem připravené rozhraní API pro zálohování a obnovení v určitý časový okamžik. 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álohu mimo službu v určitém okamžiku, 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 dalším nákladem nad rámec tohoto. 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.

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 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 možností nahrávání záloh do externích úložišť. Podporovaná umístění úložiště
    • Azure Storage
    • Sdílený disk (lokální)
  • Výčet záloh
  • Spusťte ad hoc zálohování oddílu
  • Obnovení oddílu pomocí předchozí zálohy
  • Dočasné pozastavení záloh
  • Správa uchování záloh (nadcházející)

Požadavky

  • Cluster Service Fabric s verzí Fabric 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 k připojení k úložišti pro ukládání záloh. V článku se dozvíte, jak získat nebo vytvořit certifikát X.509.
  • 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 vyšší.
  • Vytvořte účet Azure Storage pro ukládání záloh aplikací.
  • 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 jakéhokoli 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í

Pomocí webu Azure Portal

Povolte zaškrtávací Include backup restore service políčko pod + Show optional settings na kartě Cluster Configuration.

Povolit službu obnovení zálohy pomocí portálu

Použití šablony Azure Resource Manageru

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 nebo vytvořit šablonu Resource Manageru. Povolte službu zálohování a obnovení pomocí následujících kroků:

  1. Zkontrolujte, zda je apiversion nastaven na 2018-02-01 pro prostředek Microsoft.ServiceFabric/clusters, a pokud ne, aktualizujte ho, jak je znázorněno v následujícím úryvku 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 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ů. Je důležité zajistit, aby přihlašovací údaje zadané pro připojení k úložišti byly před uložením zašifrovány. 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:

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

  4. Po aktualizaci šablony 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 spolehlivé aktéry

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

  • Cluster je nastaven pomocí zabezpečení X.509 se službou zálohování a obnovení.
  • Na cluster byla nasazena spolehlivá stavová služba. Pro tento průvodce rychlým startem je URI aplikace fabric:/SampleApp a URI pro spolehlivou stavovou službu patřící této aplikaci je fabric:/SampleApp/MyStatefulService. Tato služba je nasazena s jedním oddílem a ID oddílu je 974bd92a-b395-4631-8a7f-53bd4ae9cf22.
  • Klientský certifikát s rolí správce je nainstalován v úložišti Můj (Osobní) jméno úložiště certifikátů aktuálního uživatele v počítači, odkud budou vyvolány 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í. 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 použijte účet Azure Storage vytvořený výše. Kontejner backup-container je nakonfigurovaný tak, aby ukládaly zálohy. Kontejner s tímto názvem se vytvoří, pokud ještě neexistuje, během nahrávání záloh. Vyplňte BlobServiceUri adresou URL účtu služby Azure Storage, nahraďte account-name názvem svého úložného účtu a vyplňte volitelný parametr ManagedIdentityClientId ID klienta pro uživatelsky přiřazenou spravovanou identitu, pokud máte k prostředku přiřazeno více spravovaných identit.

Postupujte podle kroků pro přiřazení spravované identity u prostředku Azure:

  1. Povolení systémově nebo uživatelsky přiřazené spravované identity ve škálovacích sadách virtuálních počítačů Konfigurace spravovaných identit ve škálovací sadě virtuálních počítačů

  2. Přiřaďte roli spravované identitě VMSS k účtu úložiště podle pokynů, které začínají krokem dvě přiřazení rolí Azure pomocí portálu Azure - Azure RBAC

    • Přispěvatel účtů úložiště, Přispěvatel dat objektů blob úložiště a Přispěvatel dat tabulek úložiště, alespoň jako role.

Další informace o spravované identitě

PowerShell s využitím modulu 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 svého účtu úložiště.


    New-SFBackupPolicy -Name 'BackupPolicy1' -AutoRestoreOnDataLoss $false -MaxIncrementalBackups 20 -FrequencyBased -Interval "<hh:mm>" -ManagedIdentityAzureBlobStore -FriendlyName "AzureMI_storagesample" -BlobServiceUri 'https://<account-name>.blob.core.windows.net' -ContainerName 'backup-container' -ManagedIdentityType "VMSS" -ManagedIdentityClientId "<Client-Id of User-Assigned MI>" -Basic -RetentionDuration '10.00:00:00'

    # Use Optional parameter `ManagedIdentityClientId` with Client-Id of User-Assigned Managed Identity in case of multiple User-Assigned Managed Identities assigned to your resource, or both SAMI & UAMI assigned and we need to use UAMI as the default, else no need of this paramter.

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. Nahraďte account-name názvem svého účtu úložiště.

$StorageInfo = @{
    StorageKind = "ManagedIdentityAzureBlobStore"
    FriendlyName = "AzureMI_storagesample"
    BlobServiceUri = "https://<account-name>.blob.core.windows.net"
    ContainerName = "backup-container"
    ManagedIdentityType = "VMSS"
    ManagedIdentityClientId = "<Client-Id of User-Assigned MI>" # Use Optional parameter `ManagedIdentityClientId` with Client-Id of User-Assigned Managed Identity in case of multiple User-Assigned Managed Identities assigned to your resource, or both SAMI & UAMI assigned and we need to use UAMI as the default, else no need of this paramter.
}

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

  1. V Service Fabric Exploreru klikněte na Cluster na levém bočním panelu, 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 zadat interval založený na frekvenci, naleznete ve vlastnosti TimeGrain. U clusterů Azure by se měl vybrat ManagedIdentityAzureBlobStore.

    Vytvořit zásady zálohování pro spravovanou identitu služby Azure Blob Storage

Povolení pravidelného zálohování

Po definování zásad zálohování 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 = "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 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 klikněte na Povolit zálohování.

    Vybrat zásadu

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

Po povolení zálohování na úrovni aplikace 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 zdraví zálohovaného oddílu

Výpis záloh

Zálohy přidružené ke všem oddílům patřícím k spolehlivým stavovým službám a Reliable Actorům aplikace lze vypsat pomocí rozhraní API GetBackups. Zálohy je možné 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 = "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 Exploreru

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

Výčet záloh

Omezení/ upozornění

  • Cmdlety PowerShell pro Service Fabric jsou v náhledovém režimu.
  • V Linuxu se nepodporuje clustery Service Fabric.

Další kroky