다음을 통해 공유


Azure PowerShell 및 CLI를 사용하여 지역별 가용성 영역에서 영역 가용성 영역으로 가상 머신 이동

이 문서에서는 Azure PowerShell 및 CLI cmdlet을 사용하여 Azure 단일 인스턴스 VM을 지역 가용성 영역에서 영역 가용성 영역으로 이동하는 방법을 자세히 설명합니다. 가용성 영역은 Azure 지역에서 물리적으로 별도 영역입니다. 가용성 영역을 사용하여 가능성이 적은 실패 또는 전체 데이터 센터의 손실로부터 앱 및 데이터를 보호합니다.

가용성 영역을 사용하려면 지원되는 Azure 지역에 가상 머신을 만들어야 합니다.

필수 조건

이동 프로세스를 시작하기 전에 다음 요구 사항을 확인합니다.

요구 사항 설명
구독 권한 이동하려는 리소스가 포함된 구독에 대한 소유자 액세스 권한이 있는지 확인합니다.

관리 ID에는 다음 권한이 필요합니다.
- 기여자 역할과 함께 사용할 수 있는 사용자 구독에서 리소스 작성 또는 만들기 권한.
- 역할 할당을 만들 수 있는 권한. 일반적으로 소유자 또는 사용자 액세스 관리자 역할을 사용하거나 Microsoft.Authorization 역할 할당 또는 쓰기 권한이 할당된 사용자 지정 역할을 사용하여 가능합니다. 데이터 공유 리소스의 관리 ID에 이미 Azure 데이터 저장소에 대한 액세스 권한이 부여된 경우에는 이 권한이 필요하지 않습니다.
Azure 역할에 대해 자세히 알아보세요.
VM 지원 지원되는 지역을 검토하세요.

- 지원되는 컴퓨팅, 스토리지네트워킹 설정을 확인합니다.
VM 상태 정보 이동하려는 VM은 영역 이동을 시도하기 전에 정상 상태여야 합니다. VM 영역 이동을 시도하기 전에 보류 중인 모든 재부팅 및 필수 업데이트가 완료되고 Virtual Machine이 작동하며 정상 상태인지 확인합니다.

PowerShell 및 CLI 요구 사항 검토

대부분의 리소스 이동 작업은 몇 가지 예외를 제외하고 Azure Portal 또는 PowerShell 또는 CLI를 사용하는지 여부와 관계없이 동일합니다.

연산 포털 PowerShell/CLI
이동 컬렉션 만들기 이동 컬렉션(이동하는 모든 지역 VM의 목록)이 자동으로 만들어집니다. 필수 ID 권한이 포털을 통해 백 엔드에 할당됩니다. PowerShell cmdlet 또는 CLI cmdlet을 사용하여 다음을 수행할 수 있습니다.
- 관리 ID를 컬렉션에 할당합니다.
- 컬렉션에 지역 VM을 추가합니다.
리소스 이동 작업 단계의 유효성을 검사하고 사용자 설정 변경 내용의 유효성을 검사합니다. 이동을 시작하면 이동 프로세스가 시작되고 대상 영역에 원본 VM의 복사본이 만들어집니다. 또한 대상 영역에서 새로 만든 VM의 이동을 완료합니다. PowerShell cmdlet 또는 CLI cmdlet을 사용하여 다음을 수행합니다.
- 컬렉션에 지역 VM 추가
- 종속성 해결
- 이동 수행
- 이동 커밋

샘플 값

스크립트 예제에서 사용하는 값은 다음과 같습니다.

설정
구독 ID 구독 ID
지역 이동 미국 동부
리소스 그룹(이동 컬렉션에 대한 메타데이터 포함) RegionToZone-DemoMCRG
이동 컬렉션 이름 RegionToZone-DemoMC
이동 컬렉션의 위치 eastus2euap
ID 유형 SystemAssigned
VM 이름 demoVM-MoveResource
이동 형식 RegionToZone

Azure에 로그인

Connect-AzAccount 명령을 사용하여 Azure 구독에 로그인하고 화면의 지시를 따릅니다.

Connect-AzAccount –Subscription "<subscription-id>"

이동 컬렉션 설정

