Share via


병렬 마이그레이션 기능을 사용하여 App Service Environment v2를 App Service Environment v3으로 마이그레이션

참고 항목

이 문서에 설명된 마이그레이션 기능은 App Service Environment v2에서 App Service Environment v3으로의 병렬(다른 서브넷) 자동 마이그레이션에 사용됩니다.

현재 위치 마이그레이션 기능에 관한 정보를 찾고 있는 경우 현재 위치 마이그레이션 기능을 사용하여 App Service Environment v3으로 마이그레이션을 참조하세요. 수동 마이그레이션 옵션에 관한 자세한 내용은 수동 마이그레이션 옵션을 참조하세요. 적합한 마이그레이션 옵션을 결정하는 데 도움이 필요한 경우 마이그레이션 경로 의사 결정 트리를 참조하세요. App Service Environment v3에 관한 자세한 내용은 App Service Environment v3 개요를 참조하세요.

병렬 마이그레이션 기능을 사용하여 App Service Environment v2를 App Service Environment v3로 자동으로 마이그레이션할 수 있습니다. 마이그레이션 프로세스에 대해 자세히 알아보고 현재 App Service Environment에서 마이그레이션을 지원하는지 확인하려면 병렬 마이그레이션 기능 개요를 참조하세요.

Important

예기치 않은 문제를 방지하려면 프로덕션 환경을 마이그레이션하기 전에 개발 환경에 이 기능을 사용하는 것이 좋습니다. 페이지 하단에 있는 단추를 사용하여 이 문서 또는 기능과 관련된 피드백을 제공합니다.

필수 조건

App Service Environment v3으로 마이그레이션하면 애플리케이션에 어떤 영향을 미치는지 이해해야 합니다. 마이그레이션 프로세스를 검토하여 프로세스 타임라인과 참여해야 하는 장소와 시기를 이해합니다. 또한 몇 가지 질문에 대답할 수 있는 FAQ를 검토합니다.

가상 네트워크, 리소스 그룹, 리소스 또는 구독에 잠금이 없는지 확인합니다. 잠금은 마이그레이션 중에 플랫폼 작업을 차단합니다.

서브넷 수정 및 Azure App Service 리소스 생성을 포함하여 마이그레이션에 필요한 작업을 차단하는 Azure 정책이 없는지 확인합니다. 리소스 수정 및 생성을 차단하는 정책으로 인해 마이그레이션이 중단되거나 실패할 수 있습니다.

App Service Environment v3는 가상 네트워크의 다른 서브넷에 있으므로 App Service Environment v3 대한 서브넷 요구 사항을 충족하는 사용 가능한 서브넷이 가상 네트워크에 있는지 확인해야 합니다. 선택한 서브넷은 기존 App Service Environment가 있는 서브넷과 통신할 수도 있어야 합니다. 두 서브넷 간의 통신을 차단하는 것이 없는지 확인합니다. 사용 가능한 서브넷이 없는 경우 마이그레이션하기 전에 만들어야 합니다. 새 서브넷을 만들려면 가상 네트워크 주소 공간을 늘리는 작업이 포함될 수 있습니다. 자세한 내용은 가상 네트워크 및 서브넷 만들기를 참조하세요.

마이그레이션 중에는 크기 조정이 차단되므로 마이그레이션을 시작하기 전에 환경을 원하는 크기로 확장해야 합니다. 마이그레이션 후 환경을 확장해야 하는 경우 마이그레이션이 완료되면 이 작업을 수행할 수 있습니다.

Azure REST API 호출을 수행하므로 여기에 설명된 단계를 순서대로 그리고 기록된 대로 수행합니다. Azure CLI를 사용하여 이러한 API 호출을 수행하는 것이 좋습니다. 다른 방법에 대한 자세한 내용은 Azure REST API 참조를 참조하세요.

이 가이드에서는 Azure CLI를 설치하거나 Azure Cloud Shell을 사용하고 Bash 셸을 사용할 수 있습니다.

참고 항목

Bash 셸을 사용하여 이 가이드에 제공된 명령을 실행하는 것이 좋습니다. 명령은 PowerShell 규칙 및 이스케이프 문자와 호환되지 않을 수 있습니다.

Important

