ElastiCache for Valkey 또는 ElastiCache for Redis OSS 자체 설계 클러스터의 장애 조치 및 복구 이벤트에 대한 모범 사례를 따르려면 어떻게 해야 합니까?
Amazon ElastiCache for Valkey 또는 Amazon ElastiCache for Redis OSS 자체 설계 클러스터의 장애 조치 이벤트에 대한 모범 사례를 따르고 싶습니다.
간략한 설명
장애 조치 및 복구 이벤트는 ElastiCache에서 복원력을 유지할 수 있는 Amazon ElastiCache의 필수 요소입니다. 그러나 장애 조치 및 복구 이벤트가 발생하면 이러한 이벤트는 애플리케이션의 성능과 가용성에 영향을 미칠 수 있습니다.
클러스터에 영향을 미치는 장애 조치 및 복구 이벤트로 인한 문제를 줄이려면 다음 작업을 수행하는 것이 가장 좋습니다.
- 이벤트를 검토합니다.
- 이벤트의 원인을 파악합니다.
- 이벤트에 대비합니다.
- 이벤트 알림을 구성합니다.
해결 방법
참고: AWS Command Line Interface(AWS CLI) 명령을 실행할 때 오류가 발생하면 AWS CLI의 오류 해결을 참조하십시오. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하십시오.
이벤트 검토
ElastiCache는 클러스터, 보안 그룹 및 파라미터 그룹과 관련된 다양한 이벤트를 기록합니다.
이벤트에는 리소스 생성 및 삭제, 크기 조정 작업, 장애 조치, 노드 재부팅, 스냅샷 생성이 포함되며 이에 국한되지 않습니다. ElastiCache 클러스터의 이벤트를 더 잘 이해하고 분석하려면 ElastiCache 이벤트를 검토하십시오.
ElastiCache 이벤트 로그의 장애 조치 이벤트 예시:
December 5, 2024, 10:12:20 Finished recovery for cache nodes 0001 December 5, 2024, 10:10:48 Recovering cache nodes 0001 December 5, 2024, 10:05:45 Recovering cache nodes 0001 December 5, 2024, 10:04:24 Failover from master node <node name> to replica node <node name> completed
ElastiCache 이벤트 로그의 복구 이벤트 예시:
2022-10-05 19:20 Finished recovery for cache nodes 0001 2022-10-05 19:18 Recovering cache nodes 0001 2022-10-05 19:14 Recovering cache nodes 0001
참고: Amazon ElastiCache for Memcached는 장애 조치를 지원하지 않지만 복구 이벤트의 이벤트 로그에서 유사한 메시지를 볼 수 있습니다.
이벤트의 원인 파악
장애 조치 이벤트 중에 ElastiCache는 사용할 수 없는 프라이머리 노드를 복제본 노드로 교체합니다. 또한 ElastiCache는 사용자가 요청한 작업 또는 계획된 이벤트의 프라이머리 노드를 교체합니다. 자세한 내용은 Amazon ElastiCache FAQ를 참조하십시오.
이벤트 예시:
- 장애 조치 기능 테스트하기
- 계획된 유지 관리 수행하기
- 가용 영역 문제 해결하기
복제본 노드에 가용성 문제가 발생하면 ElastiCache는 해당 복제본을 새 복제본 노드로 교체합니다.
참고: 이 교체로 인해 장애 조치 이벤트가 시작되지 않습니다.
이러한 상황에서 ElastiCache가 클러스터를 복원하려고 하면 ElastiCache는 이러한 복구 이벤트를 기록합니다.
참고: 노드가 프라이머리 노드인지 여부를 확인하려면 IsMaster Amazon CloudWatch 지표를 사용하십시오. 자세한 내용은 Valkey 및 Redis OSS의 지표를 참조하십시오.
계획되지 않은 장애 조치 및 복구 이벤트
ElastiCache에서는 프라이머리 노드에 예기치 않은 장애가 발생하여 서비스에서 복제본 노드를 기본 역할로 승격하도록 메시지를 표시하면 계획되지 않은 장애 조치가 발생합니다. 마찬가지로 복제본 노드에 교체가 필요한 경우, ElastiCache는 복제본에 장애가 발생하면 새 복제본 노드를 자동으로 프로비저닝합니다. 두 프로세스 모두 가동 중지 시간을 최소화하고 고가용성을 유지합니다. 계획되지 않은 장애 조치 및 교체의 일반적인 원인은 다음과 같습니다.
- ElastiCache 호스트와 관련된 기본 문제(예: 하드웨어 장애, 네트워킹 문제 또는 가용 영역 장애)의 경우 ElastiCache는 복구를 수행합니다. AWS 인프라의 경우, 드물게 장애가 발생하면 자동화된 프로세스를 통해 클러스터의 고가용성을 확보할 수 있습니다.
- 워크로드가 많은 경우, Amazon ElastiCache for Redis OSS 및 Amazon ElastiCache for Valkey는 단일 스레드로 제공됩니다. 따라서 장기 실행 명령은 다른 작업을 차단할 수 있습니다. 클러스터의 과도한 워크로드로 인해 리소스가 과다 사용 및 소모될 수 있으며, 장애 조치 및 복구로 이어질 수 있습니다. 예를 들어 복잡한 명령, 비효율적인 Lua 스크립트 및 대규모 키 기반 작업은 클러스터에 과부하를 일으키고 성능을 저하시킬 수 있습니다.
참고: 일시적인 가용 영역 중단으로 인해 기본 복제본에 장애가 발생하면 ElastiCache는 가용 영역이 복구된 후 새 복제본을 시작합니다.
계획된 장애 조치 및 복구 이벤트
예약된 유지 관리 또는 사용자가 시작한 작업에는 계획된 장애 조치 및 복구 이벤트가 발생할 수 있습니다.
예약된 유지 관리의 경우, AWS는 정기적으로 ElastiCache 플릿을 업그레이드하여 ElastiCache 클러스터의 보안, 신뢰성 및 운영 성능을 강화합니다. 지속적인 관리형 유지 관리의 일부인 노드 교체 및 서비스 업데이트와 같은 예약된 유지 관리 이벤트는 장애 조치 및 복구 이벤트를 시작할 수 있습니다. 자세한 내용은 Amazon ElastiCache 관리형 유지 관리 및 서비스 업데이트 도움말 페이지를 참조하십시오.
사용자가 시작한 작업의 경우 사용자는 TestFailover API, test-failover AWS CLI 명령 또는 ElastiCache 콘솔을 통해 TestFailover를 시작합니다. 읽기 전용 복제본을 기본 클러스터 모드가 비활성화된 클러스터로 승격하려면 승격 작업을 시작하십시오. 자세한 내용은 Valkey 또는 Redis OSS(클러스터 모드 비활성화) 복제 그룹에 대한 읽기 전용 복제본을 기본으로 승격을 참조하십시오.
참고: 대규모 운영 이벤트 시 등 일부 상황에서는 AWS가 이 API를 차단할 수 있습니다. AWS에서 API를 차단하면 이벤트 로그에 다음 메시지가 표시됩니다. "Test Failover API called for node group 0001."
이벤트에 대비
유지 관리 또는 서비스 업데이트와 같은 계획된 장애 조치 이벤트의 경우, 클러스터가 들어오는 쓰기 요청을 처리할 때 ElastiCache에서 노드를 교체합니다. 문제를 완화하려면 계획된 장애 조치 이벤트의 모범 사례를 따르십시오. 자세한 내용은 Amazon ElastiCache 관리형 유지 관리 및 서비스 업데이트 도움말 페이지를 참조하십시오.
계획되지 않은 장애 조치 이벤트의 경우 클러스터에 대한 다중 AZ를 활성화하면 ElastiCache 장애 조치가 자동으로 발생합니다.
참고: 복제본 엔드포인트를 사용하는 노드에 쓸 때 복제본에서 장애 조치가 발생하면 노드를 사용하지 못할 수 있습니다. 복제본을 교체하면 노드를 읽기 요청에 사용할 수 있게 됩니다.
계획된 이벤트 및 계획되지 않은 이벤트로 인한 문제를 줄이려면 연결 및 구성 모범 사례를 따르십시오.
이벤트 알림 구성
이벤트와 그 원인에 신속하게 대응하려면 클러스터에 장애 조치 또는 복구가 있을 때 알림을 보내도록 ElastiCache를 구성하십시오. 자세한 내용은 ElastiCache Amazon Simple Notification Service(Amazon SNS) 알림 관리를 참조하십시오.
알림에 Amazon SNS를 사용하도록 ElastiCache를 구성하면 다음 예와 유사한 알림을 받습니다.
복구 이벤트 예:
Recovery reason : Recovery completed for node as ElastiCache monitoring detected a network reachability failure on the node, ElastiCache:CacheNodeReplaceComplete : <node>
Recovery reason : Recovery completed for node as ElastiCache monitoring detected software issues on the node, ElastiCache:CacheNodeReplaceComplete : <node>
Recovery reason : Recovery completed for node as ElastiCache monitoring detected unresponsive engine on the node, ElastiCache:CacheNodeReplaceComplete : <node>
Recovery reason : Recovery completed for node as ElastiCache monitoring detected busy and unresponsive engine on the node, ElastiCache:CacheNodeReplaceComplete : <node>
장애 조치 이벤트 예:
Failover reason : Failover completed for node as ElastiCache monitoring detected a network reachability failure on the node, ElastiCache:FailoverComplete : <node>
Failover reason : Failover completed for node as ElastiCache monitoring detected software issues on the node, ElastiCache:FailoverComplete : <node>
Failover reason : Failover completed for node as ElastiCache monitoring detected unresponsive engine on the node, ElastiCache:FailoverComplete : <node>
Failover reason : Failover completed for node as ElastiCache monitoring detected busy and unresponsive engine on the node, ElastiCache:FailoverComplete : <node>
참고: ElastiCache for Memcached는 복구 이벤트에 대한 향상된 메시지를 지원하지 않습니다.
관련 정보
Amazon CloudWatch를 사용하여 Amazon ElastiCache for Redis의 모범 사례 모니터링
ElastiCache for Redis에서 지연 시간이 긴 문제를 해결하려면 어떻게 해야 합니까?
ElastiCache for Redis 자체 설계 클러스터의 CPU 사용량 증가 문제를 해결하려면 어떻게 해야 합니까?
