So implementieren Sie die Notfallwiederherstellung mit Sichern und Wiederherstellen von Diensten in Azure API Management

GILT FÜR: Developer | Basic | Standard | Premium

Indem Sie Ihre APIs über Azure API Management veröffentlichen und verwalten, profitieren Sie von Fehlertoleranz- und Infrastrukturfunktionen, die Sie sonst erst manuell entwickeln, implementieren und verwalten müssten. Die Azure-Plattform minimiert einen Großteil der potenziellen Ausfälle zu einem Bruchteil der Kosten.

Für die Wiederherstellung von Verfügbarkeitsproblemen, die Ihren API Management-Dienst betreffen, sollten Sie jederzeit in der Lage sein, Ihren Dienst in einer anderen Region wiederherzustellen. Abhängig von Ihrer RTO (Recovery Time Objective) empfiehlt es sich gegebenenfalls, einen Standbydienst in mindestens einer Region bereitzuhalten. Sie haben auch die Möglichkeit, die Konfiguration und Inhalte der Regionen gemäß Ihrer RPO (Recovery Point Objective) mit dem aktiven Dienst zu synchronisieren. Die Funktionen zur Sicherung und Wiederherstellung von API Management bieten die notwendigen Bausteine für die Implementierung einer Notfallwiederherstellungsstrategie.

Sicherungs- und Wiederherstellungsvorgänge können auch zur Replikation der API Management-Dienstkonfiguration zwischen Betriebsumgebungen, z. B. Entwicklung und Staging, verwendet werden. Beachten Sie, dass auch Laufzeitdaten wie Benutzer und Abonnements kopiert werden, was unter Umständen nicht immer wünschenswert ist.

In diesem Artikel wird gezeigt, wie Sie Sicherungs- und Wiederherstellungsvorgänge Ihrer API Management-Instanz mithilfe eines externen Speicherkontos automatisieren. Die hier gezeigten Schritte verwenden entweder die Azure PowerShell-Cmdlets Backup-AzApiManagement und Restore-AzApiManagement oder die REST-APIs API Management-Dienst – Sicherung und API Management-Dienst – Wiederherstellen.

Warnung

Jede Sicherung läuft nach 30 Tagen ab. Wenn Sie versuchen, eine Sicherung nach dem Ablaufzeitraum von 30 Tagen wiederherzustellen, erhalten Sie die Fehlermeldung Cannot restore: backup expired.

Wichtig

Die benutzerdefinierte Hostnamenkonfiguration des Zieldiensts wird durch den Wiederherstellungsvorgang nicht geändert. Wir empfehlen, den gleichen benutzerdefinierten Hostnamen und das gleiche TLS-Zertifikat sowohl für aktive Dienste als auch für Standbydienste zu verwenden, sodass der Datenverkehr nach Abschluss der Wiederherstellung durch eine einfache DNS-CNAME-Änderung an die Standbyinstanz umgeleitet werden kann.

Hinweis

Es wird empfohlen, das Azure Az PowerShell-Modul für die Interaktion mit Azure zu verwenden. Informationen zu den ersten Schritten finden Sie unter Installieren des Azure Az PowerShell-Moduls. Informationen zum Migrieren zum Az PowerShell-Modul finden Sie unter Migrieren von Azure PowerShell von AzureRM zum Az-Modul.

Voraussetzungen

Konfigurieren des Zugriffs auf das Speicherkonto

Beim Ausführen eines Sicherungs- oder Wiederherstellungsvorgangs müssen Sie den Zugriff auf das Speicherkonto konfigurieren. API Management unterstützt zwei Speicherzugriffsmechanismen: einen Azure Storage-Zugriffsschlüssel oder eine verwaltete API Management-Identität.

Konfigurieren eines Speicherkonto-Zugriffsschlüssels

Azure generiert zwei 512-Bit-Speicherkonto-Zugriffsschlüssel für jedes Speicherkonto. Mit diesen Schlüsseln können Sie den Zugriff auf Daten in Ihrem Speicherkonto per gemeinsam verwendetem Schlüssel autorisieren. Informationen zum Anzeigen, Abrufen und Verwalten der Schlüssel finden Sie unter Verwalten von Zugriffsschlüsseln für Speicherkonten.

Konfigurieren einer verwalteten API Management-Identität

Hinweis

Die Verwendung einer verwalteten API Management-Identität für Speichervorgänge während der Sicherung und Wiederherstellung wird in der Version 2021-04-01-preview oder höher der API Management-REST-API unterstützt.

  1. Aktivieren Sie eine system- oder benutzerseitig zugewiesene verwaltete Identität für API Management in Ihrer API Management-Instanz.

    • Wenn Sie eine benutzerseitig zugewiesene verwaltete Identität aktivieren, notieren Sie sich die Client-ID der Identität.
    • Wenn Sie Sicherungs- und Wiederherstellungsvorgänge in verschiedenen API Management-Instanzen durchführen, aktivieren Sie eine verwaltete Identität sowohl in der Quell- als auch in der Zielinstanz.
  2. Weisen Sie der Identität die Rolle Mitwirkender an Storage-Blobdaten beschränkt auf das Speicherkonto zu, das zur Sicherung und Wiederherstellung verwendet wird. Verwenden Sie zum Zuweisen der Rolle das Azure-Portal oder andere Azure-Tools.

