Okresowe tworzenie kopii zapasowej i przywracanie w klastrze usługi Azure Service Fabric

Service Fabric to platforma systemów rozproszonych, która ułatwia opracowywanie niezawodnych, rozproszonych, mikrousług opartych na aplikacjach w chmurze i zarządzanie nimi. Umożliwia uruchamianie zarówno bezstanowych, jak i stanowych mikrousług. Usługi stanowe mogą obsługiwać stan niezmienny, autorytatywny poza żądaniem i odpowiedzią lub pełną transakcją. Jeśli usługa Stanowa ulegnie awarii przez długi czas lub utraci informacje z powodu awarii, może być konieczne przywrócenie jej najnowszej kopii zapasowej w celu kontynuowania świadczenia usługi po jej utworzeniu.

Usługa Service Fabric replikuje stan między wieloma węzłami, aby zapewnić wysoką dostępność usługi. 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 chcieć utworzyć kopię zapasową swoich danych w celu ochrony przed następującymi scenariuszami:

  • W przypadku trwałej utraty całego klastra usługi Service Fabric.
  • Trwała utrata większości replik partycji usługi
  • Błędy administracyjne polegające na tym, że stan został przypadkowo usunięty lub uszkodzony. Na przykład administrator z wystarczającymi uprawnieniami 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 do 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, aby przetwarzanie danych w trybie offline na potrzeby analizy biznesowej odbywało 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, tak jak 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 wykonać 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.

Usługa Backup and Restore w usłudze Service Fabric umożliwia łatwe i automatyczne tworzenie kopii zapasowych informacji przechowywanych w usługach stanowych. Tworzenie kopii zapasowych danych aplikacji w sposób okresowy jest podstawowym elementem ochrony przed utratą danych i niedostę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 aktorów) 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 zapewniających następujące funkcje związane z okresową funkcją tworzenia kopii zapasowych i przywracania:

  • 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 kopii zapasowej ad hoc partycji
  • Przywracanie partycji przy użyciu poprzedniej kopii zapasowej
  • Tymczasowe zawieszenie 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 dotyczące tworzenia klastra usługi Service Fabric przy użyciu szablonu zasobów platformy Azure.
  • Certyfikat X.509 do szyfrowania wpisów tajnych wymaganych 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.
  • Aplikacja Reliable Stateful 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 być kompilowana przy użyciu zestawu SDK usługi Service Fabric w wersji 3.1 lub nowszej.
  • Utwórz konto usługi Azure Storage do przechowywania kopii zapasowych aplikacji.
  • Zainstaluj moduł Microsoft.ServiceFabric.Powershell.Http (wersja zapoznawcza) 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, musisz zaktualizować usługę , aby dodać obsługę flagi -AllowPrerelease :

Install-Module -Name PowerShellGet -Force

  • Upewnij się, że klaster jest połączony za pomocą polecenia przed wykonaniem dowolnego żądania konfiguracji przy użyciu modułu Connect-SFCluster 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'

Włączanie usługi tworzenia kopii zapasowych i przywracania

Korzystanie z witryny Azure Portal

Włącz Include backup restore service pole wyboru na + Show optional settingsCluster Configuration karcie .

Włączanie usługi przywracania kopii zapasowych za pomocą portalu

Korzystanie z szablonu usługi Azure Resource Manager

Najpierw należy włączyć usługę tworzenia kopii zapasowych i przywracania w klastrze. Pobierz szablon dla klastra, który chcesz wdrożyć. Możesz użyć przykładowych szablonów lub utworzyć szablon Resource Manager. Włącz usługę tworzenia kopii zapasowej i przywracania , wykonując następujące kroki:

  1. Sprawdź, czy dla apiversion zasobu ustawiono wartość Microsoft.ServiceFabric/clusters2018-02-01 , a jeśli nie, zaktualizuj go, jak pokazano w poniższym fragmencie kodu:

    {
        "apiVersion": "2018-02-01",
        "type": "Microsoft.ServiceFabric/clusters",
        "name": "[parameters('clusterName')]",
        "location": "[parameters('clusterLocation')]",
        ...
    }
    
  2. Teraz włącz usługę tworzenia kopii zapasowych i przywracania , dodając następującą addonFeatures sekcję w properties sekcji, jak pokazano w poniższym fragmencie kodu:

        "properties": {
            ...
            "addonFeatures":  ["BackupRestoreService"],
            "fabricSettings": [ ... ]
            ...
        }
    
    
  3. Skonfiguruj certyfikat X.509 pod kątem szyfrowania poświadczeń. Jest to ważne, aby upewnić się, że poświadczenia podane w celu nawiązania połączenia z magazynem są szyfrowane przed utrwalaniem. Skonfiguruj certyfikat szyfrowania, dodając następującą BackupRestoreService sekcję w fabricSettings 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 zostać zastąpiony prawidłowym odciskiem palca certyfikatu, który ma być używany do szyfrowania.

  4. Po zaktualizowaniu szablonu klastra z poprzednimi zmianami zastosuj je i pozwól na ukończenie wdrożenia/uaktualnienia. Po zakończeniu usługa tworzenia kopii zapasowej i przywracania zostanie uruchomiona 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 okresowej kopii zapasowej dla usługi Reliable Stateful i Reliable Actors

