Azure API Management에서 서비스 백업 및 복원을 사용하여 재해 복구를 구현하는 방법

적용 대상: 개발자 | 기본 | 표준 | 프리미엄

Azure API Management를 통해 API를 게시 및 관리하면 기존에는 수동으로 설계, 구현 및 관리하던 내결함성 및 인프라 기능을 활용할 수 있습니다. Azure 플랫폼은 매우 적은 비용으로 상당한 잠재적 오류를 완화합니다.

API Management 서비스에 영향을 미치는 가용성 문제를 복구하려면 언제든지 다른 지역에서 서비스를 재구성할 수 있도록 준비합니다. 복구 시간 목표에 따라 하나 이상의 지역에 대기 서비스를 유지할 수 있습니다. 또한 복구 지점 목표에 따라 해당 구성과 콘텐츠를 활성 서비스와 동기화 상태로 유지하려고 할 수도 있습니다. API Management 백업 및 복원 기능은 재해 복구 전략을 구현하는 데 필요한 구성 요소를 제공합니다.

운영 환경(예: 개발 및 스테이징) 간에 API Management 서비스 구성을 복제하는 데 백업 및 복원 작업을 사용할 수도 있습니다. 사용자 및 구독과 같은 런타임 데이터도 복사됩니다. 이는 바람직하지 않을 수 있습니다.

이 문서에서는 외부 스토리지 계정을 사용하여 API Management 인스턴스의 백업 및 복원 작업을 자동화하는 방법을 보여 줍니다. 여기에 표시된 단계에서는 Backup-AzApiManagementRestore-AzApiManagement Azure PowerShell cmdlet 또는 API Management 서비스 - 백업API Management 서비스 - 복원 REST API를 사용합니다.

Warning

각 백업은 30일 후에 만료됩니다. 30일의 만료 기간이 만료된 후에 백업을 복원하려고 하면 Cannot restore: backup expired 메시지와 함께 복원이 실패합니다.

Important

복원 작업은 대상 서비스의 사용자 지정 호스트 이름 구성을 변경하지 않습니다. 활성 및 대기 서비스 모두에 대해 동일한 사용자 지정 호스트 이름 및 TLS 인증서를 사용하는 것이 좋습니다. 이렇게 하면 복원 작업이 완료된 후에는 간단한 DNS CNAME 변경으로 트래픽을 대기 인스턴스로 다시 리디렉션할 수 있습니다.

참고 항목

Azure Az PowerShell 모듈을 사용하여 Azure와 상호 작용하는 것이 좋습니다. 시작하려면 Azure PowerShell 설치를 참조하세요. Az PowerShell 모듈로 마이그레이션하는 방법에 대한 자세한 내용은 Azure PowerShell을 AzureRM에서 Azure로 마이그레이션을 참조하세요.

필수 조건

스토리지 계정 액세스 구성

백업 또는 복원 작업을 실행할 때 스토리지 계정에 대한 액세스를 구성해야 합니다. API Management는 Azure Storage 액세스 키 또는 API Management 관리 ID라는 두 가지 스토리지 액세스 메커니즘을 지원합니다.

스토리지 계정 액세스 키 구성

Azure는 각 스토리지 계정에 대해 2개의 512비트 스토리지 계정 액세스 키를 생성합니다. 이러한 키를 사용하면 공유 키 권한 부여를 통해 스토리지 계정의 데이터에 액세스 권한을 부여할 수 있습니다. 키를 보고 검색하고 관리하려면 스토리지 계정 액세스 키 관리를 참조하세요.

API Management 관리 ID 구성

참고 항목

백업 및 복원 중 스토리지 작업에 API Management 관리 ID를 사용하는 것은 API Management REST API 버전 2021-04-01-preview 이상에서 지원됩니다.

  1. API Management 인스턴스에서 시스템이 할당하거나 사용자가 할당한 API Management 관리 ID를 사용하도록 설정합니다.

    • 사용자가 할당한 관리 ID를 사용하도록 설정하는 경우 ID의 클라이언트 ID를 적어 둡니다.
    • 다른 API Management 인스턴스에 백업하고 복원하려면 원본 및 대상 인스턴스 모두에서 관리 ID를 사용하도록 설정합니다.
  2. 범위가 백업 및 복원에 사용되는 스토리지 계정으로 지정된 Storage Blob 데이터 기여자 역할을 ID에 할당합니다. 역할을 할당하려면 Azure Portal 또는 다른 Azure 도구를 사용합니다.

