Search

Redis Cluster 구성

Tags
redis
cluster
install
macos
configuration
Created
2024/05/26 20:02
Created time
2024/05/19 11:02
category
redis

개요

로컬 환경에서 Redis Standalone 및 High Availability 외에도 클러스터 형태로 구성하는 방식에 대해서 탐색

클러스터 구성

클러스터는 물리적인 여러 노드를 묶어서 하나의 시스템으로 구성하는 것을 의미
1대의 서버로 갈 부하를 여러 대로 나누어 받을 수 있으며, 데이터를 노드에 읽고 쓰는 작업에 대해서 자동으로 샤딩을 지원
클러스터 없이 여러 노드를 묶기 위해선 인스턴스들을 대상으로 키를 분배하는 샤딩을 직접 구현
** 언어별 라이브러리에 따라 자동으로 구성해주기도 하나 대부분 Deprecated 되어 직접 구현해서 사용하거나, 최근에는 대부분 Redis Cluster를 권장하므로 클러스터를 구성하여 사용
Redis Cluster를 로컬에서 기동하기 위한 최소 설정 및 셋업을 기재

Config

port 6379 pidfile /var/run/redis_6379.pid dbfilename dump.rdb cluster-enabled yes cluster-config-file nodes_6379.conf cluster-node-timeout 3000
Plain Text
복사
port 6380 pidfile /var/run/redis_6380.pid dbfilename dump.rdb cluster-enabled yes cluster-config-file nodes_6380.conf cluster-node-timeout 3000
Plain Text
복사
port 6381 pidfile /var/run/redis_6381.pid dbfilename dump.rdb cluster-enabled yes cluster-config-file nodes_6381.conf cluster-node-timeout 3000
Plain Text
복사
클러스터를 구성하기 위한 최소 인스턴스 수는 3개이므로, 각각에 해당하는 설정 파일을 작성
각 파일의 port와 pidfile, 그리고 cluster-config-file에 대해서 상이하게 작성하여 구분지음

Redis Server

redis-server <redis-configuration-path> redis-server ~/Desktop/redis_6379.conf redis-server ~/Desktop/redis_6380.conf redis-server ~/Desktop/redis_6381.conf
각 인스턴스들을 기존에 작성한 설정 파일을 이용하여 기동

Redis Cluster

redis-cli —cluster create <space-separated-endpoint> redis-cli —cluster create 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381
** —cluster-replicas를 생략했으므로 슬레이브 노드는 구성하지 않고 오로지 마스터 노드로만 구성
위 명령어를 이용하여 클러스터 모드로 기동 중인 각 Redis 인스턴스들을 클러스터로 묶고, 데이터 읽기 쓰기를 위한 해시 슬롯을 할당 및 설정

데이터 읽기/쓰기

SET

클러스터를 대상으로 SET 명령어를 이용하여 키/값을 쓸 수 있음
작성한 키/값은 샤딩된 노드들을 대상으로 자동으로 분배

GET

클러스터를 대상으로 GET 명령어를 이용하여 키/값을 읽을 수 있음
읽은 키/값은 샤딩된 노드들을 대상으로 조회된 것으로, 키를 지정한 노드를 이용하지 않고 클러스터의 노드 중 하나를 대상으로 해도 조회 가능

주의 사항

Standalone은 구성 불가

클러스터를 구성하려는 노드들 중 하나라도 Redis 설정 파일에 클러스터 구성 설정이 되어 있지 않거나, Standalone으로 구성된 경우엔 클러스터 구성이 불가능
** 너무 당연한 것이긴한데, 아무 생각 없이 하다가 왜 안 되지 할 수도 있으므로 ㅎㅎ…

Multi-Get / Multi-Set

mget, mset은 여러 노드에 걸쳐 데이터를 읽고 써야하는데, 이는 Redis Cluster의 분산 아키텍쳐와 충돌되어 수행할 수 없음
** 스크립트를 이용하여 순차적으로 하나씩 반복하여 처리하는 대안 존재

참고자료

Redis Cluster 조작 방법