마이그레이션하는 동안 Azure Portal은 App Service Environment 및 앱에 대한 잘못된 정보를 표시할 수 있습니다. 병렬 마이그레이션 기능을 사용할 수 없으므로 Azure Portal에서 마이그레이션 환경으로 이동하지 마세요. Azure CLI를 사용하여 마이그레이션 상태를 확인하는 것이 좋습니다. 마이그레이션 상태 또는 앱에 대한 질문이 있는 경우 지원에 문의하세요.

1. 새 App Service Environment v3에 대한 서브넷 선택

App Service Environment v3 대한 서브넷 요구 사항을 충족하는 App Service Environment v3에서 서브넷을 선택합니다. 선택한 서브넷의 이름을 확인합니다. 이 서브넷은 기존 App Service Environment의 서브넷과 달라야 합니다.

2. App Service Environment ID 가져오기

다음 명령을 실행하여 App Service Environment ID를 가져와 환경 변수로 저장합니다. 이름과 리소스 그룹의 자리 표시자를 마이그레이션할 App Service Environment의 값으로 바꿉니다. 가상 네트워크와 App Service Environment가 같은 리소스 그룹에 있으면 ASE_RGVNET_RG는 동일합니다.

ASE_NAME=<Your-App-Service-Environment-name>
ASE_RG=<Your-ASE-Resource-Group>
VNET_RG=<Your-VNet-Resource-Group>
ASE_ID=$(az appservice ase show --name $ASE_NAME --resource-group $ASE_RG --query id --output tsv)

3. 마이그레이션이 지원되는지 확인

다음 명령은 App Service Environment가 마이그레이션을 지원하는지 여부를 확인합니다. 오류가 발생하거나 App Service Environment가 비정상 또는 일시 중단된 상태인 경우 현재 마이그레이션할 수 없습니다. 발생할 수 있는 잠재적 오류 메시지에 대한 설명은 문제 해결 섹션을 참조하세요. 병렬 마이그레이션 기능을 사용하여 마이그레이션에 대해 환경이 지원되지 않거나 병렬 마이그레이션 기능을 사용하지 않고 App Service Environment v3으로 마이그레이션하려는 경우 수동 마이그레이션 옵션을 참조하세요. 또한 이 명령은 App Service Environment가 마이그레이션을 위해 지원되는 빌드 버전에 있는지 확인합니다. App Service Environment가 지원되는 빌드 버전에 없는 경우 직접 업그레이드를 시작해야 합니다. 사전 업그레이드에 대한 자세한 내용은 App Service Environment에 대한 병렬 마이그레이션 기능을 사용하여 마이그레이션이 지원되는지 유효성 검사를 참조하세요.

az rest --method post --uri "${ASE_ID}/NoDowntimeMigrate?phase=Validation&api-version=2022-03-01"

오류가 없으면 마이그레이션이 지원되며 다음 단계를 계속할 수 있습니다.

App Service Environment를 지원되는 빌드 버전으로 업그레이드하기 위해 업그레이드를 시작해야 하는 경우 다음 명령을 실행합니다. 유효성 검사 단계에 실패하고 App Service Environment를 업그레이드하라는 지시가 있는 경우에만 이 명령을 실행합니다.

az rest --method post --uri "${ASE_ID}/NoDowntimeMigrate?phase=PreMigrationUpgrade&api-version=2022-03-01"

4. 새 App Service Environment v3에 대한 아웃바운드 IP 주소 생성

지역 및 영역 중복 선택에 대한 다음 세부 정보가 포함된 zoneredundancy.json 파일을 만듭니다.

{
    "location":"<region>",    
    "Properties": {
        "zoneRedundant": "<true/false>"
    }
}

기존 환경이 영역 중복을 지원하는 지역에 있으면 새 App Service Environment v3 영역을 중복으로 만들 수 있습니다. zoneRedundant 속성을 true(으)로 설정하여 영역 중복성을 구성할 수 있습니다. 영역 중복은 선택적 구성입니다. 새 App Service Environment v3을 만드는 동안에만 이 구성을 설정할 수 있으며 나중에 제거할 수 없습니다.

다음 명령을 실행하여 새 아웃바운드 IP 주소를 만듭니다. 이 단계는 완료하는 데 15분 정도 걸립니다. 이 시간 동안 기존 App Service Environment를 확장하거나 변경하지 마세요.

