Lettuce Sentinel Failover and Load Balancing

레디스 개발자 교육 신청 레디스 정기점검/기술지원
Redis Technical Support
레디스 엔터프라이즈 서버
Redis Enterprise Server

Sentinel Failover and Load Balancing

Sentinel에 연결해서 Redis에 접속하는 방법을 설명한다.
조회 명령을 복제본에서 실행해서 부하 분산(load balancing)하는 방법을 설명한다.
Lettuce-6.1.7과 Redis-7.0.3에서 실행했다.


Sentinel에 연결해서 Redis에 접속하는 방법

이클립스(eclipse 2022-03) 설정

Main.java

Util.java

Config.java


부하 분산(load balancing)하는 방법

조회 명령을 복제본에서 실행해서 부하 분산(load balancing)하는 방법

조회 명령을 복제본에서 실행해서 부하 분산(load balancing)하는 방법을 설명한다.
다음은 Lettuce에서 제공하는 조회 명령을 분산 실행하는 방법이다.
ReadFrom에서 선택할 수 있다.

  • ANY: 마스터, 복제본 가리지 않고 골고루 조회 명령을 실행한다.
    code: new ReadFromImpl.ReadFromAnyNode(); // @since 5.2
  • ANY_REPLICA: 복제본에서 조회 명령을 실행한다.
    복제본이 없을 경우 명령을 실행할 수 없다.
    code: new ReadFromImpl.ReadFromAnyReplica(); // @since 6.0.1
  • MASTER = UPSTREAM: 마스터에서만 조회 명령을 실행한다.
    code: new ReadFromImpl.ReadFromUpstream(); // @since 6.0
  • MASTER_PREFERRED = UPSTREAM_PREFERRED: 기본적으로 마스터에서 실행하고 마스터가 사용할 수 없을 경우 복제본에서 실행한다.
    code: new ReadFromImpl.ReadFromUpstreamPreferred(); // @since 6.0
  • REPLICA = SLAVE: 복제본에서만 조회 명령을 실행한다.
    복제본이 없을 경우 명령을 실행할 수 없다.
    code: new ReadFromImpl.ReadFromReplica(); // @since 5.2
  • REPLICA_PREFERRED = SLAVE_PREFERRED: 기본적으로 복제본에서 실행하고 복제본을 사용할 수 없을 경우 마스터에서 실행한다.
    code: new ReadFromImpl.ReadFromReplicaPreferred(); // @since 5.2
  • LOWEST_LATENCY = NEAREST: 대기 시간이 가장 짧은 노드에서 읽도록 설정한다.
    new ReadFromImpl.ReadFromLowestCommandLatency(); // @since 6.1.7

ANY

마스터, 복제본 가리지 않고 골고루 조회 명령을 실행한다.
부한 분산이 잘되고(마스터에서 조회 명령이 실행되는 것이 단점이지만), 복제본이 모두 다운되었을 때도 조회 명령이 마스터에서 실행된다. -> 추천 설정

ANY_REPLICA

복제본에서만 실행된다, 복제본에 골고루 분배되지만 복제본이 모두 다운되었을 경우는 명령이 실패한다.

MASTER = UPSTREAM

마스터에서만 조회 명령을 실행한다.

MASTER_PREFERRED = UPSTREAM_PREFERRED

기본적으로 마스터에서 실행하고 마스터가 사용할 수 없을 경우 복제본에서 실행한다.

REPLICA = SLAVE

복제본 중 한 곳에 집중된다. 테스트에서 두번째 복제본에서만 다 실행됐다.

REPLICA_PREFERRED = SLAVE_PREFERRED

복제본이 모두 다운되었을 경우 마스터에서 조회한다.
복제본 중 한 곳에 집중된다. 테스트에서 첫번째 복제본에서만 다 실행됐다.

LOWEST_LATENCY = NEAREST

대기 시간이 가장 짧은 노드에서 읽도록 설정한다.
복제본 중 한 곳에 집중되는 경향이 있다.


입력, 조회 중 서버가 다운되었을 경우 장애 조치(failover) 테스트

입력, 조회 중 서버가 다운되었을 경우 장애 조치(failover) 테스트

입력 명령(SET) 반복 실행 중 마스터 다운 테스트

kill -9 pid로 7000번 마스터 서버를 다운시킨다.
Reconnecting 두 번 반복하고 약 10초 후 새 서버에 명령이 실행된다.

조회(ANY_REPLICA) 중 복제본 1,2 차례로 다운

조회(ANY) 7000번 마스터만 살아있는 상태에서 조회 시작

조회 시작 후 7001번, 7002번 차례로 시작

조회(ANY) 7000, 7001, 7002 모두 살아있음.

조회 시작 후 7001번, 7002번 차례로 다운


<< Sentinel Sentinel Failover Cluster >>

Email 답글이 올라오면 이메일로 알려드리겠습니다.