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 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 předem připravené 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á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 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.
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 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 ad hoc zálohování 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 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
Zaškrtněte Include backup restore service
políčko na + Show optional settings
Cluster Configuration
kartě.
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ů:
Zkontrolujte, jestli
apiversion
je proMicrosoft.ServiceFabric/clusters
prostředek nastavený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')]", ... }
Teď povolte službu zálohování a obnovení přidáním následující
addonFeatures
části doproperties
části, jak je znázorněno v následujícím fragmentu kódu:"properties": { ... "addonFeatures": ["BackupRestoreService"], "fabricSettings": [ ... ] ... }
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 dofabricSettings
čá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í.
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 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í, že
- Cluster je nastaven pomocí zabezpečení X.509 se službou zálohování a obnovení.
- V clusteru se nasadí spolehlivá stavová služba. Pro tuto příručku pro rychlý start je
fabric:/SampleApp
identifikátor URI aplikace a identifikátor URI pro spolehlivé stavové služby patřící této aplikaci jefabric:/SampleApp/MyStatefulService
. Tato služba se nasadí s jedním oddílem a ID oddílu je974bd92a-b395-4631-8a7f-53bd4ae9cf22
. - Klientský certifikát s rolí správce se nainstaluje v názvu úložiště osobního úložiště aktuálního uživatele na počítači, ze kterého 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
adresu URL účtu služby Azure Storage a nahraďte account-name
názvem vašeho účtu úložiště a naplňte volitelný parametr ManagedIdentityClientId
ID klienta spravované identity přiřazené uživatelem, pokud máte k vašemu prostředku přiřazených více spravovaných identit.
Postupujte podle kroků pro přiřazení spravované identity u prostředku Azure:
Povolení spravované identity přiřazené systémem nebo přiřazené uživatelem ve škálovacích sadách virtuálních počítačů – Konfigurace spravovaných identit ve škálovací sadě virtuálních počítačů
Přiřazení role spravované identitě škálovací sady virtuálních počítačů k účtu úložiště Přiřazení rolí Azure pomocí webu Azure Portal – Azure RBAC
- Role přispěvatele dat objektů blob služby Storage minimálně
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
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í.
Vyplňte informace. Podrobnosti o tom, jak zadat interval založený na frekvenci, naleznete v TimeGrain vlastnost. U clusterů Azure by se měl vybrat ManagedIdentityAzureBlobStore.
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.
Otevřete Service Fabric Explorer.
Vyberte aplikaci a přejděte do části Zálohování. Klikněte na akci zálohování.
Klikněte na Povolit nebo aktualizovat zálohování aplikací.
Nakonec vyberte požadovanou zásadu a klikněte na Povolit zálohování.
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í.
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. 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í.
Omezení/ upozornění
- Rutiny Prostředí PowerShell pro Service Fabric jsou v režimu preview.
- V Linuxu se nepodporuje clustery Service Fabric.