자습서: 주 지역에서 데이터를 읽는 동안 발생하는 오류 시뮬레이션

이 자습서는 시리즈의 2부입니다. 여기에서 오류를 시뮬레이션하여 RA-GZRS(읽기 액세스 지역 중복 스토리지)의 이점에 대해 알아봅니다.

오류를 시뮬레이션하려면 정적 라우팅 또는 Fiddler를 사용하면 됩니다. 두 방법으로 RA-GZRS 스토리지 계정의 기본 엔드포인트에 대한 요청 실패를 시뮬레이션하여 애플리케이션이 대신 보조 엔드포인트에서 읽도록 합니다.

Azure 구독이 없는 경우 시작하기 전에 체험 계정을 만듭니다.

시리즈 2부에서는 다음 방법에 대해 알아봅니다.

  • 애플리케이션 실행 및 일시 중지
  • 잘못된 고정 경로 또는 Fiddler를 사용하는 실패 시뮬레이션
  • 기본 엔드포인트 복원 시뮬레이션

필수 조건

이 자습서를 시작하려면 이전 자습서(Azure Storage를 통해 응용 프로그램 데이터의 고가용성 지원)을 완료합니다.

정적 라우팅을 사용하여 실패를 시뮬레이션하려면 관리자 권한 명령 프롬프트를 사용합니다.

Fiddler를 사용하여 실패를 시뮬레이트하려면 Fiddler를 다운로드한 후 설치합니다.

잘못된 고정 경로를 사용하여 실패 시뮬레이션

RA-GZRS 스토리지 계정의 기본 엔드포인트에 대한 모든 요청에 대해 잘못된 고정 경로를 만들 수 있습니다. 이 자습서에서는 로컬 호스트가 스토리지 계정에 대한 요청을 라우팅하기 위한 게이트웨이로 사용됩니다. 로컬 호스트를 게이트웨이로 사용하면 스토리지 계정 기본 엔드포인트에 대한 모든 요청이 호스트 내부로 루프 백되어 요청이 실패하게 됩니다. 다음 단계에 따라 실패를 시뮬레이션하고 잘못된 고정 경로를 사용하여 기본 엔드포인트를 복원합니다.

애플리케이션 시작 및 일시 중지

이전 자습서의 지침에 따라 샘플을 시작하고 테스트 파일을 다운로드하여 기본 스토리지에서 가져온 것인지 확인합니다. 대상 플랫폼에 따라 샘플을 수동으로 일시 중지하거나 프롬프트 시 대기할 수 있습니다.

오류 시뮬레이션

애플리케이션이 일시 중지된 상태에서 관리자 권한으로 Windows에서 명령 프롬프트를 열거나 Linux에서 루트로 터미널을 실행합니다.

명령 프롬프트 또는 터미널에서 STORAGEACCOUNTNAME을 스토리지 계정의 이름으로 바꾼 후 다음 명령을 입력하여 스토리지 계정의 기본 엔드포인트 도메인에 대한 정보를 가져옵니다.

nslookup STORAGEACCOUNTNAME.blob.core.windows.net

나중에 사용하기 위해 스토리지 계정의 IP 주소를 텍스트 편집기에 복사합니다.

로컬 호스트의 IP 주소를 가져오려면 Windows 명령 프롬프트에서 ipconfig를 입력하거나 Linux 터미널에서 ifconfig를 입력합니다.

대상 호스트에 대한 정적 경로를 추가하려면 Windows 명령 프롬프트 또는 Linux 터미널에서 <destination_ip>를 스토리지 계정 IP 주소로, <gateway_ip>를 로컬 호스트 IP 주소로 바꾼 후 다음 명령을 입력합니다.

Linux

sudo route add <destination_ip> gw <gateway_ip>

Windows

route add <destination_ip> <gateway_ip>

샘플이 실행 중인 창에서 애플리케이션을 다시 시작하거나 해당 키를 눌러 샘플 파일을 다운로드하고, 보조 스토리지에서 가져온 것인지 확인합니다. 샘플을 다시 일시 중지하거나 프롬프트에서 대기할 수 있습니다.

기본 엔드포인트 복원 시뮬레이션

다시 작동하는 기본 엔드포인트를 시뮬레이트하려면 라우팅 테이블에서 올바르지 않은 정적 경로를 삭제합니다. 이렇게 하면 기본 엔드포인트에 대한 모든 요청이 기본 게이트웨이를 통해 라우팅됩니다. Windows 명령 프롬프트 또는 Linux 터미널에서 다음 명령을 입력합니다.