Przejmijmy kroki umożliwiające okresowe tworzenie kopii zapasowych dla usługi Reliable Stateful i Reliable Actors. W tych krokach przyjęto założenie, że

  • Że klaster jest skonfigurowany przy użyciu zabezpieczeń X.509 z usługą tworzenia kopii zapasowych i przywracania.
  • Usługa Reliable Stateful jest wdrażana w klastrze. W tym przewodniku Szybki start identyfikator URI aplikacji to fabric:/SampleApp i identyfikator URI usługi Reliable Stateful należący do tej aplikacji to fabric:/SampleApp/MyStatefulService. Ta usługa jest wdrażana z pojedynczą partycją, a identyfikator partycji to 974bd92a-b395-4631-8a7f-53bd4ae9cf22.
  • Certyfikat klienta z rolą administratora jest instalowany w nazwie Mojego (Personal) magazynu certyfikatów CurrentUser na maszynie, z której będą wywoływane poniższe skrypty. W tym przykładzie użyto 1b7ebe2174649c45474a4819dafae956712c31d3 odcisku palca tego certyfikatu. Aby uzyskać więcej informacji na temat certyfikatów klienta, zobacz Kontrola dostępu oparta na rolach dla klientów usługi Service Fabric.

Tworzenie zasad kopii zapasowych

Pierwszym krokiem jest utworzenie zasad tworzenia kopii zapasowych opisujących harmonogram tworzenia kopii zapasowych, docelowy magazyn danych kopii zapasowych, nazwę zasad, maksymalne przyrostowe kopie zapasowe, które mają być dozwolone przed wyzwoleniem pełnych zasad tworzenia kopii zapasowych i przechowywania dla magazynu kopii zapasowych.

W przypadku magazynu kopii zapasowych użyj utworzonego powyżej konta usługi Azure Storage. Kontener backup-container jest skonfigurowany do przechowywania kopii zapasowych. Kontener o tej nazwie jest tworzony, jeśli jeszcze nie istnieje, podczas przekazywania kopii zapasowej. Wypełnij ConnectionString prawidłowe parametry połączenia dla konta usługi Azure Storage, zastępując ciąg account-name nazwą konta magazynu i account-key kluczem konta magazynu.

Program PowerShell przy użyciu modułu Microsoft.ServiceFabric.Powershell.Http

Wykonaj następujące polecenia cmdlet programu PowerShell do tworzenia nowych zasad tworzenia kopii zapasowych. Zastąp account-name ciąg nazwą konta magazynu i account-key kluczem konta magazynu.


New-SFBackupPolicy -Name 'BackupPolicy1' -AutoRestoreOnDataLoss $true -MaxIncrementalBackups 20 -FrequencyBased -Interval 00:15:00 -AzureBlobStore -ConnectionString 'DefaultEndpointsProtocol=https;AccountName=<account-name>;AccountKey=<account-key>;EndpointSuffix=core.windows.net' -ContainerName 'backup-container' -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 w celu utworzenia nowych zasad. Zastąp account-name ciąg nazwą konta magazynu i account-key kluczem konta magazynu.

$StorageInfo = @{
    ConnectionString = 'DefaultEndpointsProtocol=https;AccountName=<account-name>;AccountKey=<account-key>;EndpointSuffix=core.windows.net'
    ContainerName = 'backup-container'
    StorageKind = 'AzureBlobStore'
}

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

Korzystanie z Service Fabric Explorer

  1. W Service Fabric Explorer przejdź do karty Kopie zapasowe i wybierz pozycję Akcje > Utwórz zasady kopii zapasowej.

    Tworzenie zasad tworzenia kopii zapasowych

  2. Wypełnij informacje. Aby uzyskać szczegółowe informacje na temat określania interwału opartego na częstotliwości, zobacz właściwość TimeGrain. W przypadku klastrów platformy Azure należy wybrać pozycję AzureBlobStore.

    Tworzenie zasad kopii zapasowych Azure Blob Storage

Włączanie okresowej kopii zapasowej

Po zdefiniowaniu zasad tworzenia kopii zapasowych w celu spełnienia wymagań dotyczących ochrony danych aplikacji zasady tworzenia kopii zapasowych powinny być skojarzone z aplikacją. W zależności od wymagań 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 poniższy 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 = "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'

Korzystanie z Service Fabric Explorer

Upewnij się, że tryb zaawansowany dla Service Fabric Explorer jest włączony

  1. Kliknij koło zębate w prawym górnym rogu okna Eksplorator sf.

  2. Zaznacz pole wyboru "Tryb zaawansowany" i odśwież stronę Eksplorator sf.

  3. Wybierz aplikację i przejdź do akcji. Kliknij pozycję Włącz/zaktualizuj kopię zapasową aplikacji.

    Włączanie tworzenia kopii zapasowej aplikacji

  4. Na koniec wybierz odpowiednie zasady i kliknij pozycję Włącz kopię zapasową.

    Wybieranie zasad

Sprawdź, czy okresowe kopie zapasowe działają

Po włączeniu tworzenia kopii zapasowej na poziomie aplikacji wszystkie partycje należące do usług Reliable Stateful i Reliable Actors w ramach aplikacji będą okresowo tworzone kopie zapasowe zgodnie ze skojarzonymi zasadami tworzenia kopii zapasowych.

Zdarzenie kondycji kopii zapasowej partycji

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 . 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 poniższy skrypt programu PowerShell, aby wywołać interfejs API HTTP w celu wyliczenia kopii zapasowych utworzonych dla wszystkich partycji wewnątrz SampleApp aplikacji.

$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

Przykładowe dane wyjściowe dla powyższego przebiegu:

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            :

Korzystanie z Service Fabric Explorer

Aby wyświetlić kopie zapasowe w Service Fabric Explorer, przejdź do partycji i wybierz kartę Kopie zapasowe.

Wyliczanie kopii zapasowych

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.

Następne kroki