영역 간 인스턴스 이동

이 페이지에서는 projects.moveInstance API를 사용하거나 수동으로 일련의 단계를 통해 VM 인스턴스를 영역 간에 이동하는 방법에 대해 설명합니다. 영역을 사용할 수 없거나 영역의 지원이 중단된 경우 이 방법을 사용하여 인스턴스를 다른 영역으로 이동할 수 있습니다.

인스턴스를 이동하는 절차는 다음과 같습니다.

  1. 원본 인스턴스에 연결된 영구 디스크의 스냅샷을 만듭니다.
  2. 대상 영역에 영구 디스크의 사본을 만듭니다.
  3. 인스턴스를 같은 지역 내에서 이동하는 경우, 인스턴스에 할당된 임시 외부 IP 주소를 고정 외부 IP 주소로 임시 승격합니다.
  4. 대상 영역에 새 인스턴스를 만들고 부팅합니다. 서로 다른 지역 간에 이동하는 경우에는 새로운 인스턴스의 새로운 하위 네트워크도 선택해야 합니다.
  5. 새로 만든 영구 디스크를 새 인스턴스에 연결합니다.
  6. 새 인스턴스에 외부 IP 주소를 할당합니다. 필요한 경우 주소의 수준을 다시 임시 외부 IP 주소로 낮춥니다.
  7. 스냅샷, 원본 디스크, 원본 인스턴스를 삭제합니다.

가능하면 항상 projects.moveInstance API를 사용하여 인스턴스를 자동으로 이동하세요. 인스턴스가 moveInstance API를 사용하기 위한 요구사항을 충족하지 않으면 인스턴스를 수동으로 이동합니다.

시작하기 전에

요건

인스턴스를 이동하려면 다음 요구사항을 충족해야 합니다.

  • 프로젝트에 새 스냅샷을 위한 공간과 임시 외부 IP 주소를 승격하기 위한 공간이 충분히 할당되어 있어야 합니다.
  • 대상 지역에 새 인스턴스와 디스크를 위한 공간이 충분히 할당되어 있어야 합니다. 예를 들어 이동할 인스턴스에 디스크가 3개 연결되어 있는 경우 임시 영구 디스크 스냅샷 3개와 새 디스크 3개를 위한 공간이 충분히 할당되어 있어야 합니다. 새 디스크를 만든 후에는 임시 스냅샷을 삭제해도 됩니다.
  • 이동할 인스턴스에 연결된 영구 디스크가 두 개 이상의 인스턴스에 연결되어 있지 않아야 합니다.
  • 인스턴스에 GPU가 포함된 경우, 사용하려는 GPU를 대상 영역에서 사용할 수 있는지 확인하세요. GPU와 GPU를 사용할 수 있는 영역의 목록은 Compute Engine의 GPU를 참조하세요.

인스턴스를 이동한 후에는 원본 리소스에 대한 기존 참조(예: 기존 인스턴스를 가리키는 대상 인스턴스 또는 대상 풀)를 업데이트해야 합니다.

리소스 속성

옮기는 동안 서버에서 생성한 인스턴스와 디스크의 일부 속성이 변경됩니다.

변경되는 인스턴스 속성

속성 이름 변경사항
내부 IP 주소 일반적으로 새 내부 IP 주소가 할당되지만 인스턴스가 원래의 내부 IP 주소를 유지할 수도 있습니다.
외부 IP 주소 인스턴스를 같은 지역 내의 영역 간에 옮기는 경우에는 외부 IP 주소가 그대로 유지됩니다. 그렇지 않으면 VM 인스턴스에 대해 다른 IP 주소를 선택해야 합니다.
CPU 플랫폼 대상 영역에 사용할 수 있는 CPU 플랫폼에 따라, 인스턴스를 옮긴 후 인스턴스의 CPU 플랫폼이 달라질 수 있습니다. 각 영역에 있는 CPU 플랫폼의 전체 목록은 사용 가능한 지역 및 영역을 참조하세요.
네트워크/하위 네트워크 인스턴스가 하위 네트워크에 속하고 지역 간에 인스턴스를 이동하는 경우, 인스턴스의 새로운 하위 네트워크를 선택해야 합니다. 동일한 지역 내의 영역 간을 이동하는 인스턴스는 동일한 하위 네트워크를 유지합니다.