Linux

sudo route del <destination_ip> gw <gateway_ip>

Windows

route delete <destination_ip>

그런 다음, 애플리케이션을 다시 시작하거나 해당 키를 눌러 샘플을 다시 다운로드합니다. 이번에는 기본 스토리지에서 가져온 것인지 확인합니다.

Fiddler를 사용하여 실패 시뮬레이션

Fiddler를 사용하여 오류를 시뮬레이션하려면 요청에 대해 실패한 응답을 RA-GZRS 스토리지 계정의 기본 엔드포인트에 삽입합니다.

다음 섹션에서는 오류를 시뮬레이션하고 Fiddler를 사용하여 기본 엔드포인트를 복원하는 방법을 설명합니다.

Fiddler 시작

Fiddler를 열고 규칙규칙 사용자 지정을 선택합니다.

Customize Fiddler rules

Fiddler ScriptEditor가 시작되고 SampleRules.js 파일을 표시합니다. 이 파일을 사용하여 Fiddler를 사용자 지정합니다.

STORAGEACCOUNTNAME을 스토리지 계정의 이름으로 바꾼 후 다음 코드 샘플을 OnBeforeResponse 함수에 붙여넣습니다. 샘플에 따라 HelloWorld를 다운로드 중인 테스트 파일의 이름으로 바꾸거나, 조건의 해당 부분이 적용되지 않는 경우 해당 부분을 제거해야 할 수도 있습니다. 새 코드는 즉시 실행되지 않도록 주석으로 처리됩니다.

완료되면 파일저장을 선택하여 변경 내용을 저장합니다. 다음 단계에서 사용하므로 ScriptEditor 창을 열어 둡니다.

    /*
        // Simulate data center failure
        // After it is successfully downloading the blob, pause the code in the sample,
        // uncomment these lines of script, and save the script.
        // It will intercept the (probably successful) responses and send back a 503 error.
        // When you're ready to stop sending back errors, comment these lines of script out again
        //     and save the changes.

        if ((oSession.hostname == "STORAGEACCOUNTNAME.blob.core.windows.net")
            // depending on the sample, you may need to modify or remove the line below
            && (oSession.PathAndQuery.Contains("HelloWorld"))) {
            oSession.responseCode = 503;
        }
    */

Paste customized rule

애플리케이션 시작 및 일시 중지

이전 자습서의 지침에 따라 샘플을 시작하고 테스트 파일을 다운로드하여 기본 스토리지에서 가져온 것인지 확인합니다. 대상 플랫폼에 따라 샘플을 수동으로 일시 중지하거나 프롬프트 시 대기할 수 있습니다.

오류 시뮬레이션

애플리케이션이 일시 중지된 동안 Fiddler로 다시 전환하고 OnBeforeResponse 함수에 저장한 사용자 지정 규칙의 주석 처리를 제거합니다. 파일저장을 선택하여 규칙이 적용되도록 변경 내용을 저장합니다. 이 코드에서는 RA-GZRS 스토리지 계정에 대한 요청을 찾고, 경로에 샘플 파일의 이름이 포함되어 있는 경우 503 - Service Unavailable 응답 코드를 반환합니다.

샘플이 실행 중인 창에서 애플리케이션을 다시 시작하거나 해당 키를 눌러 샘플 파일을 다운로드하고, 보조 스토리지에서 가져온 것인지 확인합니다. 샘플을 다시 일시 중지하거나 프롬프트에서 대기할 수 있습니다.

기본 엔드포인트 복원 시뮬레이션

Fiddler에서 사용자 지정 규칙을 제거하거나 다시 주석으로 처리합니다. 파일저장을 선택하여 규칙이 더 이상 적용되지 않도록 합니다.

샘플이 실행 중인 창에서 애플리케이션을 다시 시작하거나 해당 키를 눌러 샘플 파일을 다운로드하고, 다시 기본 스토리지에서 가져온 것인지 확인합니다. 그런 후 샘플을 종료해도 됩니다.

다음 단계

시리즈 2부에서는 읽기 액세스 지역 중복 스토리지 오류를 시뮬레이션하는 방법에 대해 알아보았습니다.

RA-GZRS 스토리지의 작동 방식 및 관련 위험에 대한 자세한 내용은 RA-GZRS를 사용하여 HA 앱 디자인을 참조하세요.