본문 바로가기
웹(web)/백엔드 기초

ioredis 레디스 클러스터 설정

by 바코94 2023. 11. 21.

레디스는 메모리 캐시로 disk i/o 에 비해 속도상 이점이 있으므로 빠른 처리를 필요로 할 때 이용할 수 있다. 
useCase로는 chat, response cache, 자주 조회되는 데이터, session manager, pub-sub 등 다양하다. (공식문서 참고: https://redis.com/solutions/use-cases)

레디스를 클러스터 방식으로 사용하는 이유는 클라이언트 입장에서 레디스가 죽지 않고 계속 서빙되도록 하기 위함이다. 최소 3개 이상의 master를 두어야하며 몇 가지 제약사항이 따른다. 이를 통해, 안정적인 레디스 서비스를 제공할 수 있다.

nodejs 런타임에서 ioredis를 이용하여 클러스터를 설정하고자 하였는데 찾기가 어려웠다 단일 노드에 대한 사용은 많이 나오는데 클러스터 셋업부터 연결까지에 대한 글이 총정리된 것이 없었다. 본 글에 작성한 다음과 같은 방식을 따라가면 비교적 손쉽게 이해 및 세팅을 할 수 있다. 무작정 세팅을 하기보다는 레디스에 대한 이해를 기반으로 왜 안되는지에 대해 추론하는 것이 중요하다.

1. 레디스에 대한 기본적 개념 이해(레디스란 무엇인지, 레디스 클러스터, 샤딩, 마스터노드, 슬레이브 노드 등 )
nhn 클라우드 포스팅 추천 
https://meetup.nhncloud.com/posts/224

https://meetup.nhncloud.com/posts/225 
https://meetup.nhncloud.com/posts/226 
https://meetup.nhncloud.com/posts/227 

2. redis-cli를 이용하여 단일노드에 대한 사용법 익히기(get,set, keys 등 기본적인 명령어)
3. nodejs 런타임에서 ioredis를 이용하여 단일노드에 대한 연결 테스트(get, set)
4. redis-cli를 이용하여 클러스터 세팅 및 연결 확인
공식문서를 참고하여 만든 셋업 레포: https://github.com/parkhojeong/redis-cluster-environment
클러스터 셋업 공식문서 https://redis.io/docs/management/scaling/#create-and-use-a-redis-cluster


공식 문서를 통하여 셋업을 하고 나면 6개의 노드로 클러스터를 띄우는데, CLUSTER SLOTS로 명령어를 쳐보면 다음과 같이 노드의 id와 샤딩이 세개로 된 것을 볼 수 있다. 


5. nodejs 런타임에서 ioredis를 이용하여 클러스터에 대한 연결 테스트(get, set)

import Redis from "ioredis";
const cluster = new Redis.Cluster([
    {
      port: 7001,
      host: "127.0.0.1"
    }
  ]);
  
await cluster.get("c", "123");
await cluster.set("c", "123");

 

 

 

참고

https://developer.redis.com/operate/redis-at-scale/scalability/exercise-1

 

'웹(web) > 백엔드 기초' 카테고리의 다른 글

Ubuntu screen 사용법  (0) 2021.08.22
Web server  (0) 2020.06.30
HTTP Protocol Method  (0) 2020.06.30