다중 AZ로 MemoryDB의 가동 중지 시간 최소화 - Amazon MemoryDB

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

다중 AZ로 MemoryDB의 가동 중지 시간 최소화

MemoryDB가 프라이머리 노드를 대체해야 하는 여러 가지 경우가 있습니다. 이러한 경우에는 특정 유형의 계획적인 유지 관리 및 드물지만 프라이머리 노드나 가용 영역에 장애가 발생하는 경우가 포함됩니다.

노드 장애에 대한 대응은 장애가 발생한 노드에 따라 달라집니다. 그러나 모든 경우에 MemoryDB는 노드 교체 또는 장애 조치 중에 데이터가 손실되지 않도록 합니다. 예를 들어, 복제본에 장애가 발생하면 장애가 발생한 노드가 교체되고 트랜잭션 로그에서 데이터가 동기화됩니다. 프라이머리 노드에 장애가 발생하면 장애 조치 중에 데이터가 손실되지 않도록 일관된 복제본으로 장애 조치가 트리거됩니다. 이제 새 프라이머리 노드에서 쓰기가 제공됩니다. 그러면 이전 프라이머리 노드가 교체되고 트랜잭션 로그와 동기화됩니다.

단일 노드 샤드(복제본 없음)에서 프라이머리 노드에 장애가 발생하면 프라이머리 노드가 교체되어 트랜잭션 로그와 동기화될 때까지 MemoryDB는 쓰기 수락을 중단합니다.

노드 교체로 인해 클러스터에 약간의 가동 중지가 발생할 수 있지만, 다중 AZ를 활성화된 경우 가동 중지 시간이 최소화됩니다. 프라이머리 노드의 역할은 자동으로 복제본 중 하나로 장애 조치됩니다. MemoryDB가 이 장애 조치를 투명하게 처리하기 때문에 새로운 프라이머리 노드를 생성하고 프로비저닝할 필요가 없습니다. 이 장애 조치 및 복제본 승격을 통해 승격이 완료되는 즉시 새 기본 노드에 작성을 재개할 수 있습니다.

유지 관리 업데이트 또는 서비스 업데이트로 인해 시작된 계획된 노드 교체의 경우, 클러스터가 들어오는 쓰기 요청을 처리하는 동안 계획된 노드 교체가 완료된다는 점에 유의하세요.

MemoryDB 클러스터의 다중 AZ를 사용하면 내결함성이 향상됩니다. 특히 클러스터의 프라이머리 노드에 접속할 수 없거나 어떤 이유로든 실패하는 경우에 그렇습니다. MemoryDB 클러스터의 다중 AZ는 각 샤드에 두 개 이상의 노드가 있어야 하며 자동으로 활성화됩니다.

다중 AZ 응답이 있는 장애 시나리오

다중 AZ가 활성화된 경우, 장애가 발생한 프라이머리 노드는 사용 가능한 복제본으로 장애 조치됩니다. 복제본은 트랜잭션 로그와 자동으로 동기화되고 프라이머리 노드가 되므로 프라이머리 노드를 새로 만들고 다시 프로비저닝하는 것보다 훨씬 빠릅니다. 이 프로세스는 보통 클러스터에 다시 작성하려면 몇 초 정도 소요됩니다.

다중 AZ가 활성화된 경우, MemoryDB가 프라이머리 노드의 상태를 지속적으로 모니터링합니다. 기본 노드에 장애가 발생하면 장애 유형에 따라 다음 작업 중 하나가 수행됩니다.

프라이머리 노드에만 장애가 발생한 경우의 장애 시나리오

프라이머리 노드에만 장애가 발생한 경우, 복제본은 자동으로 프라이머리 노드가 됩니다. 그러면 대체 복제본이 생성되어 장애가 발생한 프라이머리 노드와 동일한 가용 영역에 프로비저닝됩니다.

프라이머리 노드에만 장애가 발생한 경우, MemoryDB 다중 AZ는 다음 작업을 수행합니다.

  1. 장애가 발생한 기본 노드는 오프라인 상태로 전환됩니다.

  2. up-to-date 복제본은 자동으로 기본 복제본이 됩니다.

    장애 조치 프로세스가 완료되는 즉시 쓰기를 재개할 수 있으며 일반적으로 몇 초 정도 소요됩니다.

  3. 대체 복제본을 시작하고 프로비저닝합니다.

    장애가 발생한 프라이머리 노드가 있는 가용 영역에서 대체 복제본을 시작하여 노드 배포를 유지합니다.

  4. 복제본은 트랜잭션 로그와 동기화됩니다.