MoveCollection 개체에는 이동하려는 리소스에 대한 메타데이터 및 구성 정보가 저장됩니다. 이동 컬렉션을 설정하려면 다음을 수행합니다.

  • 이동 컬렉션에 대한 리소스 그룹을 만듭니다.
  • MoveCollection 리소스를 만들 수 있도록 서비스 공급자를 구독에 등록합니다.
  • 관리 ID를 사용하여 MoveCollection 개체를 만듭니다. MoveCollection 개체에서 Resource Mover 서비스가 있는 구독에 액세스하려면 구독에서 신뢰하는 시스템이 할당한 관리 ID(이전의 MSI(관리 서비스 ID))가 필요합니다.
  • 관리 ID에 대한 Resource Mover 구독에 대한 액세스 권한을 부여합니다.

리소스 그룹 만들기

New-AzResourceGroup을 사용하여 이동 컬렉션 메타데이터 및 구성 정보에 대한 리소스 그룹을 만들려면 다음 cmdlet을 사용합니다. 리소스 그룹은 Azure 리소스가 배포 및 관리되는 논리적 컨테이너입니다.

New-AzResourceGroup -Name "RegionToZone-DemoMCRG" -Location "EastUS"

출력:

관리 디스크를 보여 주는 출력은 VM과 동일한 가용성 영역에 있습니다.

ResourceGroupName : RegionToZone-DemoMCRG
Location          : eastus
ProvisioningState : Succeeded
Tags              :
                    Name     Value
                    =======  ========
                    Created  20230908

ResourceId        : /subscriptions/<Subscription-id>/resourceGroups/RegionToZone-DemoMCRG

리소스 공급자 등록

  1. 다음과 같이 MoveCollection 리소스를 만들 수 있도록 Microsoft.Migrate 리소스 공급자를 등록합니다.

    Register-AzResourceProvider -ProviderNamespace Microsoft.Migrate
    
  2. 등록을 기다립니다.

    While(((Get-AzResourceProvider -ProviderNamespace Microsoft.Migrate)| where {$_.RegistrationState -eq "Registered" -and $_.ResourceTypes.ResourceTypeName -eq "moveCollections"}|measure).Count -eq 0)
    {
        Start-Sleep -Seconds 5
        Write-Output "Waiting for registration to complete."
    }
    

MoveCollection 개체 만들기

다음과 같이 MoveCollection 개체를 만들고 관리 ID를 할당합니다.

New-AzResourceMoverMoveCollection -Name "RegionToZone-DemoMC"  -ResourceGroupName "RegionToZone-DemoMCRG" -MoveRegion "eastus" -Location "eastus2euap" -IdentityType "SystemAssigned" -MoveType "RegionToZone"

출력:

Etag                                   Location    Name
----                                   --------    ----
"3a00c441-0000-3400-0000-64fac1b30000" eastus2euap RegionToZone-DemoMC

참고 항목

지역 간 이동의 경우 MoveType 매개 변수를 RegionToZone으로 설정해야 하며 영역 이동을 진행 중인 리소스가 있는 위치로 MoveRegion 매개 변수를 설정해야 합니다. SourceRegionTargetRegion 매개 변수가 필요하지 않으며 null로 설정해야 합니다.

관리 ID에 대한 액세스 권한 부여

다음과 같이 Resource Mover 구독에 대한 관리 ID 액세스 권한을 부여합니다. 구독 소유자여야 합니다.

  1. MoveCollection 개체에서 ID 세부 정보를 검색합니다.

    $moveCollection = Get-AzResourceMoverMoveCollection -Name "RegionToZone-DemoMC" -ResourceGroupName "RegionToZone-DemoMCRG"
    $identityPrincipalId = $moveCollection.IdentityPrincipalId
    
  2. Azure Resource Mover에서 구독에 액세스하여 리소스를 이동할 수 있도록 필요한 역할을 ID에 할당합니다. 이동에 필요한 사용 권한 목록을 검토합니다 .

    New-AzRoleAssignment -ObjectId $identityPrincipalId -RoleDefinitionName Contributor -Scope "/subscriptions/<subscription-id>""
    New-AzRoleAssignment -ObjectId $identityPrincipalId -RoleDefinitionName "User Access Administrator" -Scope "/subscriptions/<subscription-id>"
    

