본문 바로가기
DATA/Redis

Redis 운영모드 - Sentinel, Cluster

by bzerome240 2022. 12. 29.

 

레디스는 단일 인스턴스만으로도 충분히 운영이 가능하지만,

메모리 한계를 초과하는 데이터를 저장하고 싶거나, failover에 대한 처리를 통해 High Availibilty를 보장하려면

센티널이나 클러스터 등의 운영모드를 사용해야한다.

 

 

1) Sentinel

https://velog.io/@always/Redis-%EC%9A%B4%EC%98%81-%EB%B0%A9%EC%8B%9D-Cluster-vs-Sentinel-%EC%96%B4%EB%96%A4-%EA%B2%83%EC%9D%84-%EC%84%A0%ED%83%9D%ED%95%B4%EC%95%BC-%ED%95%A0%EA%B9%8C

 

  • HA 지원
  • master/slave replication
  • 여러개의 독립적인 sentinel process들이 서로 협동하여 운영된다
  • 안정적인 운영을 위해서는최소 3개 이상의 sentinel instance 필요, 홀수 권장
  • 센티널 기본 포트: TCP 26379
  • One master - multi slave

 

제공하는 기능

  • 모니터링
  • 알림
  • 자동 failover
    • master에 문제가 감지되면 자동으로 failover 수행 (과반수 vote)
    • failover가 되면 slave가 master가 될 수 있고, master가 slave가 될 수 있다.
  • 환경 구성 provider

 

Redis client에서 데이터 조회 방법

sentinel에 먼저 연결 후 현재 master를 조회한다.

 


 

2) Cluster

https://velog.io/@always/Redis-%EC%9A%B4%EC%98%81-%EB%B0%A9%EC%8B%9D-Cluster-vs-Sentinel-%EC%96%B4%EB%96%A4-%EA%B2%83%EC%9D%84-%EC%84%A0%ED%83%9D%ED%95%B4%EC%95%BC-%ED%95%A0%EA%B9%8C

  • HA 지원
  • sentinel 보다 더 발전된 형태
  • dataset을 자동으로 여러 노드들에 나눠서 저장해준다
  • Redis Cluster 기능을 지원하는 client를 써야만 데이터 엑세스 시 올바른 노드로 redirect 가능하다.
  • 각 노드들은 클러스터에 속한 다른 노드들에 대한 정보를 모두 갖고있다.
  • Muiti-master, Multi-slave 구조 - master 마다 최소 하나의 slave를 두는 것을 추천한다.
  • 클러스터 기본 포트: TCP 6379 (데이터 포트: 16379)

 

제공하는 기능

  • 자동 failover
  • failover가 되면 slave가 master가 될 수 있고, master가 slave가 될 수 있다.
  • sharding : 데이터 분산 저장
  • 최대 1000개의 노드로 샤딩해서 사용 (그 이상은 추천X)

 

Redis client에서 데이터 조회 방법

클러스터 내의 어떤 노드에 쿼리를 날려도 된다 (슬레이브에도)

해당 키를 자신이 갖고있다면 바로 턴, 없다면 가지고있는 노드의 정보를 리턴하고 해당 정보로 쿼리를 다시 보낸다.

 

Replication 복제

: primary node(쓰기 전용) 과 secondary node(읽기 전용)을 구성하여 트래픽을 분산하는 기법

 

  • secondary node는 언제든 확장이 가능하다. 데이터 복제 요청을 secondary node가 primary node에게 요청하기 때문에 primary node의 무중단이 보장된다.
  • primary node에 쓰기 작업이 발생하면 secondary node에 변경 이벤트를 전파하여 데이터 일관성을 유지한다.
  • 레디스 client에서 쓰기/읽기 노드를 모두 알고있어야 한다.

 

Sharding 샤딩

: 데이터를 특정 조건에 따라 나누어 저장하는 기법

 

  • redis 2.6버전은 서버측 샤딩을 지원하지 않는다. (client측 샤딩 기법을 이용해야 함)
  • Vertical Sharding : 데이터 성격에 따라 분리
  • Range Sharding : 데이터 범위에 따라 분리
  • Hash Based Sharding (Consistent Hashing) : 키값을 해싱하고 해싱된 값을 이용하여 저장소를 선택

 

 

 

 


 

참고

 

 

레디스 클러스터, 센티넬 구성 및 동작 방식

RDBMS만큼의 정합성과 영속성을 보장할 필요가 없는 데이터들을 빠르게 처리하거나 일정 기간동안만 보관하고 있기 위한 용도로 레디스(Redis), memcached 등의 in-memory 기반 저장소가 많이 사용된다.

www.letmecompile.com

 

 

Redis의 자료형, 특징과 시간복잡도 그리고 클러스터

Redis 레디스(Redis)는 Remote Dictionary Sever의 약자로 Key-Value 구조로 비정형 데이터를 저장하고 관리하기 위한 오픈 소스 기반의 비관계형 데이터베이스 관리 시스템(DBMS)이다. 모든 데이터를 메모리

dev-jj.tistory.com

 

728x90
반응형

댓글