ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Redis 클러스터를 구성하는 방법과 운영 시 주의점
    DevOps 2025. 3. 22. 17:25
    728x90

    ✅ 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
Designed by Tistory.