Redis Sentinel, Cluster

오민석·2021년 10월 11일
0

Sentinel, Cluster

Master Slave 예제

https://d2fault.github.io/2019/01/24/20190124-install-redis-and-set-master-slave-relationship/

/etc/redis -> 6379.conf 등
/lib/redis/redis-stable/utils
/var/log -> 로그

Sentinel

Cluster

  • HA 처리(failover)
  • 운영중 scale out 가능
  • traffic 분산
  • redis 용량 부족

https://sup2is.github.io/2020/07/22/redis-cluster.html

https://waspro.tistory.com/696

https://mycup.tistory.com/283

Hash slot vs consistent hasing

공통점: 둘다 hash table 사용
차이

  • Hash slot:
    HASH_SLOT=CRC16(key) mod 16384
    CRC16("a")mod16484해서 해당 값 777면 B노드(5461~10922)에 저장한다. 각 노드는 자기의 slot이 아니면 다른 node로 redirect. 수평적인 확장이 가능하다.
  • Consistent Hashing
    수평적 확장이 불가하다. 운영중에 확장불가하다.
    https://brunch.co.kr/@springboot/258

Redis RDB, AOF

메모리에 있는 데이터 전체를 바이너리 파일로 디스크에 저장. 스냅샷으로

저장 시점은 redis.conf의 save 파라미터로 설정한다. ex. save 900: 900초 동안 1번 이상 key 변경 발생 시 저장

BGSAVE/SAVE: BGSAVE경우 child process가 background에서 실행되어 운영중에 가능

장점: 파일 용량이 aof비해 작고, 데이터 복구 빠르다
단점: dump.rdb 생성 전에 에러나면 복구 불가능하다

입력/수정/삭제 명령 시 명령어 형태로 저장

단점: 지금까지 수행한 wrtie작업 다시 수행해야 한다, 로그 파일이 크다

COW

child process를 fork하면 같은 메모리 공간을 공유하게 된다. 그런데 부모 프로세스가 데이터를 write 등 하면같은 메모리 공간을 공유할 수 없게 되서 부모 프로세스는 해당 페이지를 복사한 다음 수정한다.

rdb -> BGSAVE
aof -> rewrite

0개의 댓글