ElastiCache for Redi에서 자체 설계한 클러스터에서 장애 조치 후 발생하는 읽기 전용 오류 문제를 해결하고 싶습니다.
간략한 설명
프라이머리 노드가 ElastiCache 자체 설계 클러스터의 복제본 노드로 장애 조치되는 경우 복제본 노드가 프라이머리 노드가 됩니다. 이렇게 하면 수신 요청을 처리할 수 있습니다. READONLY 오류는 애플리케이션에서 클러스터의 기본 엔드포인트 대신 노드 엔드포인트를 사용할 때 발생합니다. 또한 애플리케이션의 DNS 캐싱이 트래픽을 이전 프라이머리 노드로 라우팅할 때 이 오류가 발생합니다.
해결 방법
클러스터 모드가 꺼져 있는 ElastiCache for Redis에서 자체 설계한 클러스터에서 발생하는 READONLY 오류 문제를 해결하려면 다음 단계를 완료하세요.
클러스터 모드가 꺼져 있는지 확인합니다.
ElastiCache 콘솔을 연 다음 Redis 클러스터를 선택합니다. 클러스터의 클러스터 모드가 꺼져 있는지 확인합니다. 자세한 내용을 알아보려면 ElastiCache for Redis에서 복제본 노드 대신 샤드의 프라이머리 노드로 리디렉션되는 Redis 클라이언트 읽기 요청을 해결하려면 어떻게 해야 합니까?를 참조하세요.
엔드포인트 확인
노드 엔드포인트가 아닌 기본 엔드포인트를 사용해야 합니다. 쓰기 명령이 프라이머리 노드로 이동하는지 확인하려면 다음 방법 중 하나를 사용하세요.
redis-cli 사용
-
redis-cli를 기본 엔드포인트로 사용하여 클러스터에 연결합니다.
-
키를 설정한 다음 키를 읽습니다.
예시:
set key1 "hello"
OK
-
키가 올바르게 설정되었는지 확인합니다.
예시:
get key1
"hello"
DNS 설정 확인
DNS 캐싱 문제를 방지하려면 애플리케이션에서 재시도 로직을 활성화하세요. 사용하는 Redis 클라이언트 라이브러리의 가이드라인을 준수해야 합니다.
수신 명령 확인
수신 명령을 확인하려면 MONITOR 명령을 사용합니다. 자세한 내용을 알아보려면 Redis 웹 사이트의 MONITOR를 참조하세요. MONITOR를 켜려면 redis-cli를 사용하여 클러스터에 연결합니다. MONITOR 명령은 클러스터 노드로 수신되는 모든 명령을 나열합니다.
참고: MONITOR 명령은 리소스를 많이 사용하는 명령이며 노드 성능을 크게 저하시킬 수 있습니다. 이 명령은 문제 해결을 위한 마지막 옵션으로 사용하세요.