Redis(클러스터 모드 사용 안 함) 클러스터의 장애 조치 후 "READONLY 읽기 전용 복제본에 대해 쓸 수 없습니다." 오류를 해결하려면 어떻게 해야 하나요?

최종 업데이트 날짜: 2022년 6월 17일

장애 조치 후 Amazon ElastiCache for Redis(클러스터 모드 사용 안 함) 클러스터에서 "READONLY 읽기 전용 복제본에 대해 쓸 수 없습니다." 오류가 발생하는 이유가 무엇인가요?

간략한 설명

프라이머리 노드가 Amazon ElastiCache 클러스터의 복제본 노드로 장애 조치된 경우 복제본은 수신되는 요청을 처리하는 프라이머리 노드 역할을 수행합니다. 그러나 다음 시나리오에서는 READONLY 오류가 발생합니다.

  • 애플리케이션에서 클러스터의 기본 엔드포인트 대신 노드 엔드포인트를 사용하고 있습니다.

    -또는-

  • 애플리케이션 노드의 DNS 캐싱은 트래픽을 이전 프라이머리 노드로 라우팅합니다.

해결 방법

1.    클러스터가 비활성화된 클러스터 모드인지 확인합니다. 이렇게 하려면 다음을 수행합니다.
ElastiCache 콘솔을 연 다음 Redis 클러스터(Redis clusters)를 선택합니다. 클러스터의 클러스터 모드(Cluster Mode)꺼져(off) 있는지 확인합니다.
참고: 클러스터 모드(Cluster Mode)켜져(on)있으면 ElastiCache 또는 Redis를 사용하고 있음을 참조하세요. Redis 클라이언트 읽기 요청이 항상 샤드의 프라이머리 노드를 읽거나 이 노드로 리디렉션되는 이유가 무엇인가요?

2.    쓰기 명령을 노드 엔드포인트 대신 기본 엔드포인트로 보내고 있는지 확인합니다. 쓰기 명령이 프라이머리 노드로 이동하는지 확인하려면 다음 중 하나를 수행합니다.
옵션 1
redis-cli를 사용하여 Redis 클러스터에 연결한 다음 업데이트된 키에 대해 get key 명령을 실행합니다. 그런 다음 명령 출력을 확인하여 마지막 명령 이후에 키 값이 업데이트되었는지 확인합니다.
예를 들어 다음 명령은 key1 값을 hello로 설정합니다.

set key1 "hello" 
OK

키가 올바르게 설정되었는지 확인하려면 get 명령을 실행합니다.

get key1
"hello"

옵션 2

redis-cli를 사용하여 Redis 클러스터에 연결한 다음 MONITOR 명령을 실행합니다. 이 명령은 클러스터로 들어오는 모든 명령을 나열합니다. 단일 MONITOR 클라이언트를 실행하면 처리량이 50% 이상 줄어들 수 있다는 점에 유의하세요.

3.    DNS 캐싱 문제를 방지하려면 애플리케이션에서 사용하는 Redis 클라이언트 라이브러리에 대한 지침에 따라 애플리케이션에서 재시도 로직을 켭니다.


이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요합니까?