Regelbunden säkerhetskopiering och återställning i en fristående Service Fabric
Service Fabric är en plattform för att utveckla och hantera tillförlitliga, distribuerade molnprogram. Den stöder både tillståndslösa och tillståndskänsliga mikrotjänster. Tillståndskänsliga tjänster kan behålla viktiga data utöver en enda begäran eller transaktion. Om en tillståndskänslig tjänst slutar fungera eller förlorar data kan den behöva återställas från en säkerhetskopia nyligen för att fortsätta fungera korrekt.
Service Fabric replikerar tillståndet över flera noder för att säkerställa att tjänsten har hög tillgänglighet. Även om en nod i klustret misslyckas fortsätter tjänsten att vara tillgänglig. I vissa fall är det dock fortfarande önskvärt att tjänstdata är tillförlitliga mot bredare fel.
En tjänst kan till exempel behöva säkerhetskopiera sina data för att skydda mot följande scenarier:
- Permanent förlust av ett helt Service Fabric-kluster.
- Permanent förlust av en majoritet av replikerna i en tjänstpartition
- Administrativa fel där tillståndet oavsiktligt tas bort eller skadas. En administratör med tillräcklig behörighet tar till exempel felaktigt bort tjänsten.
- Buggar i tjänsten som orsakar skadade data. Detta kan till exempel inträffa när en uppgradering av tjänstkoden börjar skriva felaktiga data till en tillförlitlig samling. I sådana fall kan både koden och data behöva återställas till ett tidigare tillstånd.
- Databearbetning offline. Det kan vara praktiskt att arbeta offline med data för business intelligence som sker separat från den tjänst som genererar data.
Service Fabric tillhandahåller ett inbyggt API för säkerhetskopiering och återställning till tidpunkt. Programutvecklare kan använda dessa API:er för att säkerhetskopiera tjänstens tillstånd med jämna mellanrum. Om tjänstadministratörer dessutom vill utlösa en säkerhetskopia utanför tjänsten vid en viss tidpunkt (till exempel innan de uppgraderar programmet) måste utvecklarna exponera säkerhetskopiering (och återställning) som ett API från tjänsten. Att underhålla säkerhetskopiorna är en extra kostnad utöver detta. Du kanske till exempel vill göra fem inkrementella säkerhetskopior varje halvtimme, följt av en fullständig säkerhetskopia. Efter den fullständiga säkerhetskopieringen kan du ta bort de tidigare inkrementella säkerhetskopiorna. Den här metoden kräver ytterligare kod som leder till ytterligare kostnader under programutvecklingen.
Regelbunden säkerhetskopiering av programdata är ett grundläggande behov av att hantera ett distribuerat program och skydda mot förlust av data eller långvarig förlust av tjänsttillgänglighet. Service Fabric tillhandahåller en valfri säkerhetskopierings- och återställningstjänst som gör att du kan konfigurera regelbunden säkerhetskopiering av tillståndskänsliga Reliable Services (inklusive Aktörstjänster) utan att skriva någon ytterligare kod. Det underlättar också återställning av tidigare tagna säkerhetskopior.
Service Fabric tillhandahåller en uppsättning API:er för att uppnå följande funktioner som rör funktionen för periodisk säkerhetskopiering och återställning:
- Schemalägg regelbunden säkerhetskopiering av Reliable Stateful-tjänster och Reliable Actors med stöd för att ladda upp säkerhetskopiering till (externa) lagringsplatser. Lagringsplatser som stöds
- Azure Storage
- Filresurs (lokalt)
- Räkna upp säkerhetskopior
- Utlösa en oplanerad säkerhetskopia av en partition
- Återställa en partition med hjälp av tidigare säkerhetskopiering
- Tillfälligt pausa säkerhetskopieringar
- Kvarhållningshantering av säkerhetskopior (kommande)
Förutsättningar
Service Fabric-kluster med Fabric version 6.4 eller senare. I den här artikeln finns steg för att ladda ned paketet som krävs.
X.509-certifikat för kryptering av hemligheter som behövs för att ansluta till lagring för att lagra säkerhetskopior. Läs artikeln om hur du hämtar eller skapar ett självsignerat X.509-certifikat.
Service Fabric Reliable Stateful-program som skapats med Service Fabric SDK version 3.0 eller senare. För program som riktar sig till .NET Core 2.0 bör programmet skapas med Service Fabric SDK version 3.1 eller senare.
Installera Microsoft.ServiceFabric.PowerShell.Http-modulen för att göra konfigurationsanrop.
Install-Module -Name Microsoft.ServiceFabric.PowerShell.Http -AllowPrerelease
Kommentar
Om din PowerShellGet-version är mindre än 1.6.0 måste du uppdatera för att lägga till stöd för flaggan -AllowPrerelease :
Install-Module -Name PowerShellGet -Force
- Kontrollera att klustret är anslutet
Connect-SFCluster
med kommandot innan du gör någon konfigurationsbegäran med hjälp av Modulen Microsoft.ServiceFabric.PowerShell.Http.
Connect-SFCluster -ConnectionEndpoint 'https://mysfcluster.southcentralus.cloudapp.azure.com:19080' -X509Credential -FindType FindByThumbprint -FindValue '1b7ebe2174649c45474a4819dafae956712c31d3' -StoreLocation 'CurrentUser' -StoreName 'My' -ServerCertThumbprint '1b7ebe2174649c45474a4819dafae956712c31d3'
Aktivera säkerhetskopierings- och återställningstjänst
Först måste du aktivera säkerhetskopierings- och återställningstjänsten i klustret. Hämta mallen för klustret som du vill distribuera. Du kan använda exempelmallarna. Aktivera säkerhetskopierings - och återställningstjänsten med följande steg:
Kontrollera att
apiversion
är inställt10-2017
på i klusterkonfigurationsfilen och om inte uppdaterar du den enligt följande kodfragment:{ "apiVersion": "10-2017", "name": "SampleCluster", "clusterConfigurationVersion": "1.0.0", ... }
Aktivera nu säkerhetskopierings - och återställningstjänsten genom att lägga till följande
addonFeatures
avsnitt underproperties
avsnittet enligt följande kodfragment:"properties": { ... "addonFeatures": ["BackupRestoreService"], "fabricSettings": [ ... ] ... }
Konfigurera X.509-certifikat för kryptering av autentiseringsuppgifter. Detta är viktigt för att säkerställa att eventuella autentiseringsuppgifter som tillhandahålls för att ansluta till lagring krypteras innan de bevaras. Konfigurera krypteringscertifikat genom att lägga till följande
BackupRestoreService
avsnitt underfabricSettings
avsnittet enligt följande kodfragment:"properties": { ... "addonFeatures": ["BackupRestoreService"], "fabricSettings": [{ "name": "BackupRestoreService", "parameters": [ { "name": "SecretEncryptionCertThumbprint", "value": "[Thumbprint]" }, { "name": "SecretEncryptionCertX509StoreName", "value": "My" } ] }] ... }
Kommentar
[Tumavtryck] måste ersättas med giltigt tumavtryck för certifikat som ska användas för kryptering.
När du har uppdaterat klusterkonfigurationsfilen med föregående ändringar tillämpar du dem och låter distributionen/uppgraderingen slutföras. När du är klar körs säkerhetskopierings- och återställningstjänsten i klustret. Uri för den här tjänsten är
fabric:/System/BackupRestoreService
och tjänsten kan finnas under avsnittet systemtjänst i Service Fabric Explorer.
Aktivera regelbunden säkerhetskopiering för Reliable Stateful-tjänsten och Reliable Actors
Nu ska vi gå igenom stegen för att aktivera regelbunden säkerhetskopiering för Reliable Stateful-tjänsten och Reliable Actors. De här stegen förutsätter
- Klustret konfigureras med säkerhetskopiering och återställning service_.
- En Reliable Stateful-tjänst distribueras i klustret. I den här snabbstartsguiden är
fabric:/SampleApp
program-URI:n och Uri för Reliable Stateful-tjänsten som tillhör det här programmet .fabric:/SampleApp/MyStatefulService
Den här tjänsten distribueras med en enda partition och partitions-ID:t är23aebc1e-e9ea-4e16-9d5c-e91a614fefa7
.
Skapa säkerhetskopieringspolicy
Det första steget är att skapa en säkerhetskopieringsprincip. Den här principen bör innehålla schemat för säkerhetskopiering, mållagring för säkerhetskopieringsdata, principnamn, maximalt antal inkrementella säkerhetskopior som tillåts innan en fullständig säkerhetskopia utlöses och kvarhållningsprincipen för lagring av säkerhetskopior.
För lagring av säkerhetskopior skapar du en filresurs och ger ReadWrite åtkomst till den här filresursen för alla Service Fabric Node-datorer. Det här exemplet förutsätter att resursen med namnet BackupStore
finns på StorageServer
.
PowerShell med hjälp av Modulen 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'
Vilosamtal med PowerShell
Kör följande PowerShell-skript för att anropa rest-API:et som krävs för att skapa en ny princip.
$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'
Använda Service Fabric Explorer
I Service Fabric Explorer navigerar du till fliken Säkerhetskopior och väljer Åtgärder > Skapa säkerhetskopieringsprincip.
Fyll i informationen. För fristående kluster bör FileShare väljas.
Aktivera periodisk säkerhetskopiering
När du har definierat principen för att uppfylla dataskyddskraven för programmet bör säkerhetskopieringsprincipen associeras med programmet. Beroende på kravet kan säkerhetskopieringsprincipen associeras med ett program, en tjänst eller en partition.
PowerShell med hjälp av Modulen Microsoft.ServiceFabric.PowerShell.Http
Enable-SFApplicationBackup -ApplicationId 'SampleApp' -BackupPolicyName 'BackupPolicy1'
Vilosamtal med PowerShell
Kör följande PowerShell-skript för att anropa rest-API:et som krävs för att associera säkerhetskopieringsprincipen med namnet BackupPolicy1
som skapades i ovanstående steg med programmet 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'
Använda Service Fabric Explorer
Kontrollera att BackupRestoreService är aktiverat i klustret.
Öppna Service Fabric Explorer.
Välj ett program och gå till avsnittet Säkerhetskopiering. Klicka på Säkerhetskopieringsåtgärd.
Klicka på Aktivera/uppdatera programsäkerhetskopiering.
Välj slutligen önskad princip och välj Aktivera säkerhetskopiering.
Kontrollera att periodiska säkerhetskopieringar fungerar
När du har aktiverat säkerhetskopiering för programmet börjar alla partitioner som tillhör Reliable Stateful-tjänster och Reliable Actors under programmet att säkerhetskopieras regelbundet enligt den associerade säkerhetskopieringsprincipen.
Lista säkerhetskopior
Säkerhetskopior som är associerade med alla partitioner som tillhör Reliable Stateful-tjänster och Reliable Actors i programmet kan räknas upp med hjälp av GetBackups API. Beroende på kravet kan säkerhetskopiorna räknas upp för program, tjänster eller en partition.
PowerShell med hjälp av Modulen Microsoft.ServiceFabric.PowerShell.Http
Get-SFApplicationBackupList -ApplicationId WordCount
Vilosamtal med PowerShell
Kör följande PowerShell-skript för att anropa HTTP-API:et för att räkna upp de säkerhetskopior som skapats för alla partitioner i SampleApp
programmet.
$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
Exempelutdata för ovanstående körning:
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 :
Använda Service Fabric Explorer
Om du vill visa säkerhetskopior i Service Fabric Explorer går du till en partition och väljer fliken Säkerhetskopior.
Begränsning/förbehåll
- Service Fabric PowerShell-cmdletar är i förhandsgranskningsläge.
- Inget stöd för Service Fabric-kluster i Linux.