az rest --method post --uri "${ASE_ID}/NoDowntimeMigrate?phase=PreMigration&api-version=2022-03-01" --body @zoneredundancy.json

다음 명령을 실행하여 이 단계의 상태를 확인합니다.

az rest --method get --uri "${ASE_ID}?api-version=2022-03-01" --query properties.status

단계가 진행 중인 경우 Migrating 상태가 표시됩니다. Ready 상태가 표시되면 다음 명령을 실행하여 새 아웃바운드 IP를 봅니다. 새 IP가 즉시 표시되지 않으면 몇 분 정도 기다렸다가 다시 시도합니다.

az rest --method get --uri "${ASE_ID}/configurations/networking?api-version=2022-03-01" --query properties.windowsOutboundIpAddresses

5. 새 아웃바운드 IP로 종속 리소스 업데이트

새 아웃바운드 IP를 사용하여 마이그레이션이 완료된 후 새 환경이 의도한 대로 작동하도록 리소스 또는 네트워킹 구성 요소를 업데이트합니다. 필요한 업데이트를 수행하는 것은 사용자의 책임입니다.

6. App Service Environment 서브넷 위임

App Service Environment v3에는 Microsoft.Web/hostingEnvironments의 단일 위임이 있는 서브넷이 필요합니다. 이전 버전에서는 이 위임이 필요하지 않았습니다. 마이그레이션하기 전에 서브넷이 올바르게 위임되었는지 확인하고 위임을 업데이트해야 합니다(필요한 경우). 다음 명령을 실행하거나 Azure Portal의 서브넷으로 이동하여 위임을 업데이트할 수 있습니다.

az network vnet subnet update --resource-group $VNET_RG --name <subnet-name> --vnet-name <vnet-name> --delegations Microsoft.Web/hostingEnvironments

7. 가상 네트워크에 잠금이 없는지 확인

가상 네트워크 잠금은 마이그레이션 중에 플랫폼 작업을 차단합니다. 가상 네트워크에 잠금이 있는 경우 마이그레이션하기 전에 잠금을 제거해야 합니다. 필요한 경우 마이그레이션이 완료된 후 잠금을 다시 추가할 수 있습니다.

잠금은 구독, 리소스 그룹 및 리소스의 세 가지 범위에 존재할 수 있습니다. 부모 범위에서 잠금을 적용하면 해당 범위 내 모든 리소스가 동일한 잠금을 상속합니다. 구독, 리소스 그룹 또는 리소스 범위에 적용된 잠금이 있는 경우 마이그레이션 전에 제거해야 합니다. 잠금 및 잠금 상속에 대한 자세한 내용은 인프라 보호를 위한 리소스 잠금을 참조하세요.

가상 네트워크에 잠금이 있는지 확인하려면 다음 명령을 사용합니다.

az lock list --resource-group $VNET_RG --resource <vnet-name> --resource-type Microsoft.Network/virtualNetworks

다음 명령을 사용하여 기존 잠금을 삭제합니다.

az lock delete --resource-group $VNET_RG --name <lock-name> --resource <vnet-name> --resource-type Microsoft.Network/virtualNetworks

구독 또는 리소스 그룹에 잠금이 있는지 확인하는 관련 명령은 잠금에 대한 Azure CLI 참조를 참조하세요.

8. 구성 준비

기존 App Service Environment에서 사용자 지정 도메인 접미사를 사용하는 경우 마이그레이션 프로세스 중에 새 App Service Environment v3 리소스의 사용자 지정 도메인 접미사를 구성해야 합니다. 사용자 지정 도메인 접미사를 구성하지 않고 현재의 사용자 지정 도메인 접미사를 사용하면 마이그레이션이 실패합니다. 요구 사항, 단계별 지침 및 모범 사례를 포함하여 App Service Environment v3의 사용자 지정 도메인 접미사에 대한 자세한 내용은 App Service Environment에 대한 사용자 지정 도메인 접미사를 참조하세요.

참고 항목

사용자 지정 도메인 접미사를 구성하는 경우 Azure Key Vault에 대한 네트워크 권한을 추가할 때 키 자격 증명 모음이 App Service Environment v3의 새 서브넷에서 액세스할 수 있도록 허용해야 합니다.

