-
Redis 클러스터를 구성하는 방법과 운영 시 주의점DevOps 2025. 3. 22. 17:25728x90
✅ Redis 클러스터란?
Redis 클러스터(Redis Cluster)는 데이터를 여러 노드에 자동으로 분산 저장하여 수평 확장성과 고가용성을 제공하는 Redis의 기능입니다.
- 데이터를 slot(0~16383)으로 나누어 여러 노드에 분산
- 마스터-레플리카 구조로 장애 조치 가능
- Redis 3.0 이상에서 지원
📦 Redis 클러스터 구성 방법
1. 노드 준비
- 최소 3개의 마스터 노드 필요 (고가용성을 위해 보통 마스터 3 + 각 마스터당 레플리카 1씩 총 6개 구성)
- Redis는 각 인스턴스(노드)를 별도의 포트 또는 서버에서 실행
2. Redis 설정 파일 (redis.conf)
- 클러스터 모드 활성화:
cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 5000 appendonly yes
포트 설정:
- 기본 Redis 포트(예: 7000)
- 클러스터 노드 간 통신용 포트: Redis 포트 + 10000 (예: 17000) → 해당 포트 둘 다 방화벽에서 열어야 함
3. Redis 인스턴스 실행
redis-server ./redis.conf
4. 클러스터 생성
- redis-cli 또는 redis-cli --cluster create 사용
redis-cli --cluster create \ 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 \ 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 \ --cluster-replicas 1
- 위 예시는 3개 마스터, 3개 레플리카로 구성
5. 클러스터 확인
redis-cli -c -p 7000 127.0.0.1:7000> cluster info 127.0.0.1:7000> cluster nodes
⚠️ 운영 시 주의할 점
📌 데이터 분산 및 슬롯 재배치
- Redis 클러스터는 key에 따라 자동으로 hash slot(0~16383)으로 분산
- 노드 추가/삭제 시 reshard 작업 필요
- redis-cli --cluster reshard 명령 사용
📌 마스터/레플리카 장애 복구
- 마스터 노드가 장애 시 자동으로 해당 레플리카가 마스터로 승격
- 레플리카는 반드시 다른 머신에 구성해야 고가용성 보장됨
📌 클러스터 전체 동작 조건
- 과반수의 마스터 노드가 살아 있어야 클러스터가 write 가능
📌 클라이언트 설정
- Redis 클러스터는 여러 노드에 분산되어 있으므로 redis-cli -c 옵션 사용
- 일반 Redis 클라이언트에서 Redis Cluster-aware 클라이언트 사용 필요 (예: ioredis, Lettuce, Jedis 등)
📌 트랜잭션과 멀티키 명령 제한
- 멀티키 명령(MGET, MSET 등)은 같은 슬롯 내 키에 대해서만 동작
- 트랜잭션 기능은 제한적으로 사용 가능
📌 백업 및 복구
- 클러스터 구성 시 각 노드별로 백업 필요
- RDB/AOF 파일 복원 시에는 클러스터 재구성이 필요할 수 있음
🛠️ 운영 도구 및 모니터링
- Redis Cluster Manager (redis-trib.rb) – 구버전, 현재는 redis-cli --cluster로 대체
- RedisInsight – GUI 기반 모니터링 도구
- Prometheus + Grafana – Redis exporter 활용하여 메트릭 수집
구성이나 운영 환경에 따라 AWS ElastiCache 같은 관리형 Redis를 사용하는 것도 고려해볼 수 있습니다.
728x90'DevOps' 카테고리의 다른 글
HA Proxy와 Nginx 비교 (0) 2025.03.23 Redis는 스토리지 공간 사용 용도 (0) 2025.03.23 RAID (Redundant Array of Independent/Inexpensive Disks) (0) 2025.03.22 GitHub의 Hubot이란 (0) 2025.03.21 Spring Boot 애플리케이션이 Kubernetes에서 Pod 시작 시 CPU를 많이 사용하는 이유 (0) 2025.03.18