이동 컬렉션에 지역 VM 추가

이동하려는 기존 원본 리소스에 대한 ID를 검색합니다. 대상 리소스 설정 개체를 만든 다음, 리소스를 이동 컬렉션에 추가합니다.

참고 항목

이동 컬렉션에 추가된 리소스는 동일한 구독에 있어야 하지만 다른 리소스 그룹에 있을 수 있습니다.

  1. 다음과 같이 대상 리소스 설정 개체를 만듭니다.

    $targetResourceSettingsObj = New-Object Microsoft.Azure.PowerShell.Cmdlets.ResourceMover.Models.Api20230801.VirtualMachineResourceSettings
    $targetResourceSettingsObj.ResourceType = "Microsoft.Compute/virtualMachines"
    $targetResourceSettingsObj.TargetResourceName = "RegionToZone-demoTargetVm"
    $targetResourceSettingsObj.TargetAvailabilityZone = "2"
    

    출력

    ResourceType                      TargetResourceGroupName TargetResourceName        TargetAvailabilitySetId TargetAvailabilityZone TargetVMSize UserManagedIdentity
    ------------                      ----------------------- ------------------        ----------------------- ---------------------- ------------ -------------------
    Microsoft.Compute/virtualMachines                         RegionToZone-demoTargetVm                         2
    
  2. 리소스 추가

    Add-AzResourceMoverMoveResource -ResourceGroupName "RegionToZone-DemoMCRG" -MoveCollectionName "RegionToZone-DemoMC" -SourceId "/subscriptions/<Subscription-id>/resourcegroups/PS-demo-RegionToZone-RG/providers/Microsoft.Compute/virtualMachines/RegionToZone-demoSourceVm" -Name "demoVM-MoveResource" -ResourceSetting $targetResourceSettingsObj
    

    출력

    DependsOn                         : {}
    DependsOnOverride                 : {}
    ErrorsPropertiesCode              :
    ErrorsPropertiesDetail            :
    ErrorsPropertiesMessage           :
    ErrorsPropertiesTarget            :
    ExistingTargetId                  :
    Id                                : /subscriptions/<Subscription-id>/resourceGroups/RegionToZone-DemoMCRG/providers/Microsoft.Migrate/moveCollections/Re
                                        gionToZone-DemoMC/moveResources/demoVM-MoveResource
    IsResolveRequired                 : False
    JobStatusJobName                  :
    JobStatusJobProgress              :
    MoveStatusErrorsPropertiesCode    : DependencyComputationPending
    MoveStatusErrorsPropertiesDetail  : {}
    MoveStatusErrorsPropertiesMessage : The dependency computation is not completed for resource - /subscriptions/<Subscription-id>/resourcegroups/PS-demo-R
                                        egionToZone-RG/providers/Microsoft.Compute/virtualMachines/RegionToZone-demoSourceVm'.
                                            Possible Causes: Dependency computation is pending for resource.
                                            Recommended Action: Validate dependencies to compute the dependencies.
    
    MoveStatusErrorsPropertiesTarget  :
    MoveStatusMoveState               : MovePending
    Name                              : demoVM-MoveResource
    ProvisioningState                 : Succeeded
    ResourceSetting                   : Microsoft.Azure.PowerShell.Cmdlets.ResourceMover.Models.Api20230801.VirtualMachineResourceSettings
    SourceId                          : /subscriptions/<Subscription-id>/resourcegroups/PS-demo-RegionToZone-RG/providers/Microsoft.Compute/virtualMachines/
                                        RegionToZone-demoSourceVm
    SourceResourceSetting             : Microsoft.Azure.PowerShell.Cmdlets.ResourceMover.Models.Api20230801.VirtualMachineResourceSettings
    SystemDataCreatedAt               : 9/8/2023 6:48:11 AM
    SystemDataCreatedBy               : xxxxx@microsoft.com
    SystemDataCreatedByType           : User
    SystemDataLastModifiedAt          : 9/8/2023 6:48:11 AM
    SystemDataLastModifiedBy          : xxxxx@microsoft.com
    SystemDataLastModifiedByType      : User
    TargetId                          :
    Type                              :
    

설정 수정