앞에서 선택한 서브넷을 식별하는 등 이러한 구성을 설정하려면 시나리오에 따라 다음 세부 정보를 사용하여 parameters.json이라는 다른 파일을 만듭니다. 새 App Service Environment v3에 대해 선택한 새 서브넷을 사용해야 합니다. 이 기능이 마이그레이션에 적용되지 않으면 사용자 지정 도메인 접미사 속성을 포함하지 마세요. zoneRedundant 속성의 값에 주의를 기울이고 아웃바운드 IP 생성 단계에서 사용한 것과 동일한 값으로 설정합니다. 아웃바운드 IP 생성 단계에서 사용한 영역 중복성에 대해 동일한 값을 사용해야 합니다.

사용자 지정 도메인 접미사 없이 마이그레이션하는 경우 다음 코드를 사용합니다.

{
    "Properties": {
        "VirtualNetwork": {
            "Id": "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Network/virtualNetworks/<virtual-network-name>/subnets/<subnet-name>"
        },
        "zoneRedundant": "<true/false>"
    }
}

사용자 지정 도메인 접미사 구성에 사용자 할당 관리 ID를 사용하는 경우 다음 코드를 사용합니다.

{
    "Properties": {
        "VirtualNetwork": {
            "Id": "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Network/virtualNetworks/<virtual-network-name>/subnets/<subnet-name>"
        },
        "zoneRedundant": "<true/false>",
        "customDnsSuffixConfiguration": {
            "dnsSuffix": "internal.contoso.com",
            "certificateUrl": "https://contoso.vault.azure.net/secrets/myCertificate",
            "keyVaultReferenceIdentity": "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/asev3-migration/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ase-managed-identity"
        }
    }
}

사용자 지정 도메인 접미사 구성에 시스템 할당 관리 ID를 사용하는 경우 다음 코드를 사용합니다.

{
    "properties": {
        "VirtualNetwork": {
            "Id": "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Network/virtualNetworks/<virtual-network-name>/subnets/<subnet-name>"
        },
        "zoneRedundant": "<true/false>",
        "customDnsSuffixConfiguration": {
            "dnsSuffix": "internal.contoso.com",
            "certificateUrl": "https://contoso.vault.azure.net/secrets/myCertificate",
            "keyVaultReferenceIdentity": "SystemAssigned"
        }
    }
}

9. App Service Environment v3으로 마이그레이션 및 상태 확인

이전 단계를 모두 완료한 후 마이그레이션을 시작할 수 있습니다. 마이그레이션의 의미를 이해하고 있는지 확인합니다.

이 단계를 완료하는 데 3~6시간이 걸립니다. 이 시간 동안에는 애플리케이션 가동 중지 시간이 없습니다. 이 단계에서는 기존 App Service Environment에 대한 크기 조정, 배포 및 수정이 차단됩니다.

다음 명령을 실행하여 마이그레이션을 시작합니다.

az rest --method post --uri "${ASE_ID}/NoDowntimeMigrate?phase=HybridDeployment&api-version=2022-03-01" --body @parameters.json

다음 명령을 실행하여 마이그레이션 상태를 확인합니다.

az rest --method get --uri "${ASE_ID}?api-version=2022-03-01" --query properties.subStatus

MigrationPendingDnsChange 상태가 되면 마이그레이션이 완료되고 App Service Environment v3 리소스가 확보됩니다. 이제 앱이 새 환경과 이전 환경에서 실행됩니다.

다음 명령을 실행하여 새 환경의 세부 정보를 가져옵니다.

az appservice ase show --name $ASE_NAME --resource-group $ASE_RG

Important

마이그레이션 도중 및 MigrationPendingDnsChange 단계 동안 Azure Portal은 App Service Environment 및 앱에 대한 잘못된 정보를 표시합니다. Azure CLI를 사용하여 마이그레이션 상태를 확인합니다. 마이그레이션 상태 또는 앱에 대한 질문이 있는 경우 지원에 문의하세요.

참고 항목

마이그레이션에 사용자 지정 도메인 접미사가 포함된 경우 알려진 버그로 인해 마이그레이션이 완료되면 사용자 지정 도메인 접미사 구성이 저하된 것으로 표시될 수 있습니다. App Service Environment는 예상대로 계속 작동해야 합니다. 저하된 상태는 6~8시간 내에 자체적으로 해결됩니다. 8시간 후에 구성 성능이 저하되거나 사용자 지정 도메인 접미사가 작동하지 않는 경우 지원에 문의하세요.