API Management 서비스 백업

Azure PowerShell로 로그인.

아래 예제에서 다음을 수행합니다.

  • myapim이라는 API Management 인스턴스는 리소스 그룹 apimresourcegroup에 있습니다.
  • backupstorageaccount라는 스토리지 계정은 리소스 그룹 storageresourcegroup에 있습니다. 스토리지 계정에는 backups라는 컨테이너가 있습니다.
  • ContosoBackup.apimbackup이라는 백업 Blob이 만들어집니다.

PowerShell에서 변수 설정:

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

스토리지 액세스 키를 사용하여 액세스

$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

관리 ID를 사용하여 액세스

API Management 인스턴스에서 관리 ID를 구성하여 스토리지 계정에 액세스하려면 이 문서 앞부분의 관리 ID 구성을 참조하세요.

시스템이 할당한 관리 ID를 사용하여 액세스

$storageContext = New-AzStorageContext -StorageAccountName $storageAccountName

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

사용자가 할당한 관리 ID를 사용하여 액세스

이 예에서 myidentity라는 사용자 할당 관리 ID는 리소스 그룹 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

Backup은 오랫동안 실행되는 작업으로, 완료되려면 몇 분이 걸릴 수 있습니다. 이 시간 동안 API 게이트웨이는 계속해서 요청을 처리하지만 서비스 상태는 업데이트 중입니다.

API Management 서비스 복원

주의

복원 작업이 진행되는 동안 서비스 구성(예: API, 정책, 개발자 포털 모양)을 변경하지 마세요. 변경 내용을 덮어쓸 수 있습니다.

아래 예제에서 다음을 수행합니다.

  • myapim이라는 API Management 인스턴스는 스토리지 계정 backupstorageaccount에 있는 ContosoBackup.apimbackup이라는 백업 Blob에서 복원됩니다.
  • 백업 Blob은 backups라는 컨테이너에 있습니다.

PowerShell에서 변수 설정:

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

스토리지 액세스 키를 사용하여 액세스

$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

관리 ID를 사용하여 액세스

API Management 인스턴스에서 관리 ID를 구성하여 스토리지 계정에 액세스하려면 이 문서 앞부분의 관리 ID 구성을 참조하세요.

시스템이 할당한 관리 ID를 사용하여 액세스

$storageContext = New-AzStorageContext -StorageAccountName $storageAccountName

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

사용자가 할당한 관리 ID를 사용하여 액세스

이 예에서 myidentity라는 사용자 할당 관리 ID는 리소스 그룹 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

복원은 오랫동안 실행되는 작업으로, 완료되려면 최대 45분 이상이 걸릴 수 있습니다.

제약 조건

  • 백업 복원은 생성 시점부터 30일 동안만 보장됩니다.
  • 백업이 진행되는 동안에는 가격 책정 계층 업그레이드 또는 다운그레이드, 도메인 이름 변경과 같은 서비스에서 관리 변경을 피하세요.
  • 백업 작업이 진행되는 동안 API, 정책 및 개발자 포털 모양 등의 서비스 구성을 변경하는 경우 해당 내용이 백업에서 제외되고 손실될 수 있습니다.
  • 백업은 Azure Portal의 분석 창에 표시된 보고서에 사용된 사전 집계된 로그 데이터를 캡처하지 않습니다.
  • 스토리지 계정의 Blob Service에서 CORS(원본 간 리소스 공유)를 사용하도록 설정하면 안 됩니다.
  • 백업을 복원할 서비스의 가격 책정 계층은 복원하려는 백업된 서비스의 가격 책정 계층과 일치해야 합니다.

스토리지 네트워킹 제약 조건

스토리지 계정이 방화벽을 사용하도록 설정한 경우 계정에 액세스하려면 API Management 인스턴스의 시스템 할당 관리 ID를 사용하는 것이 좋습니다. 스토리지 계정이 신뢰할 수 있는 Azure 서비스에 대한 액세스 권한을 부여하는지 확인합니다.

백업되지 않는 항목

서비스 백업을 수행하는 빈도는 복구 지점 목표에 영향을 줍니다. 영향을 최소화하려면 정기 백업을 구현함과 동시에 API Management 서비스에 대한 변경을 수행한 후 요청 시 백업도 수행하는 것이 좋습니다.

다음 단계

백업/복원 프로세스와 관련된 다음 리소스를 확인합니다.