변경되는 디스크 속성

속성 이름 변경사항
소스 스냅샷 새 디스크의 소스 스냅샷은 이동 중에 생성되는 임시 스냅샷으로 설정됩니다.
소스 스냅샷 ID 소스 스냅샷 ID는 임시 스냅샷의 ID로 설정됩니다.
소스 이미지 소스 이미지 필드가 비어 있습니다.
이미지 ID 이미지 ID가 비어 있습니다.
마지막으로 분리된 타임스탬프 마지막으로 분리된 타임스탬프가 비어 있습니다.
마지막으로 연결된 타임스탬프 마지막으로 연결된 타임스탬프가 새 인스턴스에 새 디스크가 연결되었을 때의 타임스탬프로 변경됩니다.

인스턴스와 디스크에서 모두 변경되는 속성

속성 이름 변경사항
ID 새 리소스 ID가 생성됩니다.
생성 타임스탬프 새 생성 타임스탬프가 생성됩니다.
영역 리소스 URL 모든 영역 리소스 URL이 대상 영역을 반영하도록 변경됩니다. 다음은 변경되는 리소스 URL의 목록입니다.
  • 인스턴스의 소스 디스크 URL
  • 인스턴스의 머신 유형 URL
  • 자체 링크 URL
  • 영역 URL
  • 디스크 유형 URL
  • 디스크의 users[] 목록에 나열된 인스턴스의 URL

수동 이동과 자동 이동 중에서 선택

수동 이동은 projects.moveInstances API를 사용하는 대신 위에서 설명한 각 단계를 직접 수행해야 한다는 의미입니다. 가능하면 moveInstances API를 사용하여 수고를 줄이는 것이 좋지만, moveInstances API를 사용하지 못하는 시나리오가 몇 가지 있습니다. 구체적으로는 다음과 같습니다.

  • 인스턴스를 서로 다른 지역 간에(예를 들어 us-west1-aasia-south1-b 간에) 이동하려는 경우 VM이 하위 네트워크에 속해 있으면 이동을 수동으로 수행하고 인스턴스의 새로운 하위 네트워크를 선택해야 합니다.
  • 인스턴스에 GPU 또는 SSD가 연결되어 있는 경우에도 이동을 수동으로 수행해야 합니다.

수동이든 자동이든, 인스턴스를 성공적으로 이동하려면 몇 가지 요구사항을 충족해야 합니다.

인스턴스를 이동하기 전에 요구사항을 검토하세요.

gcloud


인스턴스가 실행되고 있는지 확인합니다. 그런 다음 gcloud에서 compute instances move 하위 명령어를 사용하여 인스턴스를 이동합니다.

예를 들어 현재 us-central1-b에서 실행 중인 example-instance-1이라는 인스턴스를 연결된 모든 영구 디스크와 함께 us-central1-f로 이동하려면 다음 명령어를 실행합니다.

gcloud compute instances move example-instance \
    --zone us-central1-a --destination-zone us-central1-f

이 작업을 완료하는 데 몇 분이 소요될 수 있습니다.

API

API에서 moveInstance API에 대해 POST 요청을 실행하되 요청 본문에 targetInstancedestinationZone을 포함합니다. 예를 들면 다음과 같습니다.

{
   "targetInstance": "zones/us-central1-a/instances/example-instance",
   "destinationZone": "zones/us-central1-b"
}

수동으로 인스턴스 이동

