Så här implementerar du haveriberedskap med hjälp av säkerhetskopiering och återställning i Azure API Management

GÄLLER FÖR: Utvecklare | Grundläggande | Standard | Premium

Genom att publicera och hantera dina API:er via Azure API Management drar du nytta av feltolerans och infrastrukturfunktioner som du annars skulle utforma, implementera och hantera manuellt. Azure-plattformen minimerar en stor del av potentiella fel till en bråkdel av kostnaden.

Om du vill återställa från tillgänglighetsproblem som påverkar API Management-tjänsten är du redo att när som helst återskapa tjänsten i en annan region. Beroende på ditt mål för återställningstid kanske du vill behålla en standby-tjänst i en eller flera regioner. Du kan också försöka att behålla deras konfiguration och innehåll synkroniserat med den aktiva tjänsten enligt ditt mål för återställningspunkten. Funktionerna för säkerhetskopiering och återställning av API-hantering tillhandahåller nödvändiga byggstenar för att implementera en strategi för haveriberedskap.

Säkerhetskopierings- och återställningsåtgärder kan också användas för replikering av API Management-tjänstkonfiguration mellan driftmiljöer, till exempel utveckling och mellanlagring. Se upp för att runtime-data som användare och prenumerationer också kopieras, vilket kanske inte alltid är önskvärt.

Den här artikeln visar hur du automatiserar säkerhetskopierings- och återställningsåtgärder för din API Management-instans med hjälp av ett externt lagringskonto. Stegen som visas här använder antingen Azure PowerShell-cmdletarna Backup-AzApiManagement och Restore-AzApiManagement , eller API Management Service – Backup and Api Management Service – Restore REST API:er.

Varning

Varje säkerhetskopia upphör att gälla efter 30 dagar. Om du försöker återställa en säkerhetskopia efter att förfalloperioden på 30 dagar har upphört att gälla misslyckas återställningen med ett Cannot restore: backup expired meddelande.

Viktigt!

Återställningsåtgärden ändrar inte konfigurationen av det anpassade värdnamnet för måltjänsten. Vi rekommenderar att du använder samma anpassade värdnamn och TLS-certifikat för både aktiva tjänster och standby-tjänster, så att trafiken kan dirigeras om till väntelägesinstansen genom en enkel DNS CNAME-ändring när återställningen är klar.

Kommentar

Vi rekommenderar att du använder Azure Az PowerShell-modulen för att interagera med Azure. Se Installera Azure PowerShell för att komma igång. Information om hur du migrerar till Az PowerShell-modulen finns i artikeln om att migrera Azure PowerShell från AzureRM till Az.

Förutsättningar

Konfigurera åtkomst till lagringskonto

När du kör en säkerhetskopierings- eller återställningsåtgärd måste du konfigurera åtkomsten till lagringskontot. API Management har stöd för två mekanismer för lagringsåtkomst: en Azure Storage-åtkomstnyckel eller en hanterad API Management-identitet.

Konfigurera åtkomstnyckel för lagringskonto

Azure genererar två 512-bitars lagringskontoåtkomstnycklar för varje lagringskonto. Dessa nycklar kan användas för att auktorisera åtkomst till data i ditt lagringskonto via auktorisering av delad nyckel. Information om hur du visar, hämtar och hanterar nycklarna finns i Hantera åtkomstnycklar för lagringskonto.

Konfigurera hanterad API Management-identitet

Kommentar

Användning av en hanterad API Management-identitet för lagringsåtgärder under säkerhetskopiering och återställning stöds i API Management REST API-version 2021-04-01-preview eller senare.

  1. Aktivera en systemtilldelad eller användartilldelad hanterad identitet för API Management i din API Management-instans.

    • Om du aktiverar en användartilldelad hanterad identitet noterar du identitetens klient-ID.
    • Om du ska säkerhetskopiera och återställa till olika API Management-instanser aktiverar du en hanterad identitet i både käll- och målinstanserna.
  2. Tilldela identiteten rollen Storage Blob Data Contributor , som är begränsad till lagringskontot som används för säkerhetskopiering och återställning. Om du vill tilldela rollen använder du Azure-portalen eller andra Azure-verktyg.

