Okresowe tworzenie kopii zapasowej i przywracanie w autonomicznej usłudze Service Fabric
Usługa Service Fabric to platforma do tworzenia niezawodnych, rozproszonych aplikacji w chmurze i zarządzania nimi. Obsługuje zarówno mikrousługi bezstanowe, jak i stanowe. Usługi stanowe mogą przechowywać ważne dane poza pojedynczym żądaniem lub transakcją. Jeśli usługa stanowa ulegnie awarii lub utraci dane, może być konieczne przywrócenie z najnowszej kopii zapasowej, aby kontynuować prawidłowe działanie.
Usługa Service Fabric replikuje stan między wieloma węzłami, aby upewnić się, że usługa jest wysoce dostępna. Nawet jeśli jeden węzeł w klastrze ulegnie awarii, usługa będzie nadal dostępna. W niektórych przypadkach jednak nadal pożądane jest, aby dane usługi były niezawodne w przypadku szerszych awarii.
Na przykład usługa może wymagać utworzenia kopii zapasowej danych w celu ochrony przed następującymi scenariuszami:
- Trwała utrata całego klastra usługi Service Fabric.
- Trwała utrata większości replik partycji usługi
- Błędy administracyjne, w których stan zostanie przypadkowo usunięty lub uszkodzony. Na przykład administrator z wystarczającym uprawnieniem błędnie usuwa usługę.
- Usterki w usłudze, które powodują uszkodzenie danych. Na przykład może się to zdarzyć, gdy uaktualnienie kodu usługi rozpoczyna zapisywanie uszkodzonych danych w kolekcji Reliable Collection. W takim przypadku zarówno kod, jak i dane mogą być przywracane do wcześniejszego stanu.
- Przetwarzanie danych w trybie offline. Może być wygodne posiadanie przetwarzania danych w trybie offline na potrzeby analizy biznesowej, która odbywa się oddzielnie od usługi, która generuje dane.
Usługa Service Fabric udostępnia wbudowany interfejs API do wykonywania kopii zapasowych i przywracania do punktu w czasie. Deweloperzy aplikacji mogą okresowo używać tych interfejsów API do tworzenia kopii zapasowych stanu usługi. Ponadto jeśli administratorzy usługi chcą wyzwolić kopię zapasową spoza usługi w określonym czasie (np. przed uaktualnieniem aplikacji), deweloperzy muszą uwidocznić kopię zapasową (i przywrócić) jako interfejs API z usługi. Utrzymywanie kopii zapasowych jest dodatkowym kosztem powyżej tego. Na przykład możesz chcieć wykonać pięć przyrostowych kopii zapasowych co pół godziny, a następnie pełną kopię zapasową. Po utworzeniu pełnej kopii zapasowej można usunąć wcześniejsze przyrostowe kopie zapasowe. Takie podejście wymaga dodatkowego kodu prowadzącego do dodatkowych kosztów podczas tworzenia aplikacji.
Tworzenie kopii zapasowych danych aplikacji w regularnych okresach jest podstawową potrzebą zarządzania aplikacją rozproszoną i ochrony przed utratą danych lub długotrwałą utratą dostępności usługi. Usługa Service Fabric udostępnia opcjonalną usługę tworzenia kopii zapasowych i przywracania, która umożliwia skonfigurowanie okresowej kopii zapasowej stanowych usług Reliable Services (w tym usług aktora) bez konieczności pisania dodatkowego kodu. Ułatwia również przywracanie wcześniej wykonanych kopii zapasowych.
Usługa Service Fabric udostępnia zestaw interfejsów API, które umożliwiają osiągnięcie następujących funkcji związanych z okresową funkcją tworzenia i przywracania kopii zapasowych:
- Zaplanuj okresową kopię zapasową usług Reliable Stateful i Reliable Actors z obsługą przekazywania kopii zapasowych do (zewnętrznych) lokalizacji magazynu. Obsługiwane lokalizacje magazynu
- Azure Storage
- Udział plików (lokalny)
- Wyliczanie kopii zapasowych
- Wyzwalanie nieplanowanej kopii zapasowej partycji
- Przywracanie partycji przy użyciu poprzedniej kopii zapasowej
- Tymczasowo zawieszanie kopii zapasowych
- Zarządzanie przechowywaniem kopii zapasowych (nadchodzące)
Wymagania wstępne
Klaster usługi Service Fabric w wersji 6.4 lub nowszej. Zapoznaj się z tym artykułem , aby uzyskać instrukcje pobierania wymaganego pakietu.
Certyfikat X.509 do szyfrowania wpisów tajnych potrzebnych do nawiązania połączenia z magazynem w celu przechowywania kopii zapasowych. Zapoznaj się z artykułem , aby dowiedzieć się, jak uzyskać lub utworzyć certyfikat X.509 z podpisem własnym.
Niezawodna aplikacja stanowa usługi Service Fabric utworzona przy użyciu zestawu Service Fabric SDK w wersji 3.0 lub nowszej. W przypadku aplikacji przeznaczonych dla platformy .NET Core 2.0 aplikacja powinna zostać skompilowana przy użyciu zestawu SDK usługi Service Fabric w wersji 3.1 lub nowszej.
Zainstaluj moduł Microsoft.ServiceFabric.PowerShell.Http na potrzeby wykonywania wywołań konfiguracji.
Install-Module -Name Microsoft.ServiceFabric.PowerShell.Http -AllowPrerelease
Uwaga
Jeśli wersja modułu PowerShellGet jest mniejsza niż 1.6.0, należy zaktualizować, aby dodać obsługę flagi -AllowPrerelease :
Install-Module -Name PowerShellGet -Force
- Przed wykonaniem żądania konfiguracji przy użyciu modułu
Connect-SFCluster
Microsoft.ServiceFabric.PowerShell.Http upewnij się, że klaster jest połączony przy użyciu polecenia .
Connect-SFCluster -ConnectionEndpoint 'https://mysfcluster.southcentralus.cloudapp.azure.com:19080' -X509Credential -FindType FindByThumbprint -FindValue '1b7ebe2174649c45474a4819dafae956712c31d3' -StoreLocation 'CurrentUser' -StoreName 'My' -ServerCertThumbprint '1b7ebe2174649c45474a4819dafae956712c31d3'
Włączanie usługi tworzenia kopii zapasowych i przywracania
Najpierw należy włączyć usługę tworzenia kopii zapasowych i przywracania w klastrze. Pobierz szablon klastra, który chcesz wdrożyć. Możesz użyć przykładowych szablonów. Włącz usługę tworzenia kopii zapasowych i przywracania, wykonując następujące kroki:
Sprawdź, czy
apiversion
parametr jest ustawiony na10-2017
w pliku konfiguracji klastra, a jeśli nie, zaktualizuj go, jak pokazano w poniższym fragmencie kodu:{ "apiVersion": "10-2017", "name": "SampleCluster", "clusterConfigurationVersion": "1.0.0", ... }
Teraz włącz usługę tworzenia kopii zapasowych i przywracania, dodając następującą
addonFeatures
sekcję wproperties
sekcji, jak pokazano w poniższym fragmencie kodu:"properties": { ... "addonFeatures": ["BackupRestoreService"], "fabricSettings": [ ... ] ... }
Skonfiguruj certyfikat X.509 na potrzeby szyfrowania poświadczeń. Jest to ważne, aby upewnić się, że podane poświadczenia, jeśli istnieją, aby połączyć się z magazynem, są szyfrowane przed utrwalone. Skonfiguruj certyfikat szyfrowania, dodając następującą
BackupRestoreService
sekcję wfabricSettings
sekcji, jak pokazano w poniższym fragmencie kodu:"properties": { ... "addonFeatures": ["BackupRestoreService"], "fabricSettings": [{ "name": "BackupRestoreService", "parameters": [ { "name": "SecretEncryptionCertThumbprint", "value": "[Thumbprint]" }, { "name": "SecretEncryptionCertX509StoreName", "value": "My" } ] }] ... }
Uwaga
[Odcisk palca] musi zastąpić prawidłowy odcisk palca certyfikatu, aby był używany do szyfrowania.
Po zaktualizowaniu pliku konfiguracji klastra przy użyciu powyższych zmian zastosuj je i pozwól na ukończenie wdrożenia/uaktualnienia. Po zakończeniu usługa tworzenia kopii zapasowej i przywracania jest uruchamiana w klastrze. Identyfikator URI tej usługi to
fabric:/System/BackupRestoreService
i usługa może znajdować się w sekcji usługi systemowej w eksploratorze usługi Service Fabric.
Włączanie okresowych kopii zapasowych dla niezawodnej usługi stanowej i elementów Reliable Actors
Przejdźmy przez kroki umożliwiające okresowe tworzenie kopii zapasowych dla niezawodnej usługi stanowej i elementów Reliable Actors. W tych krokach przyjęto założenie
- Klaster jest skonfigurowany przy użyciu service_ tworzenia kopii zapasowych i przywracania.
- Usługa Reliable Stateful jest wdrażana w klastrze. Na potrzeby tego przewodnika Szybki start identyfikator URI aplikacji to
fabric:/SampleApp
i identyfikator URI usługi Reliable Stateful należący do tej aplikacji tofabric:/SampleApp/MyStatefulService
. Ta usługa jest wdrażana z jedną partycją, a identyfikator partycji to23aebc1e-e9ea-4e16-9d5c-e91a614fefa7
.
Tworzenie zasad kopii zapasowych
Pierwszym krokiem jest utworzenie zasad tworzenia kopii zapasowych. Te zasady powinny obejmować harmonogram tworzenia kopii zapasowych, docelowy magazyn danych kopii zapasowej, nazwę zasad, maksymalną liczbę przyrostowych kopii zapasowych dozwolonych przed wyzwoleniem pełnej kopii zapasowej oraz zasady przechowywania dla magazynu kopii zapasowych.
W przypadku magazynu kopii zapasowych utwórz udział plików i przyznaj temu udziałowi plików dostęp readWrite dla wszystkich maszyn węzłów usługi Service Fabric. W tym przykładzie przyjęto założenie, że udział o nazwie BackupStore
znajduje się w pliku StorageServer
.
Program PowerShell korzystający z modułu 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'
Wywołanie rest przy użyciu programu PowerShell
Wykonaj następujący skrypt programu PowerShell, aby wywołać wymagany interfejs API REST, aby utworzyć nowe zasady.
$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'
Korzystanie z narzędzia Service Fabric Explorer
W narzędziu Service Fabric Explorer przejdź do karty Kopie zapasowe i wybierz pozycję Akcje > Utwórz zasady kopii zapasowej.
Wypełnij informacje. W przypadku klastrów autonomicznych należy wybrać udział plików.
Włączanie okresowej kopii zapasowej
Po zdefiniowaniu zasad w celu spełnienia wymagań dotyczących ochrony danych aplikacji zasady tworzenia kopii zapasowych powinny być skojarzone z aplikacją. W zależności od wymagania zasady tworzenia kopii zapasowych mogą być skojarzone z aplikacją, usługą lub partycją.
Program PowerShell korzystający z modułu Microsoft.ServiceFabric.PowerShell.Http
Enable-SFApplicationBackup -ApplicationId 'SampleApp' -BackupPolicyName 'BackupPolicy1'
Wywołanie rest przy użyciu programu PowerShell
Wykonaj następujący skrypt programu PowerShell, aby wywołać wymagany interfejs API REST, aby skojarzyć zasady tworzenia kopii zapasowych z nazwą BackupPolicy1
utworzoną w powyższym kroku z aplikacją 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'
Korzystanie z narzędzia Service Fabric Explorer
Upewnij się, że usługa BackupRestoreService jest włączona w klastrze.
Otwórz narzędzie Service Fabric Explorer.
Wybierz aplikację i przejdź do sekcji Kopia zapasowa. Kliknij pozycję Akcja tworzenia kopii zapasowej.
Kliknij pozycję Włącz/Zaktualizuj kopię zapasową aplikacji.
Na koniec wybierz odpowiednie zasady i wybierz pozycję Włącz kopię zapasową.
Sprawdź, czy okresowe kopie zapasowe działają
Po włączeniu tworzenia kopii zapasowej dla aplikacji wszystkie partycje należące do usług Reliable Stateful Services i Reliable Actors w aplikacji będą okresowo rozpoczynać tworzenie kopii zapasowej zgodnie ze skojarzonymi zasadami kopii zapasowych.
Tworzenie listy kopii zapasowych
Kopie zapasowe skojarzone ze wszystkimi partycjami należącymi do usług Reliable Stateful Services i Reliable Actors aplikacji można wyliczyć przy użyciu interfejsu API GetBackups . W zależności od wymagania kopie zapasowe mogą być wyliczane dla aplikacji, usługi lub partycji.
Program PowerShell korzystający z modułu Microsoft.ServiceFabric.PowerShell.Http
Get-SFApplicationBackupList -ApplicationId WordCount
Wywołanie rest przy użyciu programu PowerShell
Wykonaj następujący skrypt programu PowerShell, aby wywołać interfejs API HTTP w celu wyliczenia kopii zapasowych utworzonych dla wszystkich partycji wewnątrz SampleApp
aplikacji.
$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
Przykładowe dane wyjściowe dla powyższego przebiegu:
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 :
Korzystanie z narzędzia Service Fabric Explorer
Aby wyświetlić kopie zapasowe w narzędziu Service Fabric Explorer, przejdź do partycji i wybierz kartę Kopie zapasowe.
Ograniczenia/zastrzeżenia
- Polecenia cmdlet programu PowerShell usługi Service Fabric są w trybie podglądu.
- Brak obsługi klastrów usługi Service Fabric w systemie Linux.