moveInstance API에서 인스턴스 이동에 관련된 모든 작업을 자동으로 처리하므로 가능하면 인스턴스를 자동으로 이동하세요. 그러나 제한사항으로 인해 이 API를 사용하지 못하는 경우에는 이동을 수동으로 수행할 수 있습니다. 다음 중 하나라도 해당하면 인스턴스를 수동으로 이동하세요.

  • VM이 RUNNING 상태가 아닙니다.
  • VM을 다른 지역으로 이동하는데 이 VM이 하위 네트워크에 속해 있습니다.
  • 인스턴스에 GPU 또는 로컬 SSD가 연결되어 있습니다.

다음 예에서는 myrootdiskmydatadisk라는 영구 디스크 2개가 있는 인스턴스 myinstanceeurope-west1-a에서 us-west1-b로 이동하는 방법을 설명합니다. 이 예의 인스턴스는 다음과 같이 표시됩니다.

gcloud compute instances list
NAME       ZONE           MACHINE_TYPE  INTERNAL_IP    EXTERNAL_IP     STATUS
myinstance europe-west1-a n1-standard-4 10.240.116.177 146.148.112.106 RUNNING

인스턴스를 다른 영역으로 이동하려면 다음 안내를 따르세요.

  1. 이동할 인스턴스와 연결된 디스크를 확인합니다.

    디스크 페이지로 이동

    이 예에서는 myinstance 인스턴스에 대해 다음과 같은 2개의 연결된 디스크를 찾을 수 있습니다.

    • 부팅 디스크 myrootdisk
    • 데이터 디스크 mydatadisk
  2. 인스턴스가 삭제될 때 디스크가 자동으로 삭제되지 않도록 myrootdiskmydatadisk의 자동 삭제 상태를 false로 설정합니다.

    gcloud compute instances set-disk-auto-delete myinstance --zone europe-west1-a \
        --disk myrootdisk --no-auto-delete
    

    상태가 업데이트되면 gcloud computeUpdated [...]라는 응답을 반환합니다. 자동 삭제 상태가 이미 false로 설정되어 있으면, gcloud compute가 빈 응답을 반환합니다.

  3. (선택 사항) 인스턴스 메타데이터를 저장합니다.

    인스턴스를 삭제하면 인스턴스 메타데이터도 삭제됩니다. 해당 정보를 별도의 파일에 저장한 다음, 인스턴스 메타데이터를 새 인스턴스에 다시 적용해도 됩니다.

    인스턴스의 메타데이터를 다음과 같이 설명합니다.

    gcloud compute instances describe myinstance --zone europe-west1-a
    

    내용을 별도의 파일에 저장합니다.

  4. 데이터의 백업을 만듭니다.

    만약에 대비해 영구 디스크 스냅샷을 사용하여 데이터의 백업을 만듭니다. 영구 디스크가 아직 인스턴스에 연결되어 있으므로 스냅샷이 영구 디스크의 상태와 일치하도록 스냅샷을 생성하기 전에 디스크 버퍼를 삭제합니다.

    디스크 버퍼를 삭제한 후 다음과 같이 스냅샷을 만듭니다.

    gcloud compute disks snapshot myrootdisk mydatadisk \
        --snapshot-names backup-myrootsnapshot,backup-mydatasnapshot \
        --zone europe-west1-a
    

    스냅샷이 생성되었는지 확인하려면 gcloud compute snapshots list를 실행합니다.

  5. 인스턴스를 삭제합니다.

    인스턴스를 삭제하면 인스턴스가 깔끔하게 종료되고 모든 영구 디스크가 분리됩니다.

    gcloud compute instances delete myinstance --zone europe-west1-a
    

    gcloud에서 삭제를 확인하라는 메시지가 표시됩니다.

     The following instances will be deleted. Attached disks configured to
     be auto-deleted will be deleted unless they are attached to any other
     instances. Deleting a disk is irreversible and any data on the disk
     will be lost.
      — [myinstance] in [europe-west1-a]
     

    Do you want to continue (Y/n)?

    앞의 과정에서 디스크의 자동 삭제 상태를 껐으므로 Y를 입력하여 계속 진행하고 경고를 무시하세요.

  6. 그런 다음, 루트 디스크와 데이터 디스크의 또 다른 스냅샷을 만듭니다.

    gcloud compute disks snapshot myrootdisk mydatadisk \
        --snapshot-names myrootsnapshot,mydatasnapshot \
        --zone europe-west1-a
    
    Created [.../mydatasnapshot].
    Created [.../myrootsnapshot].
  7. (선택 사항) 영구 디스크를 삭제합니다.

    영구 디스크의 이름을 새 디스크에 다시 사용하려면 기존 디스크를 삭제하여 해당 이름을 사용할 수 있게 만들어야 합니다. 디스크를 삭제하면 영구 디스크 저장소 비용도 절약됩니다.

    동일한 디스크 이름을 다시 사용하지 않으려면 나중에 영구 디스크를 삭제해도 됩니다.

    gcloud compute disks delete myrootdisk mydatadisk --zone europe-west1-a
    
  8. 방금 만든 스냅샷에서 us-west1-b에 새 영구 디스크를 만듭니다. 우선 루트 디스크를 만듭니다.

    gcloud compute disks create myrootdiskb --source-snapshot myrootsnapshot \
        --zone us-west1-b
    
    Created [.../myrootdiskb].
    NAME        ZONE           SIZE_GB TYPE        STATUS
    myrootdiskb us-west1-b     100     pd-standard READY

    그런 다음, 데이터 디스크를 만듭니다.

    gcloud compute disks create mydatadiskb --source-snapshot mydatasnapshot \
        --zone us-west1-b
    
    Created [.../mydatadiskb].
    NAME        ZONE           SIZE_GB TYPE        STATUS
    mydatadiskb us-west1-b 4000    pd-standard READY
  9. us-west1-b에 인스턴스를 다시 만듭니다.

    • 인스턴스 메타데이터를 파일(예: myinstance.describe)에 저장하도록 선택한 경우 이 파일을 사용하여 인스턴스에 동일한 메타데이터를 설정할 수 있습니다.

    • 인스턴스에 예약된 외부 IP 주소가 있는 경우 --address ADDRESS 옵션을 지정하여 해당 주소를 새 인스턴스에 다시 할당할 수 있습니다.

    • 인스턴스에 GPU가 포함되어 있는 경우 --accelerator 옵션을 사용하여 인스턴스에 GPU를 추가합니다.

    • 인스턴스가 특정 서브넷을 사용하는 경우 --zone [ZONE_NAME] 플래그 앞에 --subnet [SUBNET_NAME] 플래그를 추가합니다.

    추가 플래그의 전체 목록은 gcloud compute instances create를 참조하세요.

    gcloud compute instances create myinstanceb --machine-type n1-standard-4 \
        --zone us-west1-b \
        --disk name=myrootdiskb,boot=yes,mode=rw \
        --disk name=mydatadiskb,mode=rw
    
    Created [.../myinstanceb].
    NAME        ZONE           MACHINE_TYPE  INTERNAL_IP    EXTERNAL_IP     STATUS
    myinstanceb us-west1-b     n1-standard-4 10.240.173.229 146.148.112.106 RUNNING
  10. (선택 사항) 영구 디스크 스냅샷을 삭제합니다.

    가상 머신이 이동된 것을 확인한 후 만들어 놓은 임시 스냅샷을 삭제하여 저장소 비용을 절약하세요.

    gcloud compute snapshots delete myrootsnapshot mydatasnapshot
    

    백업 스냅샷이 더 이상 필요하지 않다면 해당 스냅샷도 삭제합니다.

    gcloud compute snapshots delete backup-myrootsnapshot backup-mydatasnapshot
    

다음 단계

이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...

Compute Engine 문서