Freigeben über


Implementieren der 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, Wiederherstellungszeit-Zielsetzung) empfiehlt es sich gegebenenfalls, einen Standbydienst in mindestens einer Region bereitzuhalten. Sie haben auch die Möglichkeit, ihre Konfiguration und ihre Inhalte gemäß Ihrer Wiederherstellungszeit-Zielsetzung 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 Benutzende 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 Cmdlets Backup-AzApiManagement und Restore-AzApiManagement Azure PowerShell oder den API Management Service - Backup and API Management Service - Restore REST APIs.

Warnung

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

Wichtig

Die benutzerdefinierte Hostnamenkonfiguration des Zieldiensts wird durch den Wiederherstellungsvorgang nicht geändert. Wir empfehlen, denselben benutzerdefinierten Hostnamen und dasselbe 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 von Azure PowerShell. Informationen zum Migrieren zum Az PowerShell-Modul finden Sie unter Migrieren von Azure PowerShell von AzureRM zum Az-Modul.

Wichtig

Änderungen an der Infrastruktur Ihres API-Verwaltungsdiensts (z. B. Konfigurieren von benutzerdefinierten Domänen, Hinzufügen von Zertifizierungsstellenzertifikaten, Skalierung, Konfiguration virtueller Netzwerke, Änderungen der Verfügbarkeitszone und Regionszufügungen) können je nach Dienstebene und Größe der Bereitstellung 15 Minuten oder länger dauern. Sie müssen mit einer längeren Zeiten für Instanzen mit einer größeren Anzahl von Skalierungseinheiten oder einer Konfiguration mit mehreren Regionen rechnen. Laufende Änderungen an der API-Verwaltung werden sorgfältig ausgeführt, um Kapazität und Verfügbarkeit zu bewahren.

Während der Dienst aktualisiert wird, können andere Änderungen an der Dienstinfrastruktur nicht vorgenommen werden. Sie können jedoch APIs, Produkte, Richtlinien und Benutzereinstellungen konfigurieren. Der Dienst erlebt keine Ausfallzeiten des Gateways, und die API-Verwaltung wird weiterhin API-Anforderungen ohne Unterbrechung (mit Ausnahme der Entwicklerebene) dienstieren.

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 über einen gemeinsam verwendeten 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 systemseitig 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

Vorsicht

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

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 Upgrades oder Downgrades von Tarifen, Änderungen am Domänennamen usw.
  • Änderungen an der Dienstkonfiguration (z. B. APIs, Richtlinien, Erscheinungsbild des Entwicklungsportals), die während des Sicherungsvorgangs vorgenommen werden, sind ggf. nicht in der Sicherung enthalten und gehen verloren.
  • Die Sicherung erfasst keine vorab aggregierten Protokolldaten, die in Berichten verwendet werden, die im Fenster Analyse im Azure-Portal angezeigt 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 für eine Firewall aktiviert ist, empfiehlt es sich, die systemseitig zugewiesene verwaltete Identität der API Management-Instanz 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 Ihr RPO (Recovery Point Objective, Wiederherstellungspunktziel) 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.

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