Udostępnij za pośrednictwem


Okresowe wykonywanie kopii zapasowej i przywracanie w klastrze Azure 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 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, 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, 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 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 regularnych okresach 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 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 kopii zapasowej ad hoc 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 tworzenia klastra usługi Service Fabric przy użyciu szablonu zasobów platformy Azure.
  • 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.
  • 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.
  • Utwórz konto usługi Azure Storage na potrzeby przechowywania kopii zapasowych aplikacji.
  • 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 za pomocą 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

Przy użyciu witryny Azure Portal

Włącz Include backup restore service pole wyboru na + Show optional settings Cluster 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 klastra, który chcesz wdrożyć. Możesz użyć przykładowych szablonów lub utworzyć szablon usługi Resource Manager. Włącz usługę tworzenia kopii zapasowych i przywracania, wykonując następujące kroki:

  1. Sprawdź, czy apiversion dla zasobu ustawiono wartość Microsoft.ServiceFabric/clusters 2018-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 na potrzeby szyfrowania poświadczeń. Jest to ważne, aby upewnić się, że poświadczenia podane do nawiązania połączenia z magazynem są szyfrowane przed utrwalone. 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 zastąpić prawidłowy odcisk palca certyfikatu, aby był używany do szyfrowania.

  4. Po zaktualizowaniu szablonu klastra z poprzednimi zmianami zastosuj je i pozwól na ukończenie wdrażania/uaktualniania. 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 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, że

  • Klaster jest konfigurowany 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 jedną partycją, a identyfikator partycji to 974bd92a-b395-4631-8a7f-53bd4ae9cf22.
  • Certyfikat klienta z rolą administratora jest instalowany w nazwie magazynu My (Personal) lokalizacji magazynu certyfikatów CurrentUser na maszynie, z której będą wywoływane poniższe skrypty. W tym przykładzie użyto 1b7ebe2174649c45474a4819dafae956712c31d3 jako 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. 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 użyj utworzonego powyżej konta usługi Azure Storage. Kontener backup-container jest skonfigurowany do przechowywania kopii zapasowych. Zostanie utworzony kontener o tej nazwie, jeśli jeszcze nie istnieje, podczas przekazywania kopii zapasowej. Wypełnij BlobServiceUri adres URL konta usługi Azure Storage, zastępując account-name ciąg nazwą konta magazynu i wypełnij opcjonalny parametr ManagedIdentityClientId identyfikatorem klienta tożsamości zarządzanej przypisanej przez użytkownika, jeśli istnieje wiele tożsamości zarządzanych przypisanych do zasobu.

Wykonaj kroki przypisywania tożsamości zarządzanej w zasobie platformy Azure:

  1. Włączanie tożsamości zarządzanej przypisanej przez system lub przypisanej przez użytkownika w zestawach skalowania maszyn wirtualnych Konfigurowanie tożsamości zarządzanych w zestawie skalowania maszyn wirtualnych

  2. Przypisywanie roli do tożsamości zarządzanej usługi Virtual Machine Scale Sets do konta magazynu Przypisywanie ról platformy Azure przy użyciu witryny Azure Portal — Azure RBAC

    1. Rola współautora danych obiektu blob usługi Storage co najmniej

Aby uzyskać więcej informacji na temat tożsamości zarządzanej

Program PowerShell korzystający z modułu Microsoft.ServiceFabric.Powershell.Http

Wykonaj następujące polecenia cmdlet programu PowerShell, aby utworzyć nowe zasady tworzenia kopii zapasowych. Zastąp account-name ciąg nazwą konta magazynu.


    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.

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. Zastąp account-name ciąg nazwą konta magazynu.

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

Korzystanie z narzędzia Service Fabric Explorer

  1. W narzędziu Service Fabric Explorer kliknij pozycję Klaster w panelu po lewej stronie, przejdź do karty Kopie zapasowe i wybierz pozycję Akcje > Utwórz zasady kopii zapasowej.

    Tworzenie zasad 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ę ManagedIdentityAzureBlobStore.

    Tworzenie tożsamości zarządzanej zasad kopii zapasowych w usłudze 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 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 = "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 narzędzia Service Fabric Explorer

Upewnij się, że usługa BackupRestoreService jest włączona w klastrze.

  1. Otwórz narzędzie Service Fabric Explorer.

  2. Wybierz aplikację i przejdź do sekcji Kopia zapasowa. Kliknij pozycję Akcja tworzenia kopii zapasowej.

  3. 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 Services i Reliable Actors w aplikacji będą okresowo tworzyć 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 można wyliczyć 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 = "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 narzędzia Service Fabric Explorer

Aby wyświetlić kopie zapasowe w narzędziu 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