Hyperdisk 균형 고가용성은 리전의 두 영역 간에 동기식 데이터 복제를 제공하는 스토리지 옵션입니다. Compute Engine에서 고가용성(HA) 서비스를 구현할 때 Hyperdisk 균형 고가용성을 기본 구성요소로 사용할 수 있습니다.
이 문서에서는 동기식으로 복제된 디스크의 작동을 중단할 수 있는 여러 시나리오와 이러한 시나리오를 관리하는 방법을 설명합니다.
시작하기 전에
- 동기식으로 복제된 디스크 및 장애 조치의 기본사항을 살펴보세요. 자세한 내용은 동기식 디스크 복제 정보를 참조하세요.
-
아직 인증을 설정하지 않았다면 설정합니다.
인증은 Google Cloud 서비스 및 API에 액세스하기 위해 ID를 확인하는 프로세스입니다.
로컬 개발 환경에서 코드 또는 샘플을 실행하려면 다음과 같이 Compute Engine에 인증하면 됩니다.
Select the tab for how you plan to use the samples on this page:
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
REST
로컬 개발 환경에서 이 페이지의 REST API 샘플을 사용하려면 gcloud CLI에 제공하는 사용자 인증 정보를 사용합니다.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
자세한 내용은 Google Cloud 인증 문서의 REST 사용 인증을 참조하세요.
-
필요한 역할
복제본 복구 체크포인트를 사용해서 동기식으로 복제된 디스크 데이터를 마이그레이션하는 데 필요한 권한을 얻으려면 관리자에게 문의해서 다음 IAM 역할을 부여해 달라고 요청합니다.
-
복제본 복구 체크포인트를 사용하여 동기적으로 복제된 디스크 데이터를 마이그레이션하는 데 필요한 권한:
프로젝트에 대한 Compute 인스턴스 관리자(v1) 역할(
roles/compute.instanceAdmin.v1
) - 복제된 디스크 측정항목을 보기 위한 역할(다음 중 하나):
역할 부여에 대한 자세한 내용은 액세스 관리를 참조하세요.
이러한 사전 정의된 역할에는 복제본 복구 체크포인트를 사용해서 동기식으로 복제된 디스크 데이터를 마이그레이션하는 데 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 섹션을 펼치세요.
필수 권한
복제본 복구 체크포인트를 사용해서 동기식으로 복제된 디스크 데이터를 마이그레이션하려면 다음 권한이 필요합니다.
-
복제본 복구 체크포인트에서 표준 스냅샷을 만들려면 다음 권한이 필요합니다.
- 프로젝트에 대한
compute.snapshots.create
- 디스크에 대한
compute.disks.createSnapshot
- 프로젝트에 대한
-
표준 스냅샷에서 동기식으로 복제된 새 디스크를 만들려면 새 디스크를 만들려는 프로젝트에 대해
compute.disks.create
-
VM을 새 디스크에 마이그레이션하려면 다음 권한이 필요합니다.
-
VM 인스턴스에 대한
compute.instances.attachDisk
-
새로 만든 디스크에 대한
compute.disks.use permission
-
VM 인스턴스에 대한
커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이 권한을 부여받을 수도 있습니다.
오류 시나리오
동기식 복제 디스크에서 기기가 완전히 복제됨일 때는 리전의 두 영역에 데이터가 자동으로 복제됩니다. 쓰기 작업은 두 복제본에서 지속적으로 유지되는 경우에 컴퓨팅 인스턴스에 승인됩니다.
한 영역에 대한 복제가 실패하거나 복제 속도가 잠시 동안 매우 느리면 디스크 복제 상태가 성능 저하됨으로 전환됩니다. 이 모드에서 쓰기 작업은 복제본 하나에 영구 보관된 후에 승인됩니다.
Compute Engine에서 복제를 재개할 수 있는 것으로 감지된 경우, 다른 복제본이 성능 저하 상태로 전환된 후 한 복제본에 기록된 데이터는 두 영역에 모두 동기화되고 디스크는 완전 복제됨 상태로 돌아갑니다. 이러한 전환은 완전히 자동으로 수행됩니다.
기기가 성능 저하됨 상태일 때는 RPO 및 RTO가 정의되지 않습니다. 성능 저하됨 상태로 작동 중인 디스크에 오류가 발생할 때 데이터 또는 가용성 손실을 최소화하려면 표준 스냅샷을 사용해서 동기식 복제 디스크를 정기적으로 백업하는 것이 좋습니다. 스냅샷을 복원하여 디스크를 복구할 수 있습니다.
영역 오류
복제된 디스크 또는 리전별 디스크는 기본 및 보조 영역의 디스크 복제본에 동기식으로 복제됩니다. 영역 복제본을 사용할 수 없게 되면 영역 장애가 발생합니다. 다음 이유 중 하나로 인해 기본 또는 보조 영역에서 영역 장애가 발생할 수 있습니다.
- 영역 중단이 발생했습니다.
- 복제본에서 쓰기 작업 속도가 과도하게 느려졌습니다.
다음 표에서는 동기식으로 복제된 디스크에 발생할 수 있는 여러 가지 영역 장애 시나리오와 각 시나리오의 권장 조치를 보여줍니다. 각 시나리오에서는 기본 영역 복제본이 정상 상태이고 초기 상태 중에 동기화되었다고 가정합니다.
디스크 초기 상태 | 장애 발생 | 새 디스크 상태 | 장애 결과 | 수행할 작업 |
---|---|---|---|---|
기본 복제본: 동기화됨 보조 복제본: 동기화됨 디스크 상태: 완전히 복제됨 연결된 디스크: 기본 영역 |
기본 영역 |
기본 복제본: 동기화되지 않았거나 사용할 수 없음 보조 복제본: 동기화됨 디스크 상태: 성능 저하됨 연결된 디스크: 기본 영역 |
|
정상 보조 영역의 VM에 강제로 연결하여 디스크를 장애 조치합니다. |
기본 복제본: 동기화됨 보조 복제본: 동기화됨 디스크 상태: 완전히 복제됨 연결된 디스크: 기본 영역 |
보조 영역 |
기본 복제본: 동기화됨 보조 복제본: 동기화되지 않았거나 사용할 수 없음 디스크 상태: 성능 저하됨 연결된 디스크: 기본 영역 |
|
별도의 조치를 취하지 않아도 됩니다. 다시 사용 가능한 상태가 되면 Compute Engine이 보조 영역에 있는 비정상 복제본을 동기화합니다. |
기본 복제본: 동기화됨 보조 복제본: 동기화되지 않았고 사용할 수 없음 디스크 상태: 성능 저하됨 연결된 디스크: 기본 영역 |
기본 영역 |
기본 복제본: 동기화되었지만 사용할 수 없음 보조 복제본: 동기화되지 않음 디스크 상태: 사용할 수 없음 연결된 디스크: 기본 영역 |
|
데이터 복구를 위해 기존 표준 스냅샷 사용 및 새 디스크 만들기를 수행하는 것이 좋습니다. 복제된 디스크를 표준 스냅샷을 사용하여 정기적으로 백업하는 것이 좋습니다. |
기본 복제본: 동기화됨 보조 복제본: 지연 중이지만 사용할 수 있음 디스크 상태: 지연 중 연결된 디스크: 기본 영역 |
기본 영역 |
기본 복제본: 사용할 수 없음 보조 복제본: 지연 중이지만 사용할 수 있음 디스크 상태: 사용할 수 없음 연결된 디스크: 기본 영역 |
|
|
기본 복제본: 동기화됨 보조 복제본: 동기화되지 않았지만 사용할 수 있음 디스크 상태: 성능 저하됨 연결된 디스크: 기본 영역 |
기본 영역 |
기본 복제본: 사용할 수 없음 보조 복제본: 동기화되지 않았지만 사용할 수 있음 디스크 상태: 사용할 수 없음 연결된 디스크: 기본 영역 |
|
|
애플리케이션 및 VM 오류
VM 구성 오류, OS 업그레이드 실패 또는 기타 애플리케이션 오류로 인해 중단이 발생할 경우 정상 복제본과 동일한 영역에 있는 컴퓨팅 인스턴스에 복제된 디스크를 force-attach
할 수 있습니다.
오류 카테고리 및 확률 | 오류 유형 | 작업 |
---|---|---|
애플리케이션 오류(높음) |
|
애플리케이션 컨트롤 플레인에서 상태 확인 임곗값에 따라 장애 조치를 트리거할 수 있습니다. |
VM 장애(보통) |
|
VM은 일반적으로 자동 복구됩니다. 애플리케이션 컨트롤 플레인에서 상태 확인 임곗값에 따라 장애 조치를 트리거할 수 있습니다. |
애플리케이션 손상(낮음-보통) |
애플리케이션 데이터 손상 (예: 애플리케이션 버그 또는 OS 업그레이드 실패) |
애플리케이션 복구:
|
force-attach
를 사용하여 복제된 디스크 장애 조치
기본 영역에 장애가 발생하면 강제 연결 작업을 통해Hyperdisk 균형 고가용성 볼륨(미리보기)을 다른 영역의 컴퓨팅 인스턴스에 연결하여 장애 조치할 수 있습니다.
기본 영역에 장애가 발생하면 분리 작업을 수행하기 위해 인스턴스에 도달할 수 없기 때문에 인스턴스에서 디스크를 분리하지 못할 수 있습니다. 강제 연결을 사용하면 볼륨이 다른 인스턴스에 연결되어 있더라도Hyperdisk 균형 고가용성 볼륨을 컴퓨팅 인스턴스에 연결할 수 있습니다.
강제 연결 작업이 완료되면 Compute Engine은 원래 인스턴스가 복제된 디스크에 쓰지 못하게 합니다. 강제 연결 작업을 사용하면 안전하게 데이터에 대한 액세스 권한을 다시 얻고 서비스를 복구할 수 있습니다. 또한 강제 연결 작업을 수행한 후 VM 인스턴스 수동 종료 옵션을 선택할 수 있습니다.
기존 디스크를 컴퓨팅 인스턴스에 강제 연결하려면 다음 태스크 중 하나를 선택하세요.
콘솔
VM 인스턴스 페이지로 이동합니다.
프로젝트를 선택합니다.
변경하려는 인스턴스의 이름을 클릭합니다.
세부정보 페이지에서 수정을 클릭합니다.
추가 디스크 섹션에서 추가 디스크 연결을 클릭합니다.
드롭다운 목록에서 리전의 복제본 디스크를 선택합니다.
디스크를 강제 연결하려면 디스크 강제 연결 체크박스를 선택합니다.
완료를 클릭한 다음 저장을 클릭합니다.
오류가 해결된 후 동일한 단계를 수행하여 원래의 컴퓨팅 인스턴스에 디스크를 force-attach
할 수 있습니다.
gcloud
gcloud CLI에서 instances attach-disk
명령어를 사용하여 복제본 디스크를 컴퓨팅 인스턴스에 연결합니다. --disk-scope
플래그를 포함하고 regional
로 설정합니다.
gcloud compute instances attach-disk VM_NAME \
--disk DISK_NAME --disk-scope regional \
--force-attach
다음을 바꿉니다.
VM_NAME
: 리전의 새 컴퓨팅 인스턴스 이름DISK_NAME
: 복제된 디스크의 이름.
디스크를 force-attach
한 후 필요하면 파일 시스템을 디스크에 마운트합니다. 컴퓨팅 인스턴스는 강제 연결된 디스크를 사용해 디스크에 대한 읽기 및 쓰기 작업을 계속할 수 있습니다.
REST
compute.instances.attachDisk
메서드에 대한 POST
요청을 작성하고 방금 만든 디스크의 URL을 포함합니다.
디스크를 새 컴퓨팅 인스턴스에 연결하려면 기본 컴퓨팅 인스턴스에 여전히 디스크가 연결되어 있는 경우 forceAttach=true
쿼리 매개변수가 필요합니다.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/attachDisk?forceAttach=true
{
"source": "projects/PROJECT_ID/regions/REGION/disks/DISK_NAME"
}
다음을 바꿉니다.
PROJECT_ID
: 프로젝트 IDZONE
: 컴퓨팅 인스턴스의 위치VM_NAME
: 복제된 디스크를 추가할 컴퓨팅 인스턴스의 이름REGION
: 복제된 디스크가 있는 리전DISK_NAME
: 복제된 디스크의 이름.
복제본 디스크를 연결한 후 필요하면 파일 시스템을 디스크에 마운트합니다. 컴퓨팅 인스턴스는 복제본 디스크를 사용하여 디스크에 대한 읽기 및 쓰기 작업을 계속할 수 있습니다.
부팅 디스크를 보조 인스턴스로 장애 조치
컴퓨팅 인스턴스에는 부팅 디스크를 하나만 연결할 수 있습니다. 복제된 부팅 디스크를 장애 조치할 때 보조 컴퓨팅 인스턴스가 이미 있는지 여부에 따라 다음 방법 중 하나를 사용합니다.
활성 대기 VM이 없으면 보조 영역에 새 인스턴스를 만듭니다. 두 번째 인스턴스를 만들 때 복제된 부팅 디스크로 새 VM 만들기의 설명대로 복제된 디스크를 부팅 디스크에 사용합니다.
보조 영역에 대기 VM이 있으면 VM에 복제된 부팅 디스크 연결의 설명대로 대기 VM의 부팅 디스크를 복제된 부팅 디스크로 바꿉니다.
복제본 복구 체크포인트를 사용하여 복제된 디스크 복구
복제본 복구 체크포인트는 완전 복제된Hyperdisk 균형 고가용성(미리보기) 볼륨의 가장 최근 비정상 종료 일관성이 있는 시점을 나타냅니다. Compute Engine을 사용하면 성능 저하된 디스크의 복제본 복구 체크포인트로부터 표준 스냅샷을 만들 수 있습니다.
드문 경우지만 디스크가 성능 저하되면, 동기화되지 않은 복제본이 따라잡기를 하기 전에 최신 디스크 데이터와 동기화된 영역 복제본에도 장애가 발생할 수 있습니다. 그렇게 되면 어느 영역에서도 컴퓨팅 인스턴스에 디스크를 강제 연결할 수 없습니다. 복제된 디스크를 사용할 수 없게 되고 데이터를 새 디스크로 마이그레이션해야 합니다. 이러한 시나리오에서는 디스크에 사용 가능한 기존 표준 스냅샷이 없더라도 복제본 복구 체크포인트에서 생성된 표준 스냅샷을 사용하여 완전하지 않은 복제본으로부터 디스크 데이터를 복구할 수 있습니다. 자세한 내용은 디스크 데이터 마이그레이션 및 복구 절차를 참조하세요.
디스크 데이터 마이그레이션 및 복구 절차
복제본 복구 체크포인트를 사용해서 복제된 디스크의 데이터를 복구하고 마이그레이션하려면 다음 단계를 수행합니다.
복제본 복구 체크포인트에서 영향을 받은Hyperdisk 균형 고가용성(미리보기) 볼륨의 표준 스냅샷을 만듭니다.
gcloud CLI 또는 REST만 사용하여 복제본 복구 체크포인트에서 디스크의 표준 스냅샷을 만들 수 있습니다.
gcloud
복제본 복구 체크포인트를 사용하여 스냅샷을 만들려면
gcloud compute snapshots create
명령어를 사용합니다. 복제본 복구 체크포인트를 사용해서 스냅샷을 만들도록 지정하려면--source-disk-for-recovery-checkpoint
플래그를 포함합니다.--source-disk
및--source-disk-region
매개변수는 제외합니다.gcloud compute snapshots create SNAPSHOT_NAME \ --source-disk-for-recovery-checkpoint=SOURCE_DISK \ --source-disk-for-recovery-checkpoint-region=SOURCE_REGION \ --storage-location=STORAGE_LOCATION \ --snapshot-type=SNAPSHOT_TYPE
다음을 바꿉니다.
DESTINATION_PROJECT_ID
: 스냅샷을 만들려는 프로젝트의 IDSNAPSHOT_NAME
: 스냅샷의 이름SOURCE_DISK
: 스냅샷을 만드는 데 사용할 소스 디스크의 이름 또는 전체 경로입니다. 소스 디스크의 전체 경로를 지정하려면 다음 구문을 사용합니다.projects/SOURCE_PROJECT_ID/regions/SOURCE_REGION/disks/SOURCE_DISK_NAME
소스 디스크의 전체 경로를 지정하면
--source-disk-for-recovery-checkpoint-region
플래그를 제외할 수 있습니다. 디스크 이름만 지정하는 경우 이 플래그를 포함해야 합니다.다른 프로젝트에 있는 소스 디스크의 복구 체크포인트로부터 스냅샷을 만들려면 소스 디스크의 전체 경로를 지정해야 합니다.
SOURCE_PROJECT_ID
: 스냅샷을 만드는 데 사용할 소스 디스크의 프로젝트 ID입니다.SOURCE_REGION
: 스냅샷을 만드는 데 사용할 소스 디스크의 리전입니다.SOURCE_DISK_NAME
: 스냅샷을 만드는 데 사용할 소스 디스크의 이름입니다.STORAGE_LOCATION
: (선택사항) 스냅샷을 저장할 Cloud Storagemulti-region 또는 Cloud Storageregion입니다. 스토리지 위치는 하나만 지정할 수 있습니다.
스냅샷 설정에 구성된 사전 정의되었거나 맞춤 설정된 기본 스토리지 위치를 무효화하려는 경우에만--storage-location
플래그를 사용합니다.SNAPSHOT_TYPE
: 스냅샷 유형(STANDARD 또는 ARCHIVE). 스냅샷 유형을 지정하지 않으면 STANDARD 스냅샷이 생성됩니다.
복제본 복구 체크포인트를 사용하여 성능 저하된 디스크에서만 스냅샷을 만들 수 있습니다. 기기가 완전히 복제되었을 때 복제본 복구 체크포인트에서 스냅샷을 만들려고 시도하면 다음 오류 메시지가 표시됩니다.
The device is fully replicated and should not create snapshots out of a recovery checkpoint. Please create regular snapshots instead.
REST
복제본 복구 체크포인트를 사용하여 스냅샷을 만들려면
snapshots.insert
메서드에 대해POST
요청을 수행합니다.sourceDisk
매개변수를 제외하고 대신sourceDiskForRecoveryCheckpoint
매개변수를 포함해서 체크포인트를 사용하여 스냅샷을 만들도록 지정합니다.POST https://compute.googleapis.com/compute/v1/projects/DESTINATION_PROJECT_ID/global/snapshots { "name": "SNAPSHOT_NAME", "sourceDiskForRecoveryCheckpoint": "projects/SOURCE_PROJECT_ID/regions/SOURCE_REGION/disks/SOURCE_DISK_NAME", "storageLocations": "STORAGE_LOCATION", "snapshotType": "SNAPSHOT_TYPE" }
다음을 바꿉니다.
DESTINATION_PROJECT_ID
: 스냅샷을 만들려는 프로젝트의 IDSNAPSHOT_NAME
: 스냅샷의 이름SOURCE_DISK
: 스냅샷을 만드는 데 사용할 소스 디스크의 이름 또는 전체 경로입니다. 소스 디스크의 전체 경로를 지정하려면 다음 구문을 사용합니다.projects/SOURCE_PROJECT_ID/regions/SOURCE_REGION/disks/SOURCE_DISK_NAME
소스 디스크의 전체 경로를 지정하면
--source-disk-for-recovery-checkpoint-region
플래그를 제외할 수 있습니다. 디스크 이름만 지정하는 경우 이 플래그를 포함해야 합니다.다른 프로젝트에 있는 소스 디스크의 복구 체크포인트로부터 스냅샷을 만들려면 소스 디스크의 전체 경로를 지정해야 합니다.
SOURCE_PROJECT_ID
: 스냅샷을 만드는 데 사용할 소스 디스크의 프로젝트 ID입니다.SOURCE_REGION
: 스냅샷을 만드는 데 사용할 소스 디스크의 리전입니다.SOURCE_DISK_NAME
: 스냅샷을 만드는 데 사용할 소스 디스크의 이름입니다.STORAGE_LOCATION
: (선택사항) 스냅샷을 저장할 Cloud Storagemulti-region 또는 Cloud Storageregion입니다. 스토리지 위치는 하나만 지정할 수 있습니다.
스냅샷 설정에 구성된 사전 정의되었거나 맞춤 설정된 기본 스토리지 위치를 무효화하려는 경우에만storageLocations
매개변수를 사용합니다.SNAPSHOT_TYPE
: 스냅샷 유형(STANDARD 또는 ARCHIVE). 스냅샷 유형을 지정하지 않으면 STANDARD 스냅샷이 생성됩니다.
복제본 복구 체크포인트를 사용하여 성능 저하된 디스크에서만 스냅샷을 만들 수 있습니다. 기기가 완전히 복제되었을 때 복제본 복구 체크포인트에서 스냅샷을 만들려고 시도하면 다음 오류 메시지가 표시됩니다.
The device is fully replicated and should not create snapshots out of a recovery checkpoint. Please create regular snapshots instead.
이 스냅샷을 사용하여 새 Hyperdisk 균형 고가용성 디스크를 만듭니다. 새 디스크를 만들 때 스냅샷에서 새 디스크로 데이터를 복원하여 최근 복제본 복구 체크포인트로부터 모든 데이터를 복구합니다. 자세한 단계는 복제된 부팅 디스크가 있는 새 VM 만들기를 참조하세요.
모든 VM 워크로드를 새로 만든 디스크로 마이그레이션하고 이러한 VM 워크로드가 올바르게 실행 중인지 검증합니다. 자세한 내용은 영역 또는 리전 간에 VM 이동을 참조하세요.
새로 만든Hyperdisk 균형 고가용성 디스크에 디스크 데이터와 VM을 복구하고 마이그레이션한 후 작업을 재개할 수 있습니다.
복제본 복구 체크포인트에서 제공된 RPO 확인
이 섹션에서는 Hyperdisk 균형 고가용성(미리보기) 볼륨의 최근 복제본 복구 체크포인트로 제공된 RPO를 확인하는 방법을 설명합니다.
영역 복제본이 완전히 동기화됨
Compute Engine은 약 10분마다Hyperdisk 균형 고가용성 볼륨의 복제본 복구 체크포인트를 새로고침합니다. 따라서 영역 복제본이 완전히 동기화되었을 때 RPO는 약 10분입니다.
영역 복제본이 동기화되지 않음
복제본 복구 체크포인트의 정확한 만들기 및 새로고침 타임스탬프를 볼 수 ��습니다. 그러나 다음 데이터를 사용해서 최근 체크포인트가 제공하는 대략적인 RPO를 예측할 수 있습니다.
- 완전히 복제된 디스크 상태의 최근 타임스탬프: 복제된 디스크의
replica_state
측정항목에 대한 Cloud Monitoring 데이터를 사용하여 이 정보를 가져올 수 있습니다. 동기화되지 않은 복제본의replica_state
측정항목 데이터를 확인하여 복제본이 동기화되지 않게 된 시간을 확인할 수 있습니다. Compute Engine이 10분마다 디스크 체크포인트를 새로고침하므로 최근 체크포인트 새로고침은 이 타임스탬프에서 약 10분 전일 수 있습니다. - 최근 쓰기 작업 타임스탬프: 복제된 디스크의
write_ops_count
측정항목에 대해 Cloud Monitoring 데이터를 사용하여 이 정보를 가져올 수 있습니다.write_ops_count
측정항목 데이터를 확인하여 디스크의 최근 쓰기 작업을 확인합니다.
이러한 타임스탬프를 확인한 후 다음 수식을 사용해서 디스크의 복제본 복구 체크포인트로 제공된 대략적인 RPO를 계산합니다. 계산된 값이 0보다 작으면 RPO가 실질적으로 0입니다.
Approximate RPO provided by the latest checkpoint =
(Most recent write operation timestamp - (Most recent timestamp of the fully
replicated disk state - 10 minutes))
다음 단계
- 동기식 복제된 디스크의 복제본 상태 및 복제 상태 모니터링 방법 알아보기
- 정확한 디스크 복제 상태를 확인하는 방법 알아보기
- 디스크 스냅샷 만드는 방법 알아보기
- 동기식으로 복제된 디스크를 사용하여 고가용성 서비스 빌드 방법 알아보기
- Google Cloud에서 확장 가능하고 복원력이 우수한 웹 애플리케이션 빌드 방법 알아보기
- 재해 복구 계획 가이드 검토