클러스터의 엔드포인트를 찾는 방법에 대한 정보는 다음 항목을 참조하세요.

 

프라이머리 노드 및 일부 복제본에 장애가 발생한 경우의 장애 시나리오

기본 복제본과 하나 이상의 복제본에 장애가 발생하면 up-to-date 복제본이 기본 클러스터로 승격됩니다. 장애가 발생한 노드와 동일 가용 영역에 새로운 복제본이 생성되고 프로비저닝됩니다.

프라이머리 노드와 일부 복제본에 장애가 발생한 경우, MemoryDB 다중 AZ는 다음 작업을 수행합니다.

  1. 장애가 발생한 프라이머리 노드 및 장애가 발생한 복제본이 오프라인 상태로 전환됩니다.

  2. 사용 가능한 복제본이 프라이머리 노드가 됩니다.

    장애 조치가 완료되는 즉시 쓰기를 재개할 수 있으며 일반적으로 몇 초 정도 소요됩니다.

  3. 교체용 복제본을 생성하고 프로비저닝합니다.

    장애가 발생한 노드의 가용 영역에서 교체용 복제본을 생성하여 노드 배포를 유지합니다.

  4. 모든 노드가 트랜잭션 로그와 동기화됩니다.

클러스터의 엔드포인트를 찾는 방법에 대한 정보는 다음 항목을 참조하세요.

 

전체 클러스터에 장애가 발생한 경우의 장애 시나리오

모든 것에 장애가 발생하면 모든 노드를 동일한 가용 영역에 원본 노드로 재생성하고 프로비저닝합니다.

이 시나리오에서는 데이터가 트랜잭션 로그에 유지되었으므로 데이터 손실은 없습니다.

전체 클러스터에 장애가 발생한 경우, MemoryDB 다중 AZ는 다음 작업을 수행합니다.

  1. 장애가 발생한 프라이머리 노드 및 복제본이 오프라인 상태로 전환됩니다.

  2. 대체 프라이머리 노드가 생성되고 프로비저닝되며 트랜잭션 로그와 동기화됩니다.

  3. 대체 복제본이 생성되고 프로비저닝되며 트랜잭션 로그와 동기화됩니다.

    장애가 발생한 노드의 가용 영역에서 대체를 생성하여 노드 배포를 유지합니다.

클러스터의 엔드포인트를 찾는 방법에 대한 정보는 다음 항목을 참조하세요.

자동 장애 조치 테스트

MemoryDB 콘솔, 및 AWS CLI, MemoryDB API를 사용하여 자동 장애 조치를 테스트할 수 있습니다.

테스트 시 다음 사항에 유의하세요.

  • 24시간 동안 이 작업을 최대 5회까지 사용할 수 있습니다.

  • 다른 클러스터에 있는 샤드에서 이 작업을 직접 호출하는 경우, 동시에 직접 호출할 수 있습니다.

  • 경우에 따라 동일한 MemoryDB 클러스터의 서로 다른 샤드에서 이 작업을 여러 번 호출할 수 있습니다. 이러한 경우 후속 호출이 이루어지기 전에 첫 번째 노드 교체가 완료되어야 합니다.

  • 노드 교체가 완료되었는지 확인하려면 MemoryDB 콘솔 AWS CLI, 또는 MemoryDB API를 사용하여 이벤트를 확인하십시오. 발생 순서대로 나열되어 있는 아래 목록에서 다음과 같은 FailoverShard 관련 이벤트를 찾습니다.

    1. 클러스터 메시지: FailoverShard API called for shard <shard-id>

    2. 클러스터 메시지: Failover from primary node <primary-node-id> to replica node <node-id> completed

    3. 클러스터 메시지: Recovering nodes <node-id>

    4. 클러스터 메시지: Finished recovery for nodes <node-id>

    자세한 내용은 다음 자료를 참조하십시오.

  • 이 API는 MemoryDB 장애 조치의 경우, 애플리케이션의 동작을 테스트하도록 설계되었습니다. 클러스터 문제를 해결하기 위해 장애 조치를 시작하는 운영 도구로 설계되지 않았습니다. 또한 대규모 운영 이벤트와 같은 특정 상황에서는 이 API가 AWS 차단될 수 있습니다.