Sichern eines API Management-Diensts

Melden Sie sich mit Azure PowerShell an.

In den folgenden Beispielen:

  • Eine API Management-Instanz namens myapim befindet sich in der Ressourcengruppen apimresourcegroup.
  • Ein Speicherkonto namens backupstorageaccount befindet sich in der Ressourcengruppe storageresourcegroup. Das Speicherkonto verfügt über einen Container namens backups (Sicherungen).
  • Ein Sicherungs-Blob wird mit dem Namen ContosoBackup.apimbackup erstellt.

Festlegen von Variablen in PowerShell:

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

Zugriff mithilfe eines Speicherzugriffsschlüssels

$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

Zugriff mithilfe einer verwalteten Identität

Informationen zum Konfigurieren einer verwalteten Identität in Ihrer API Management-Instanz für den Zugriff auf das Speicherkonto finden Sie weiter oben in diesem Artikel unter Konfigurieren einer verwalteten Identität.

Zugriff mithilfe einer systemseitig zugewiesenen verwalteten Identität

$storageContext = New-AzStorageContext -StorageAccountName $storageAccountName

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

Zugriff mithilfe einer benutzerseitig zugewiesenen verwalteten Identität

In diesem Beispiel befindet sich eine benutzerseitig zugewiesene verwaltete Identität namens myidentity in der Ressourcengruppe 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

Die Sicherung ist ein zeitintensiver Vorgang, dessen Abschluss mehrere Minuten dauern kann. Während dieser Zeit verarbeitet das API-Gateway weiterhin Anforderungen, aber der Zustand des Diensts ist „Wird aktualisiert“.

Wiederherstellen eines API Management-Diensts

Achtung

Vermeiden Sie Änderungen an der Dienstkonfiguration (z. B. APIs, Richtlinien, Erscheinungsbild des Entwicklerportals), die während des Wiederherstellungsvorgangs vorgenommen werden. Änderungen könnten überschrieben werden.

In den folgenden Beispielen:

  • Eine API Management-Instanz namens myapim wird aus dem Sicherungs-Blob namens ContosoBackup.apimbackup im Speicherkonto backupstorageaccount wiederhergestellt.
  • Der Sicherungs-Blob befindet sich in einem Container namens backups (Sicherungen).

Festlegen von Variablen in PowerShell:

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

Zugriff mithilfe eines Speicherzugriffsschlüssels

$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

Zugriff mithilfe einer verwalteten Identität

Informationen zum Konfigurieren einer verwalteten Identität in Ihrer API Management-Instanz für den Zugriff auf das Speicherkonto finden Sie weiter oben in diesem Artikel unter Konfigurieren einer verwalteten Identität.

Zugriff mithilfe einer systemseitig zugewiesenen verwalteten Identität

$storageContext = New-AzStorageContext -StorageAccountName $storageAccountName

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

Zugriff mithilfe einer benutzerseitig zugewiesenen verwalteten Identität

In diesem Beispiel befindet sich eine benutzerseitig zugewiesene verwaltete Identität namens myidentity in der Ressourcengruppe 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

Die Wiederherstellung ist ein zeitintensiver Vorgang, der bis zu seinem Abschluss 45 Minuten oder länger dauern kann.

Einschränkungen

  • Die Wiederherstellung einer Sicherung nach ihrer Erstellung wird nur 30 Tage lange garantiert.
  • Vermeiden Sie während der Sicherung Verwaltungsänderungen im Dienst wie beispielsweise Tarif-Upgrades oder Herabstufungen, Änderungen am Domänennamen usw.
  • Änderungen an der Dienstkonfiguration (z.B. APIs, Richtlinien, Erscheinungsbild des Entwicklerportals), die während des Sicherungsvorgangs vorgenommen werden, sind ggf. nicht in der Sicherung enthalten und gehen verloren.
  • Die Sicherung erfasst keine voraggregierten Protokolldaten, die in Berichten im Fenster Analytics im Azure-Portal verwendet werden.
  • Ressourcenfreigabe zwischen verschiedenen Ursprüngen (CORS, Cross-Origin Resource Sharing) sollte für den Blob-Dienst im Speicherkonto nicht aktiviert sein.
  • Der Tarif des wiederherzustellenden Diensts muss mit dem Tarif des gesicherten Diensts übereinstimmen.

Einschränkungen des Speichernetzwerks

Wenn das Speicherkonto firewallfähigaktiviert ist, empfiehlt es sich, die vom System zugewiesene verwaltete Identität der API-Verwaltungsinstanz für den Zugriff auf das Konto zu verwenden. Stellen Sie sicher, dass das Speicherkonto Zugriff auf vertrauenswürdige Azure-Dienste gewährt.

Nicht gesicherte Elemente

Die Häufigkeit, mit der Sie Dienstsicherungen durchführen, wirkt sich auf das Ziel Ihres Wiederherstellungspunkts aus. Um die Auswirkungen zu minimieren, empfehlen wir, regelmäßige Sicherungen zu implementieren und bei Bedarf Sicherungen durchzuführen, wenn Sie Änderungen an Ihrem API Management-Dienst vorgenommen haben.

Nächste Schritte

Sehen Sie sich die folgenden zugehörigen Ressourcen für den Sicherungs- und Wiederherstellungsvorgang an: