MS Azure/AZ104

AZ104 실습 : Azure Storage Data Redundancy Failover testing

aliceintr 2021. 1. 19. 11:38
반응형

 

GZRS 를 이용해여 blob 과 파일 스토리지를 만든 후 재해복구 테스팅을 해볼 것이다.

이번 실습은 샌드박스 활성화가 없어 학생계정을 이용해서 실습해 보았다.

아래 글은 데이터 복구 과정에 대한 이론 글이다.

[MS Azure/Cloud Storage] - [Azure Storage] How to Failover process works

 

[Azure Storage] How to Failover process works

Disk Redundancy 전략을 짰다면 어떻게 재해 복구가 이루어 지는 지를 알아볼 필요가 있다. 아래 글은 데이터 복제에 관련된 글이니 이 글을 읽기전 참고하는 것이 좋다 [MS Azure/Cloud Storage] - [Azure Stora

buildgoodhabit.tistory.com


스토리지 계정만들기

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/

 

지역 간에 스토리지 데이터를 복제하고 보조 위치로 장애 조치(failover)하여 재해 복구 제공 - Learn

지역 간에 스토리지 데이터를 복제하고 보조 위치로 장애 조치(failover)하여 재해 복구를 제공하는 방법을 알아봅니다.

docs.microsoft.com


 

내용이 도움이 되셨다면 블로그 구독하기 부탁드리겠습니다.

* 이 글의 모든 저작권은 aliceintr에 있으며 무단 배포 및 사용은 자제해 주시기 바랍니다. *

반응형