GZRS 를 이용해여 blob 과 파일 스토리지를 만든 후 재해복구 테스팅을 해볼 것이다.
이번 실습은 샌드박스 활성화가 없어 학생계정을 이용해서 실습해 보았다.
아래 글은 데이터 복구 과정에 대한 이론 글이다.
[MS Azure/Cloud Storage] - [Azure Storage] How to Failover process works
스토리지 계정만들기
1. Azure Portal에 로그인
2. 오른쪽 위의 메뉴 모음에서 Cloud Shell 을 연다.
아래 흰색 동그라미 친데를 클릭하면된다.
3. Resource Group 이름을 설정
export RESOURCEGROUP=learn-storage-replication-rg
4. Storage Account 이름 설정 : storageaccountname 과 대괄호를 고유한 Azure Storage 계정 이름으로 바꿔서 스토리지 계정 이름을 설정하려면 다음 명령을 실행
export AZURE_STORAGE_ACCOUNT=<storageaccountname>
나는 export AZURE_STORAGE_ACCOUNT= blobstorageaccount2021 설정해 주었다.
5. 위치를 설정합니다. 본인과 가까운 값 입력 나는 북미 동부 지역으로 선택
export LOCATION=eastus
** NOTE : 다음과 같은 지역은 설정 불가
- southeastasia
- northeurope
- westeurope
- japaneast
- uksouth
- centralus
- eastus2
- westus2
6. 리소스 그룹 생성 명령어 실행
az group create --name $RESOURCEGROUP --location $LOCATION
결과
{
"id": "/subscriptions/{subcription ID}/resourceGroups/learn-storage-replication-rg",
"location": "eastus",
"managedBy": null,
"name": "learn-storage-replication-rg",
"properties": {
"provisioningState": "Succeeded"
},
"tags": null,
"type": "Microsoft.Resources/resourceGroups"
}
7. 스토리지 계정 생성 명령어 실행
az storage account create \
--name $AZURE_STORAGE_ACCOUNT \
--resource-group $RESOURCEGROUP \
--location $LOCATION \
--sku Standard_GZRS \
--encryption-services blob \
--kind StorageV2
결과
{- Finished ..
"accessTier": "Hot",
"allowBlobPublicAccess": null,
"azureFilesIdentityBasedAuthentication": null,
"blobRestoreStatus": null,
"creationTime": "2021-01-19T02:03:07.377625+00:00",
"customDomain": null,
"enableHttpsTrafficOnly": true,
"encryption": {
"keySource": "Microsoft.Storage",
"keyVaultProperties": null,
"requireInfrastructureEncryption": null,
"services": {
"blob": {
"enabled": true,
"keyType": "Account",
"lastEnabledTime": "2021-01-19T02:03:07.487000+00:00"
},
"file": {
"enabled": true,
"keyType": "Account",
"lastEnabledTime": "2021-01-19T02:03:07.487000+00:00"
},
"queue": null,
"table": null
}
},
"failoverInProgress": null,
"geoReplicationStats": null,
"id": "/subscriptions/{subscirption ID}/resourceGroups/learn-storage-replication-rg/providers/Microsoft.Storage/storageAccounts/blobstorageaccount2021",
"identity": null,
"isHnsEnabled": null,
"kind": "StorageV2",
"largeFileSharesState": null,
"lastGeoFailoverTime": null,
"location": "eastus",
"minimumTlsVersion": null,
"name": "blobstorageaccount2021",
"networkRuleSet": {
"bypass": "AzureServices",
"defaultAction": "Allow",
"ipRules": [],
"virtualNetworkRules": []
},
"primaryEndpoints": {
"blob": "https://blobstorageaccount2021.blob.core.windows.net/",
"dfs": "https://blobstorageaccount2021.dfs.core.windows.net/",
"file": "https://blobstorageaccount2021.file.core.windows.net/",
"internetEndpoints": null,
"microsoftEndpoints": null,
"queue": "https://blobstorageaccount2021.queue.core.windows.net/",
"table": "https://blobstorageaccount2021.table.core.windows.net/",
"web": "https://blobstorageaccount2021.z13.web.core.windows.net/"
},
"primaryLocation": "eastus",
"privateEndpointConnections": [],
"provisioningState": "Succeeded",
"resourceGroup": "learn-storage-replication-rg",
"routingPreference": null,
"secondaryEndpoints": null,
"secondaryLocation": "westus",
"sku": {
"name": "Standard_GZRS",
"tier": "Standard"
},
"statusOfPrimary": "available",
"statusOfSecondary": "available",
"tags": {},
"type": "Microsoft.Storage/storageAccounts"
}
8. 스토리지 credential 이 필요하므로 스토리지 계정 키를 얻는 명령어 실행
az storage account keys list \
--account-name $AZURE_STORAGE_ACCOUNT \
--resource-group $RESOURCEGROUP \
--output table
결과
KeyName Permissions Value
--------- ------------- ----------------------------------------------------------------------------------------
key1 FULL xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
key2 FULL xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
9. 8의 결과값을 복사한다.
10. 스토리지 키를 저장하려면 저장하려면 환경변수 설정한다. 9번의 키값 중 하나를 복사해서 account-key 및 대괄호를 그 키값으로 대체한다.
export AZURE_STORAGE_KEY="<account-key>"
Blob Container 만들기
Azure Storage에 Blob을 업로드하려면 컨테이너가 있어야 한다. 컨테이너는 Blob을 논리적으로 그룹화하는 데 사용한다. 컴퓨터에서 폴더로 파일을 구성하는 것처럼 컨테이너는 Blob을 구성하는 데 도움이 됨
1. blob-container-name 및 대괄호를 다른 이름으로 바꾸어 컨테이너 이름을 설정하려면 다음 명령을 실행
export BLOB_CONTAINER_NAME=<blob-container-name>
2. 아래의 명령어 실행 스토리지 계정의 컨테이너를 만듬
az storage container create --account-key $AZURE_STORAGE_KEY --account-name $AZURE_STORAGE_ACCOUNT --name $BLOB_CONTAINER_NAME
결과
{
"created": true
}
Blob 파일 만들기
이번에는 텍스트파일을 Blob 에 업로드 해본다 .
1. 임의의 파일을 만든다.
2. "This is song !! " 을 입력하고 enter ▶ ctrl+d 를 누른다.
$ cat > song.mp3
"This is Song!"
3. cat으로 파일 내용을 확인
$ cat song.mp3
"This is Song!"
컨테이너에 파일 업로드 하기
이제 만든 song.mp3를 컨테이너에 업로드 한다.
az storage blob upload \
--container-name $BLOB_CONTAINER_NAME \
--name song \
--file song.mp3
Finished[#############################################################] 100.0000%
{
"etag": "\"0x8D8BC1FB9612740\"",
"lastModified": "2021-01-19T02:12:51+00:00"
}
잘 업로드 되었는 지 확인
az storage blob list \
--container-name $BLOB_CONTAINER_NAME \
--output table
결과
Name Blob Type Blob Tier Length Content Type Last Modified Snapshot
------ ----------- ----------- -------- -------------- ------------------------- ----------
song BlockBlob Hot 16 audio/mpeg 2021-01-19T02:12:51+00:00
복제 상태 확인하기
이제 Azure Portal > Resource Group 에서 아까 만든 리소스 그룹 선택한후 그안에 있는 Storage Account 클릭
Settings > Geo-replication을 들어가면 Secondary Region 의 가능여부가 아래와 같이 나온다.
최신상태를 보려면 상단의 Refresh 버튼을 클릭하면 된다.
장애조치 시작
장애조치를 Portal 내에서 수동으로 시작해 시뮬레이션을 해보도록 한다.
1. 위의 스크린샷에서 Prepare for failover 를 클릭한다.
아래와 같이 진행 하겠냐는 물음과 주의 사항이 나온다. "yes"를 누른 후 진행한다.
주의사항 메세지에는 마지막 동기화 시간(나중에 장애 조치 완료 후 데이터가 얼마나 손실되는지 예측가능함), 그리고 account 를 GZRS나 RA-GZRS로 변환할 수 없다는 메세지가 뜬다.
그러면 아래와 같이 진행중이라고 뜬다.
이제 기다린다.
완료가 되면 Secondary Region 에서 만 데이터 접근이 가능하다고 나온다.
복제 모드 다시 구성
장애 조치가 완료되면 맵에 한 지역만 표시간 된다. 이제 다시 GRS 방식으로 변환해 주어야 나중에 복제가 가능하다.
1. Storage Account > Settings > Configuration 을 클릭
2. 아래와 같이 Replication 섹션에서 GRS 를 선택한다.
3. 상단의 Save 클릭
데이터 손실 예측
복제가 완료되면 Geo-Replication 탭에서 마지막 장애 조치 시간을 기록해서 아까 앞에서 기록한 마지막 동기화 시간차를 계산한다. 이 두개의 시간차 동안 Primary Data에 기록된 데이터는 손실됬을 확률이 높다.
여기서는 1시 12분 9초 부터 1시 32분 41초 까지의 데이터가 손실 됬을 것이다.
Reference
출처 1 : docs.microsoft.com/ko-kr/learn/modules/provide-disaster-recovery-replicate-storage-data/
내용이 도움이 되셨다면 블로그 구독하기 부탁드리겠습니다.
* 이 글의 모든 저작권은 aliceintr에 있으며 무단 배포 및 사용은 자제해 주시기 바랍니다. *
'MS Azure > AZ104' 카테고리의 다른 글
AZ104 : [Storage] Azure Files에 저장된 파일에 대한 액세스 보호 (0) | 2021.01.20 |
---|---|
AZ104 실습 : Azure Files Shares 만들기 및 연결 (0) | 2021.01.20 |
AZ104 실습 : Azure Storage Account 만들기 (0) | 2021.01.19 |
AZ104 : Azure Active Directory Role 과 Azure Role (0) | 2021.01.12 |
AZ104 실습 : Azure CLI 로 웹사이트 만들기 (0) | 2021.01.08 |