Azure VM 및 관련 리소스를 이동할 때 대상 설정을 수정할 수 있습니다. 이동 컬렉션의 유효성을 검사한 후에만 대상 설정을 변경하는 것이 좋습니다.

수정할 수 있는 설정은 다음과 같습니다.

  • 가상 머신 설정: 리소스 그룹, VM 이름, VM 가용성 영역, VM SKU, VM 키 자격 증명 모음 및 디스크 암호화 집합.
  • 네트워킹 리소스 설정: 네트워크 인터페이스, 가상 네트워크(VNet/) 및 네트워크 보안 그룹/네트워크 인터페이스의 경우 다음 중 하나를 수행할 수 있습니다.
    • 대상 지역에 기존 네트워킹 리소스를 사용합니다.
    • 다른 이름으로 새 리소스를 만듭니다.
  • 공용 IP/부하 분산 장치: SKU 및 영역

다음과 같은 방법으로 설정을 수정합니다.

  1. 속성을 편집하려는 이동 리소스를 검색합니다. 예를 들어 VM 실행을 검색하려면 다음을 수행합니다.

    $moveResourceObj = Get-AzResourceMoverMoveResource -MoveCollectionName " RegionToZone-DemoMCRG " -ResourceGroupName " RegionToZone-DemoMC " -Name "PSDemoVM"
    
  2. 리소스 설정을 대상 리소스 설정 개체에 복사합니다.

    $TargetResourceSettingObj = $moveResourceObj.ResourceSetting
    
  3. 대상 리소스 설정 개체에서 매개 변수를 설정합니다. 예를 들어 대상 VM의 이름을 변경하려면 다음을 수행합니다.

    $TargetResourceSettingObj.TargetResourceName="PSDemoVM-target"
    
  4. 리소스 이동 대상 설정을 업데이트합니다. 이 예제에서는 VM의 이름을 PSDemoVM에서 PSDemoVMTarget으로 변경합니다.

    Update-AzResourceMoverMoveResource -ResourceGroupName " RegionToZone-DemoMCRG " -MoveCollectionName " RegionToZone-DemoMC -SourceId "/subscriptions/<Subscription-d>/resourceGroups/PSDemoRM/providers/Microsoft.Compute/virtualMachines/PSDemoVM" -Name "PSDemoVM" -ResourceSetting $TargetResourceSettingObj
    

종속성 해결

다른 리소스에 대한 종속성이 추가한 지역 VM에 있는지 확인하고 필요에 따라 추가합니다.

  1. 다음과 같이 종속성을 해결합니다.

    Resolve-AzResourceMoverMoveCollectionDependency -ResourceGroupName "RegionToZone-DemoMCRG" -MoveCollectionName "RegionToZone-DemoMC"
    

    출력(종속성이 있는 경우)

    AdditionalInfo :
    Code           :
    Detail         :
    EndTime        : 
    EndTime        : 9/8/2023 6:52:14 AM
    
    Id             : /subscriptions/<Subscription-id>/resourceGroups/RegionToZone-DemoMCRG/providers/Microsoft.Migrate/moveCollections/RegionToZone-DemoMC/operations/bc68354b-ec1f-44cb-92ab-fb3b4ad90229
    Message        :
    Name           : bc68354b-ec1f-44cb-92ab-fb3b4ad90229
    Property       : Microsoft.Azure.PowerShell.Cmdlets.ResourceMover.Models.Any
    StartTime      : 9/8/2023 6:51:50 AM
    Status         : Succeeded
    
  2. 이동 컬렉션에 추가된 리소스 목록을 가져오려면 다음을 수행합니다.

    $list = Get-AzResourceMoverMoveResource -ResourceGroupName "RegionToZone-DemoMCRG" -MoveCollectionName "RegionToZone-DemoMC" $list.Name
    

    출력:

    demoVM-MoveResource
    mr_regiontozone-demosourcevm661_d6f18900-3b87-4fb5-9bdf-12da2f9fb185
    mr_regiontozone-demosourcevm-vnet_d8536bf5-2d5f-4778-9650-32d0570bc41a
    mr_regiontozone-demosourcevm-ip_6af03f1f-eae8-4541-83f5-97a2506cfc3e
    mr_regiontozone-demosourcevm-nsg_98d68420-d7ff-4e2d-b758-25a6df80fca7
    mr_nrms-timkbo3hy3nnmregiontozone-demosourcevm-vnet_f474c880-4823-4ed3-b761-96df6500f6a3
    
  3. 리소스 컬렉션에서 리소스를 제거하려면 다음 지침을 따릅니다.