성능이 저하된 사용자 지정 도메인 접미사 구성 샘플의 스크린샷.

10. 새 App Service Environment v3의 인바운드 IP 주소 가져오기 및 종속 리소스 업데이트

이 단계에서는 마이그레이션 프로세스에 두 개의 App Service Environment가 있습니다. 앱이 두 환경에서 모두 실행되고 있습니다. 새 App Service Environment v3에 대한 새 IP 인바운드 주소를 사용하려면 종속 리소스를 업데이트해야 합니다. ILB(내부 연결) App Service Environment의 경우 새 인바운드 IP 주소를 가리키도록 프라이빗 DNS 영역을 업데이트해야 합니다.

App Service Environment 부하 분산 장치 유형에 해당하는 다음 명령을 실행하여 새 App Service Environment v3에 대한 새 인바운드 IP 주소를 가져올 수 있습니다. 필요한 업데이트를 수행하는 것은 사용자의 책임입니다.

ILB App Service Environment의 경우 다음 명령을 실행하여 프라이빗 인바운드 IP 주소를 가져옵니다.

az rest --method get --uri "${ASE_ID}?api-version=2022-03-01" --query properties.networkingConfiguration.internalInboundIpAddresses

ELB App Service Environment의 경우 다음 명령을 실행하여 공용 인바운드 IP 주소를 가져옵니다.

az rest --method get --uri "${ASE_ID}?api-version=2022-03-01" --query properties.networkingConfiguration.externalInboundIpAddresses

11. 고객 트래픽 리디렉션, App Service Environment v3 유효성 검사 및 마이그레이션 완료

이 단계에서는 새 App Service Environment v3를 테스트하고 유효성을 검사할 수 있습니다. 기본적으로 트래픽은 App Service Environment v2 프런트 엔드로 전송됩니다. ILB App Service Environment v3을 사용하는 경우 새 인바운드 IP 주소로 프라이빗 DNS 영역을 업데이트하여 App Service Environment v3 프런트 엔드를 테스트할 수 있습니다. ELB App Service Environment v3을 사용하는 경우 테스트 프로세스는 특정 네트워크 구성에 따라 다릅니다. ELB 환경을 테스트하는 간단한 방법 중 하나는 새 App Service Environment v3 인바운드 IP 주소를 사용하도록 호스트 파일을 업데이트하는 것입니다. 개별 앱에 사용자 지정 도메인이 할당되어 있는 경우 새 인바운드 IP를 가리키도록 DNS를 업데이트할 수도 있습니다. 이 변경 내용을 테스트하면 이전 App Service Environment가 삭제된 마이그레이션의 마지막 단계를 시작하기 전에 App Service Environment v3의 유효성을 완전히 검사할 수 있습니다. 문제 없이 앱에 액세스할 수 있는 경우 마이그레이션을 완료할 준비가 된 것입니다.

앱이 예상대로 작동하는지 확인하면 다음 명령을 실행하여 고객 트래픽을 새 App Service Environment v3으로 리디렉션할 수 있습니다. 이 명령은 이전 환경도 삭제합니다. 14일 이내에 이 단계를 완료해야 합니다. 14일 이내에 이 단계를 완료하지 않으면 마이그레이션이 자동으로 App Service Environment v2로 되돌아갑니다. 이 단계를 완료하는 데 14일 이상이 필요한 경우 지원에 문의하세요.

문제를 찾거나 이 시점에서 더 이상 마이그레이션을 진행하지 않기로 결정한 경우 지원에 문의하여 마이그레이션을 되돌려 보세요. 마이그레이션을 되돌려야 하는 경우 DNS 변경 명령을 실행하지 마세요. 자세한 내용은 마이그레이션 되돌리기를 참조하세요.

az rest --method post --uri "${ASE_ID}/NoDowntimeMigrate?phase=DnsChange&api-version=2022-03-01"

다음 명령을 실행하여 이 단계의 상태를 확인합니다.

az rest --method get --uri "${ASE_ID}?api-version=2022-03-01" --query properties.subStatus

이 단계에서는 CompletingMigration 상태를 가져옵니다. MigrationCompleted 상태가 되면 트래픽 리디렉션 단계가 완료되고 마이그레이션이 완료됩니다.

다음 단계