ElastiCache for Redis의 복제본 노드 대신 샤드의 기본 노드로 리디렉션되는 Redis 클라이언트 읽기 요청을 해결하려면 어떻게 해야 하나요?

2분 분량
0

ElastiCache for Redis의 복제본 노드 대신 샤드의 기본 노드로 리디렉션되는 Redis 클라이언트 읽기 요청을 해결하고 싶습니다.

간략한 설명

ElastiCache for Redis 클러스터의 모든 노드는 Redis 클라이언트로부터 쿼리를 수신할 수 있습니다. 클라이언트가 읽기 및 쓰기 쿼리를 복제본 노드에 보낼 때 노드는 요청이 단일 키 작업인지 또는 다중 키 작업인지 확인합니다. 단일 키 또는 다중 키 작업은 샤드의 동일한 해시 슬롯에 속해야 합니다. 기본적으로 클러스터 모드가 설정된 복제본 노드는 모든 읽기 및 쓰기 요청을 기본 노드로 리디렉션합니다. 읽기 및 쓰기 요청은 키의 해시 슬롯에 속한 샤드의 신뢰할 수 있는 기본 노드로 리디렉션됩니다. 샤드가 해시 슬롯에 속하고 readonly 명령을 먼저 시작하면 복제본 노드는 읽기 요청만 완료합니다. 복제본 노드는 클라이언트가 먼저 readonly를 실행한 경우에만 읽기 요청을 처리합니다. readonly 요청이 먼저 전송되지 않으면 복제본 노드가 요청을 기본 노드로 리디렉션합니다.

해결 방법

복제본 노드에서 Redis 클라이언트 읽기 요청을 읽을 수 있도록 하려면 다음 단계를 완료하세요.

  1. 클러스터에 로그인한 다음 키를 설정합니다. 예시:

    172.31.21.72:6379> set key8 "This is testing for readonly"
    -> Redirected to slot [13004] located at 172.31.21.72:6379
    OK
    172.31.21.72:6379>
  2. 복제본 노드에 연결합니다. readonly 명령을 실행해야 합니다. 예시: **참고:**다음 예제는 먼저 전송되지 않고 요청이 기본 노드로 리디렉션되는 readonly 명령을 보여줍니다.

    172.31.30.175:6379> info replication
     # Replication
     role:slave
     master_host:172.31.21.72
     master_port:6379
     master_link_status:up
     172.31.30.175:637> CLUSTER KEYSLOT key8
     (integer) 13004
     172.31.30.175:637> get key8
     (error) MOVED 13004 172.31.21.72:6379
     172.31.30.175:637> get key8
     -> Redirected to slot [13004] located at 172.31.21.72:6379
     "This is testing for readonly"
     172.31.21.72:6379>
    

    참고: 위 예제에 표시된 MOVED 오류는 Redis 클러스터 클라이언트가 기본 노드에 대한 리디렉션 요청을 처리할 수 없을 때 발생합니다. MOVED 오류에 대한 자세한 내용은 Redis 웹 사이트에서 MOVED 리디렉션을 참조하세요.

    예시:
    참고: 다음 예제는 먼저 전송된 readonly 명령을 보여줍니다. 이를 통해 복제 노드는 요청을 처리하고 요청을 기본 노드로 리디렉션하지 않을 수 있습니다.

    172.31.30.175:6379> readonly
    OK
    172.31.30.175:6379> get key8
    "This is testing for readonly"
    172.31.30.175:6379>

참고: 클라이언트가 처음으로 노드에 연결할 때 readonly 명령을 실행해야 합니다. 이 명령은 클라이언트가 동일한 노드에서 키를 읽을 때까지만 활성화됩니다. 클라이언트가 동일하거나 다른 샤드의 다른 복제본 노드에 연결하는 경우, readonly 명령을 실행해야 합니다.

AWS 공식
AWS 공식업데이트됨 8달 전