Lettuce Configuration

클러스터 내 노드의 IP, Port를 지정해서 접속한다. 어떤 노드를 지정해서 접속해도 접속에 성공하면 cluster nodes 명령을 실행해서 클러스터 내 모든 노드의 정보를 lettuce가 가지고 있다.  노드는 하나만 지정해도 되지만, 그 노드가 다운되었을 경우에 대비해서 여러 노드를 지정한다. 복제(replica) 노드를 지정해도 된다.

 

  • enablePeriodicRefresh(): 지정한 시간마다 클러스터 구성 정보를 가져와서 업데이트한다. 노드가 추가/삭제되었거나, 노드 다운으로 역할 변경(마스터 -> 복제(replica)), 슬롯이 이동했을 경우 등 클러스터 구성 정보가 변경되었을 경우 최신 정보로 업데이트해야 한다. 노드가 많을 경우 너무 짧은 시간을 지정하면 refresh 부하가 발생할 수 있다.
  • enableAllAdaptiveRefreshTriggers : 문제가 되는 Operation 발생시 커넥션을 갱신시켜주는 트리거 발생시킴
  • setReadFrom(ReadFrom.SLAVE): 이렇게 설정하면 get 같은 조회 명령은 복제(replica) 노드에서 실행된다.  마스터/복제(replica)간 부하 분산(Load-Balancing)을 할 수 있다.
MASTER - Default 값. master 에서 읽어 옴
MASTER_PREFERRED - master 에서 읽지만 사용 할 수 없는 경우에만 Slave 에서 읽음
SLAVE - Slave 에서만 읽음
SLAVE_PREFERRED - Slave 에서 읽고 불가능 할 때 master 에서 읽음
NEAREST - 가까운 노드에서 읽도록 설정
  • autoReconnect(): ConnectionWatchdog이 노드 다운을 감지하면 연결을 시도한다. Default는 true이다. enablePeriodicRefresh()와 중복되는 경향이 있다.
  • validateClusterNodeMembership : 클러스터 노드에 연결 전 유효한 노드인지 확인

참고) Spring boot에서 lettuce debug : logging.level.io.lettuce.core.protocol=DEBUG

 

관련 로그

로드밸런서 혹은 지정된 노드에 연결시 1분간격으로 노드에 연결을 시도하고 클러스터 정보를 가져옴

2022-01-27 03:45:42.986 DEBUG 1 --- [llEventLoop-4-1] i.l.core.protocol.RedisStateMachine      : Decoded LatencyMeteredCommand [type=CLUSTER, output=StatusOutput [output=f0464738f9fdff9a87258a6a533f8decab266edb 10.244.3.34:6379@16379 master - 0 1643255141000 1 connected 0-5460
1a5698df7f60fda63576fba615377db15ae86035 10.244.3.36:6379@16379 master - 0 1643255142520 3 connected 10923-16383
256b286b4b2574eddb8e232e053bebf828f1a881 10.244.3.39:6379@16379 slave 220a82de5edc5b2ded3da2c9b32ad7369d65d874 0 1643255142722 2 connected
220a82de5edc5b2ded3da2c9b32ad7369d65d874 10.244.3.35:6379@16379 myself,master - 0 1643255141000 2 connected 5461-10922
31e11fa54da223702d523636d223897072ffd064 10.244.3.38:6379@16379 slave f0464738f9fdff9a87258a6a533f8decab266edb 0 1643255142000 1 connected
b4a3eb4efffec439ba91003a10ffbdcd52742804 10.244.3.37:6379@16379 slave 1a5698df7f60fda63576fba615377db15ae86035 0 1643255142000 3 connected
, error='null'], commandType=io.lettuce.core.cluster.topology.TimedAsyncCommand], empty stack: true

- http://redisgate.kr/redis/clients/lettuce_cluster.php

'빅데이터 > Redis Cluster' 카테고리의 다른 글

Redis Configuration  (0) 2022.02.08
Redis 주요 명령어  (0) 2022.02.08
Redis Cluster 장애 복구  (0) 2022.02.08
Redis Cluster Overview  (0) 2022.02.08

+ Recent posts