를 사용하여 자동 페일오버를 테스트합니다. AWS Management Console

다음 절차에 따라 콘솔로 자동 장애 조치를 테스트합니다.

  1. AWS Management Console 로그인하고 https://console.aws.amazon.com/memorydb/ 에서 MemoryDB 콘솔을 엽니다.

  2. 테스트할 클러스터 왼쪽에 있는 라디오 버튼을 선택합니다. 이 클러스터에는 복제본 노드가 하나 이상 있어야 합니다.

  3. [Details] 영역에서 이 클러스터가 다중 AZ 활성 상태인지 확인합니다. 해당 클러스터가 다중 AZ 활성 상태가 아닌 경우 다른 클러스터를 선택하거나 다중 AZ를 활성화하도록 이 클러스터를 수정합니다. 자세한 정보는 MemoryDB 클러스터 수정을 참조하세요.

  4. 클러스터의 이름을 선택합니다.

  5. 샤드 및 노드 페이지에서 장애 조치를 테스트할 샤드에 대해 샤드 이름을 선택합니다.

  6. 노드는 [Failover Primary]를 선택합니다.

  7. 기본 노드를 장애 조치하려면 [Continue]를 선택하고 작업을 취소하여 기본 노드를 장애 조치하지 않으려면 [Cancel]을 선택합니다.

    장애 조치 프로세스 중에 콘솔은 노드 상태를 계속해서 사용 가능으로 표시합니다. 장애 조치 테스트 진행률을 추적하려면 콘솔 탐색 창에서 [Events]를 선택합니다. [Events] 탭에서 장애 조치의 시작(FailoverShard API called) 및 완료(Recovery completed)를 나타내는 이벤트를 주시합니다.

 

를 사용하여 자동 페일오버를 테스트합니다. AWS CLI

failover shard AWS CLI 작업을 사용하여 모든 다중 AZ 지원 클러스터에서 자동 장애 조치를 테스트할 수 있습니다.

파라미터
  • --cluster-name - 필수입니다. 테스트할 클러스터입니다.

  • --shard-name - 필수입니다. 자동 장애 조치를 테스트할 샤드의 이름입니다. 24시간 동안 최대 5개의 샤드를 테스트할 수 있습니다.

다음 예제에서는 를 사용하여 AWS CLI MemoryDB 클러스터의 failover-shard 0001 샤드를 호출합니다. my-cluster

Linux, macOS, Unix의 경우:

aws memorydb failover-shard \ --cluster-name my-cluster \ --shard-name 0001

Windows의 경우:

aws memorydb failover-shard ^ --cluster-name my-cluster ^ --shard-name 0001

페일오버의 진행 상황을 추적하려면 작업을 사용하십시오. AWS CLI describe-events

다음과 같은 JSON 응답을 반환합니다.

{ "Events": [ { "SourceName": "my-cluster", "SourceType": "cluster", "Message": "Failover to replica node my-cluster-0001-002 completed", "Date": "2021-08-22T12:39:37.568000-07:00" }, { "SourceName": "my-cluster", "SourceType": "cluster", "Message": "Starting failover for shard 0001", "Date": "2021-08-22T12:39:10.173000-07:00" } ] }

자세한 내용은 다음 자료를 참조하십시오.

 

MemoryDB API를 사용하여 자동 장애 조치 테스트

다음 예시는 클러스터 memorydb00의 샤드 0003에서 FailoverShard을(를) 직접적으로 호출합니다.

예 자동 장애 조치 테스트
https://memory-db.us-east-1.amazonaws.com/ ?Action=FailoverShard &ShardName=0003 &ClusterName=memorydb00 &Version=2021-01-01 &SignatureVersion=4 &SignatureMethod=HmacSHA256 &Timestamp=20210801T192317Z &X-Amz-Credential=<credential>

장애 조치 진행률을 추적하려면 MemoryDB DescribeEvents API 작업을 사용하세요.

자세한 내용은 다음을 참조하세요.