가용성 영역 VM SKU, 할당량 및 용량 유효성 검사

Azure는 선택한 가용성 영역에 가상 머신 SKU가 없거나 사용 가능한 할당량 또는 용량이 충분하지 않은 경우 권장 사항을 제공합니다. 다음은 이러한 권장 사항의 몇 가지 예와 가상 머신 SKU를 사용할 수 없는 경우 수행해야 하는 작업입니다.

VM SKU를 사용할 수 없음

선택한 가용성 영역 1에서 원본 가상 머신 크기 Standard_DC1ds_v3를 사용할 수 없는 경우.

권장 작업: 동일한 가용성 영역에서 다른 가상 머신 크기를 선택하거나 해당 권장 VM 크기가 있는 다른 가용성 영역을 선택합니다.

권장 사항:

  • SKU: Standard_DC1ds_v3, 영역: [ 2 ]
  • SKU: Standard_DC2ds_v3, 영역: [ 2 ]
  • SKU: Standard_DC4ds_v3, 영역: [ 2 ]
  • SKU: Standard_DC1s_v3, 영역: [ 2 ]
  • SKU: Standard_D2ds_v5, 영역: [ 2, 3 ]
  • SKU: Standard_D2as_v4, 영역: [ 1, 2, 3 ]
  • SKU: Standard_D2s_v3, 영역: [ 1, 2, 3 ]
  • SKU: Standard_D2as_v5, 영역: [ 1, 2, 3 ]
  • SKU: Standard_D2s_v5, 영역: [ 2, 3 ]

용량 권장 사항

선택한 가용성 영역 1에 있는 현재 선택한 가상 머신 크기 Standard_DC1ds_v3에 대한 용량 권장 사항입니다.

권장 작업: 배포가 성공할 가능성을 높이기 위해 Azure는 다른 권장 가상 머신 크기 및 영역을 확인했습니다. 원활한 배포를 위해 동일한 가용성 영역에서 다른 VM 크기를 선택하거나 해당 가상 머신 크기가 있는 다른 가용성 영역을 선택합니다.

권장 사항:

  • SKU: Standard_DC1ds_v3, 영역: [ 2 ]
  • SKU: Standard_DC2ds_v3, 영역: [ 2 ]
  • SKU: Standard_DC4ds_v3, 영역: [ 2 ]
  • SKU: Standard_DC1s_v3, 영역: [ 2 ]
  • SKU: Standard_D2ds_v5, 영역: [ 2, 3 ]
  • SKU: Standard_D2as_v4, 영역: [ 1, 2, 3 ]
  • SKU: Standard_D2s_v3, 영역: [ 1, 2, 3 ]
  • SKU: Standard_D2as_v5, 영역: [ 1, 2, 3 ]
  • SKU: Standard_D2s_v5, 영역: [ 2, 3 ]

권장 사항 해결

VM SKU를 찾을 수 없거나 용량 문제가 있는 상황을 해결하려면 이동 리소스를 업데이트한 다음 해결을 다시 실행합니다. 다음은 참조를 위한 예제입니다.

  1. 권장 사항에 따라 가상 머신 이동 리소스 개체를 새 영역 또는 SKU로 업데이트합니다.

    $targetResourceSettingsObj.TargetVmSize = "Standard_DC1ds_v3"
    $targetResourceSettingsObj.TargetAvailabilityZone = "3"
    
  2. 가상 머신 이동 리소스 업데이트

    Add-AzResourceMoverMoveResource -ResourceGroupName "RegionToZone-DemoMCRG" -MoveCollectionName "RegionToZone-DemoMC" -SourceId "/subscriptions/<Subscription ID>/resourceGroups/<Resource Group Name>/providers/Microsoft.Compute/virtualMachines/vmtwo" -Name "demoVM-MoveResource2" -ResourceSetting $targetResourceSettingsObj
    
  3. 다시 확인 실행

    Resolve-AzResourceMoverMoveCollectionDependency -ResourceGroupName "RegionToZone-DemoMCRG" -MoveCollectionName "RegionToZone-DemoMC"