Säkerhetskopiera en API Management-tjänst

Logga in med Azure PowerShell.

I följande exempel:

  • En API Management-instans med namnet myapim finns i resursgruppen apimresourcegroup.
  • Ett lagringskonto med namnet backupstorageaccount finns i resursgruppen storageresourcegroup. Lagringskontot har en container med namnet backups.
  • En säkerhetskopieringsblob skapas med namnet ContosoBackup.apimbackup.

Ange variabler i PowerShell:

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

Åtkomst med hjälp av lagringsåtkomstnyckel

$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

Åtkomst med hanterad identitet

Information om hur du konfigurerar en hanterad identitet i DIN API Management-instans för åtkomst till lagringskontot finns i Konfigurera en hanterad identitet tidigare i den här artikeln.

Åtkomst med hjälp av systemtilldelad hanterad identitet

$storageContext = New-AzStorageContext -StorageAccountName $storageAccountName

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

Åtkomst med användartilldelad hanterad identitet

I det här exemplet finns en användartilldelad hanterad identitet med namnet myidentity i resursgruppen 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

Säkerhetskopiering är en tidskrävande åtgärd som kan ta flera minuter att slutföra. Under den här tiden fortsätter API-gatewayen att hantera begäranden, men tjänstens tillstånd uppdateras.

Återställa en API Management-tjänst

Varning

Undvik ändringar i tjänstkonfigurationen (till exempel API:er, principer, utseende på utvecklarportalen) medan återställning pågår. Ändringar kan skrivas över.

I följande exempel

  • En API Management-instans med namnet myapim återställs från säkerhetskopieringsbloben med namnet ContosoBackup.apimbackup i lagringskontot backupstorageaccount.
  • Säkerhetskopieringsbloben finns i en container med namnet backups.

Ange variabler i PowerShell:

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

Åtkomst med hjälp av lagringsåtkomstnyckel

$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

Åtkomst med hanterad identitet

Information om hur du konfigurerar en hanterad identitet i DIN API Management-instans för åtkomst till lagringskontot finns i Konfigurera en hanterad identitet tidigare i den här artikeln.

Åtkomst med hjälp av systemtilldelad hanterad identitet

$storageContext = New-AzStorageContext -StorageAccountName $storageAccountName

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

Åtkomst med användartilldelad hanterad identitet

I det här exemplet finns en användartilldelad hanterad identitet med namnet myidentity i resursgruppen 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

Återställning är en tidskrävande åtgärd som kan ta upp till 45 minuter eller mer att slutföra.

Krav

  • Återställningen av en säkerhetskopia garanteras bara i 30 dagar sedan den skapades.
  • När säkerhetskopiering pågår kan du undvika hanteringsändringar i tjänsten , till exempel uppgradering eller nedgradering på prisnivå, ändring i domännamn med mera.
  • Ändringar som gjorts i tjänstkonfigurationen (till exempel API:er, principer och utseende på utvecklarportalen) medan säkerhetskopieringen pågår kan undantas från säkerhetskopieringen och kommer att gå förlorad.
  • Säkerhetskopiering samlar inte in föraggregerade loggdata som används i rapporter som visas i fönstret Analytics i Azure-portalen.
  • Resursdelning för korsande ursprung (CORS) bör inte aktiveras på blobtjänsten i lagringskontot.
  • Prisnivån för den tjänst som återställs till måste matcha prisnivån för den säkerhetskopierade tjänst som återställs.

Begränsningar för lagringsnätverk

Om lagringskontot är brandväggsaktiverat rekommenderar vi att du använder API Management-instansens systemtilldelade hanterade identitet för åtkomst till kontot. Se till att lagringskontot ger åtkomst till betrodda Azure-tjänster.

Vad som inte säkerhetskopieras

Hur ofta du utför tjänstsäkerhetskopior påverkar återställningspunktens mål. För att minimera det rekommenderar vi att du implementerar regelbundna säkerhetskopieringar och utför säkerhetskopieringar på begäran när du har ändrat API Management-tjänsten.

Nästa steg

Kolla in följande relaterade resurser för säkerhetskopierings-/återställningsprocessen: