Udostępnij za pośrednictwem


Jak zaimplementować odzyskiwanie po awarii przy użyciu funkcji tworzenia i przywracania kopii zapasowych w usłudze Azure API Management

DOTYCZY: Developer | Podstawowa | Standardowa | Premia

Publikując interfejsy API i zarządzając nimi za pośrednictwem usługi Azure API Management, korzystasz z możliwości odporności na uszkodzenia i infrastruktury, które w przeciwnym razie można projektować, implementować i zarządzać nimi ręcznie. Platforma Azure zmniejsza ułamek potencjalnych awarii przy ułamku kosztów.

Aby odzyskać sprawę po problemach z dostępnością, które mają wpływ na usługę API Management, w dowolnym momencie przygotuj się do ponownego tworzenia usługi w innym regionie. W zależności od celu czasu odzyskiwania możesz zachować usługę rezerwową w co najmniej jednym regionie. Możesz również spróbować zachować ich konfigurację i zawartość zsynchronizowaną z aktywną usługą zgodnie z celem punktu odzyskiwania. Funkcje tworzenia i przywracania kopii zapasowych usługi API Management zapewniają niezbędne bloki konstrukcyjne do implementowania strategii odzyskiwania po awarii.

Operacje tworzenia i przywracania kopii zapasowych mogą być również używane do replikowania konfiguracji usługi API Management między środowiskami operacyjnymi, na przykład programowanie i przemieszczanie. Uważaj, że dane środowiska uruchomieniowego, takie jak użytkownicy i subskrypcje, również zostaną skopiowane, co może nie zawsze być pożądane.

W tym artykule pokazano, jak zautomatyzować operacje tworzenia i przywracania kopii zapasowych wystąpienia usługi API Management przy użyciu zewnętrznego konta magazynu. Przedstawione tutaj kroki korzystają z poleceń cmdlet programu Azure PowerShell Backup-AzApiManagement i Restore-AzApiManagement albo interfejsów API Management Service — Backup and Api Management — Restore REST API.

Ostrzeżenie

Każda kopia zapasowa wygasa po upływie 30 dni. Jeśli spróbujesz przywrócić kopię zapasową po upływie 30-dniowego okresu wygaśnięcia, przywracanie zakończy się niepowodzeniem z komunikatem Cannot restore: backup expired .

Ważne

Operacja przywracania nie zmienia niestandardowej konfiguracji nazwy hosta usługi docelowej. Zalecamy używanie tej samej niestandardowej nazwy hosta i certyfikatu TLS zarówno dla usług aktywnych, jak i rezerwowych, aby po zakończeniu operacji przywracania ruch mógł zostać ponownie skierowany do wystąpienia rezerwowego przez prostą zmianę rekordu CNAME systemu DNS.

Uwaga

Do interakcji z platformą Azure zalecamy używanie modułu Azure Az w programie PowerShell. Zobacz Instalowanie programu Azure PowerShell, aby rozpocząć. Aby dowiedzieć się, jak przeprowadzić migrację do modułu Az PowerShell, zobacz Migracja programu Azure PowerShell z modułu AzureRM do modułu Az.

Wymagania wstępne

  • Wystąpienie usługi API Management. Jeśli go nie masz, zobacz Tworzenie wystąpienia usługi API Management.

  • Konto usługi Azure Storage. Jeśli go nie masz, zobacz Tworzenie konta magazynu.

  • Najnowsza wersja programu Azure PowerShell, jeśli planujesz używać poleceń cmdlet programu Azure PowerShell. Jeśli jeszcze tego nie zrobiono, zainstaluj program Azure PowerShell.

Konfigurowanie dostępu do konta magazynu

Podczas uruchamiania operacji tworzenia kopii zapasowej lub przywracania należy skonfigurować dostęp do konta magazynu. Usługa API Management obsługuje dwa mechanizmy dostępu do magazynu: klucz dostępu usługi Azure Storage lub tożsamość zarządzaną usługi API Management.

Konfigurowanie klucza dostępu do konta magazynu

Platforma Azure generuje dwa 512-bitowe klucze dostępu do konta magazynu dla każdego konta magazynu. Za pomocą tych kluczy można autoryzować dostęp do danych na koncie magazynu za pośrednictwem autoryzacji klucza współdzielonego. Aby wyświetlić, pobrać klucze i zarządzać nimi, zobacz Zarządzanie kluczami dostępu do konta magazynu.

Konfigurowanie tożsamości zarządzanej usługi API Management

Uwaga

Używanie tożsamości zarządzanej usługi API Management na potrzeby operacji magazynowania podczas tworzenia kopii zapasowych i przywracania jest obsługiwane w wersji 2021-04-01-preview interfejsu API REST usługi API Management lub nowszej.

  1. Włącz tożsamość zarządzaną przypisaną przez system lub przypisaną przez użytkownika dla usługi API Management w wystąpieniu usługi API Management.

    • Jeśli włączysz tożsamość zarządzaną przypisaną przez użytkownika, zanotuj identyfikator klienta tożsamości.
    • Jeśli wykonasz kopię zapasową i przywrócisz do różnych wystąpień usługi API Management, włącz tożsamość zarządzaną zarówno w wystąpieniach źródłowych, jak i docelowych.
  2. Przypisz tożsamość roli Współautor danych obiektu blob usługi Storage w zakresie do konta magazynu używanego do tworzenia kopii zapasowych i przywracania. Aby przypisać rolę, użyj witryny Azure Portal lub innych narzędzi platformy Azure.

Tworzenie kopii zapasowej usługi API Management

Zaloguj się przy użyciu programu Azure PowerShell.

W następujących przykładach:

  • Wystąpienie usługi API Management o nazwie myapim znajduje się w grupie zasobów apimresourcegroup.
  • Konto magazynu o nazwie backupstorageaccount znajduje się w grupie zasobów storageresourcegroup. Konto magazynu ma kontener o nazwie backups.
  • Zostanie utworzony obiekt blob kopii zapasowej o nazwie ContosoBackup.apimbackup.

Ustaw zmienne w programie PowerShell:

$apiManagementName="myapim";
$apiManagementResourceGroup="apimresourcegroup";
$storageAccountName="backupstorageaccount";
$storageResourceGroup="storageresourcegroup";
$containerName="backups";
$blobName="ContosoBackup.apimbackup"

Dostęp przy użyciu klucza dostępu do magazynu

$storageKey = (Get-AzStorageAccountKey -ResourceGroupName $storageResourceGroup -StorageAccountName $storageAccountName)[0].Value

$storageContext = New-AzStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $storageKey

Backup-AzApiManagement -ResourceGroupName $apiManagementResourceGroup -Name $apiManagementName `
    -StorageContext $storageContext -TargetContainerName $containerName -TargetBlobName $blobName

Dostęp przy użyciu tożsamości zarządzanej

Aby skonfigurować tożsamość zarządzaną w wystąpieniu usługi API Management w celu uzyskania dostępu do konta magazynu, zobacz Konfigurowanie tożsamości zarządzanej we wcześniejszej sekcji tego artykułu.

Dostęp przy użyciu tożsamości zarządzanej przypisanej przez system

$storageContext = New-AzStorageContext -StorageAccountName $storageAccountName

Backup-AzApiManagement -ResourceGroupName $apiManagementResourceGroup -Name $apiManagementName `
    -StorageContext $storageContext -TargetContainerName $containerName `
    -TargetBlobName $blobName -AccessType "SystemAssignedManagedIdentity"

Dostęp przy użyciu tożsamości zarządzanej przypisanej przez użytkownika

W tym przykładzie tożsamość zarządzana przypisana przez użytkownika o nazwie myidentity znajduje się w grupie zasobów identityresourcegroup.

$identityName = "myidentity";
$identityResourceGroup = "identityresourcegroup";

$identityId = (Get-AzUserAssignedIdentity -Name $identityName -ResourceGroupName $identityResourceGroup).ClientId

$storageContext = New-AzStorageContext -StorageAccountName $storageAccountName

Backup-AzApiManagement -ResourceGroupName $apiManagementResourceGroup -Name $apiManagementName `
    -StorageContext $storageContext -TargetContainerName $containerName `
    -TargetBlobName $blobName -AccessType "UserAssignedManagedIdentity" ` -identityClientId $identityid

Tworzenie kopii zapasowej to długotrwała operacja, która może potrwać kilka minut. W tym czasie brama interfejsu API nadal obsługuje żądania, ale stan usługi to Aktualizowanie.

Przywracanie usługi API Management

Uwaga

Unikaj zmian konfiguracji usługi (na przykład interfejsów API, zasad, wyglądu portalu dla deweloperów) podczas wykonywania operacji przywracania. Zmiany można zastąpić.