할당량 부족

선택한 가상 머신은 할당량 부족으로 인해 가용성 영역으로 이동할 수 없습니다.

권장 작업: 할당량이 충분하지 않습니다. 링크를 참조하고 지원팀에 문의하세요.

VM 리소스 이동 시작

Invoke-AzResourceMoverInitiateMove -ResourceGroupName "RegionToZone-DemoMCRG" -MoveCollectionName "RegionToZone-DemoMC" -MoveResource $("demoVM-MoveResource") -MoveResourceInputType "MoveResourceId"

출력

AdditionalInfo :
Code           :
Detail         :
EndTime        : 9/8/2023 7:07:58 AM
Id             : /subscriptions/<Subscription-id>/resourceGroups/RegionToZone-DemoMCRG/providers/Microsoft.Migrate/moveCollections/RegionToZone-DemoMC/o
                 perations/d3e06ac3-a961-4045-8301-aee7f6911160
Message        :
Name           : d3e06ac3-a961-4045-8301-aee7f6911160
Property       : Microsoft.Azure.PowerShell.Cmdlets.ResourceMover.Models.Any
StartTime      : 9/8/2023 7:01:31 AM
Status         : Succeeded

Commit

초기 이동 후 이동을 커밋하거나 삭제해야 합니다. 커밋은 대상 지역으로의 이동을 완료합니다.

다음과 같이 이동을 커밋합니다.

Invoke-AzResourceMover-VMZonalMoveCommit -ResourceGroupName "RG-MoveCollection-demoRMS" -MoveCollectionName "PS-centralus-westcentralus-demoRMS" -MoveResource $('psdemovm111', 'PSDemoRM-vnet','PSDemoVM-nsg', ‘PSDemoVM’) -MoveResourceInputType "MoveResourceId"

출력:

AdditionalInfo : 
Code           : 
Detail         : 
EndTime        : 9/22/2023 5:26:55 AM 
Id             : /subscriptions/e80eb9fa-c996-4435-aa32-5af6f3d3077c/resourceGroups/RegionToZone-DemoMCRG/providers/Microsoft.Migrate/moveCollections/RegionToZone-DemoMC/operations/35dd1d93-ba70-4dc9-a17f-7d8ba48678d8 
Message        : 
Name           : 35dd1d93-ba70-4dc9-a17f-7d8ba48678d8 
Property       : Microsoft.Azure.PowerShell.Cmdlets.ResourceMover.Models.Any 
StartTime      : 9/22/2023 5:26:54 AM 
Status         : Succeeded 

리소스 제거

다음 cmdlet을 사용하여 MoveCollection에서 단일 리소스 또는 여러 리소스를 제거할 수 있습니다.

  1. 이동 컬렉션에 추가된 이동 리소스 목록 가져오기: $list = Get-AzResourceMoverMoveResource -ResourceGroupName "<MoveCollectionResourceGroupName>" -MoveCollectionName "<MoveCollectionName>"

  2. 찾은 이동 리소스 제거: Invoke-AzResourceMoverBulkRemove -ResourceGroupName "<MoveCollectionResourceGroupName>" -MoveCollectionName "<MoveCollectionName>" -MoveResource $($list.Name)

  3. 이동 컬렉션 제거: Remove-AzResourceMoverMoveCollection -ResourceGroupName "<MoveCollectionResourceGroupName>" -MoveCollectionName "<MoveCollectionName>"

참고 항목

관리 ID 권한 부여 문제를 관찰하는 경우 이러한 단계를 다시 수행하여 관리 ID 액세스를 다시 사용하도록 설정합니다.

원본 지역 VM 삭제

이동을 커밋하고 대상 지역에서 리소스가 예상대로 작동하는지 확인한 후 다음을 사용하여 각 원본 리소스를 삭제할 수 있습니다.

다음 단계

포털을 통해 단일 인스턴스 Azure VM을 지역 구성에서 영역 구성으로 이동하는 방법을 알아봅니다.