W poniższych przykładach:

  • Wystąpienie usługi API Management o nazwie myapim jest przywracane z obiektu blob kopii zapasowej o nazwie ContosoBackup.apimbackup w obszarze backupstorageaccount konta magazynu.
  • Obiekt blob kopii zapasowej znajduje się w kontenerze o nazwie backups.

Ustaw zmienne w programie PowerShell:

$apiManagementName="myapim";
$apiManagementResourceGroup="apimresourcegroup";
$storageAccountName="backupstorageaccount";
$storageResourceGroup="storageresourcegroup";
$containerName="backups";
$blobName="ContosoBackup.apimbackup"

Dostęp przy użyciu klucza dostępu do magazynu

$storageKey = (Get-AzStorageAccountKey -ResourceGroupName $storageResourceGroup -StorageAccountName $storageAccountName)[0].Value

$storageContext = New-AzStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $storageKey

Restore-AzApiManagement -ResourceGroupName $apiManagementResourceGroup -Name $apiManagementName `
    -StorageContext $storageContext -SourceContainerName $containerName -SourceBlobName $blobName

Dostęp przy użyciu tożsamości zarządzanej

Aby skonfigurować tożsamość zarządzaną w wystąpieniu usługi API Management w celu uzyskania dostępu do konta magazynu, zobacz Konfigurowanie tożsamości zarządzanej we wcześniejszej sekcji tego artykułu.

Dostęp przy użyciu tożsamości zarządzanej przypisanej przez system

$storageContext = New-AzStorageContext -StorageAccountName $storageAccountName

Restore-AzApiManagement -ResourceGroupName $apiManagementResourceGroup -Name $apiManagementName `
    -StorageContext $storageContext -SourceContainerName $containerName `
    -SourceBlobName $blobName -AccessType "SystemAssignedManagedIdentity"

Dostęp przy użyciu tożsamości zarządzanej przypisanej przez użytkownika

W tym przykładzie tożsamość zarządzana przypisana przez użytkownika o nazwie myidentity znajduje się w grupie zasobów identityresourcegroup.

$identityName = "myidentity";
$identityResourceGroup = "identityresourcegroup";

$identityId = (Get-AzUserAssignedIdentity -Name $identityName -ResourceGroupName $identityResourceGroup).ClientId

$storageContext = New-AzStorageContext -StorageAccountName $storageAccountName

Restore-AzApiManagement -ResourceGroupName $apiManagementResourceGroup -Name $apiManagementName `
    -StorageContext $storageContext -SourceContainerName $containerName `
    -SourceBlobName $blobName -AccessType "UserAssignedManagedIdentity" ` -identityClientId $identityid

Przywracanie to długotrwała operacja, która może potrwać do 45 minut lub więcej.

Ograniczenia

  • Przywracanie kopii zapasowej jest gwarantowane tylko przez 30 dni od momentu jego utworzenia.
  • Podczas tworzenia kopii zapasowej należy unikać zmian zarządzania w usłudze, takich jak uaktualnienie warstwy cenowej lub obniżenie jej poziomu, zmiana nazwy domeny i nie tylko.
  • Zmiany wprowadzone w konfiguracji usługi (na przykład interfejsy API, zasady i wygląd portalu dla deweloperów) podczas wykonywania operacji tworzenia kopii zapasowej mogą zostać wykluczone z kopii zapasowej i zostaną utracone.
  • Kopia zapasowa nie przechwytuje wstępnie zagregowanych danych dziennika używanych w raportach wyświetlanych w oknie Analiza w witrynie Azure Portal.
  • Udostępnianie zasobów między źródłami (CORS) nie powinno być włączone w usłudze Blob Service na koncie magazynu.
  • Warstwa cenowa przywracanej usługi musi być zgodna z warstwą cenową przywracanej usługi kopii zapasowej.

Ograniczenia dotyczące sieci magazynu

Jeśli konto magazynu jest włączone, zaleca się użycie przypisanej przez system tożsamości zarządzanej wystąpienia usługi API Management w celu uzyskania dostępu do konta. Upewnij się, że konto magazynu udziela dostępu do zaufanych usług platformy Azure.

Co nie jest tworzone z kopii zapasowej

Częstotliwość wykonywania kopii zapasowych usługi ma wpływ na cel punktu odzyskiwania. Aby go zminimalizować, zalecamy zaimplementowanie regularnych kopii zapasowych i wykonywanie kopii zapasowych na żądanie po wprowadzeniu zmian w usłudze API Management.

Następne kroki

Zapoznaj się z następującymi powiązanymi zasobami dla procesu tworzenia/przywracania kopii zapasowej: