DB

[Redis] 레디스의 복제

Raconer 2024. 3. 10. 15:42
728x90

🔁 Redis Replication(복제)


📌 개요

복제(replication) 는 Redis의 고가용성(HA)을 위한 핵심 기능 중 하나입니다.

  • 백업만으로는 장애 대비에 한계 존재
    → 복제는 장애시 빠른 복구서비스 연속성 확보에 유리
  • Master-Replica 구조로 구성
  • Replica는 일반적으로 읽기 전용이며, 트래픽 분산 역할도 수행 가능

✅ 복제 구성 이점

  • 마스터 장애 발생 시 → Replica를 Master로 승격
  • Replica 노드에서 읽기 수행 → 트래픽 분산
  • Master 노드 백업 기능(RDB, AOF)과 병행 사용 가능

⚙ 기본 복제 설정 (redis.conf)

# Replica로 설정
replicaof 127.0.0.1 6379

# Replica는 기본적으로 read-only
replica-read-only yes

⚠ Master Redis는 RDB나 AOF 백업 기능을 활성화해야 함
(재시작 후 비어있는 Master 상태로 인해 기존 Replica 데이터 손실 위험 방지)


🐳 Docker로 Master/Replica 구성 예시

1. Master Redis 실행

docker run --name my-redis-master -p 5000:6379 redis

2. Replica 설정파일 작성 (redis.conf)

# Replica 설정 추가
replicaof 127.0.0.1 5000

3. Replica Redis 실행

docker run --network host \
  -v $(pwd)/redis.conf:/redis.conf \
  --name my-redis-replica redis redis-server /redis.conf

🛠 Docker Compose로 복제 구성

📄 docker-compose.yml

version: "3"
services:
  my-redis-a:
    hostname: redis-master
    container_name: redis-master
    image: "bitnami/redis"
    environment:
      - REDIS_REPLICATION_MODE=master
      - ALLOW_EMPTY_PASSWORD=yes
    ports:
      - 6379:6379

  my-redis-b:
    hostname: redis-replicas-1
    container_name: redis-replicas-1
    image: "bitnami/redis"
    environment:
      - REDIS_REPLICATION_MODE=slave
      - REDIS_MASTER_HOST=redis-master
      - ALLOW_EMPTY_PASSWORD=yes
    ports:
      - 5000:6379
    depends_on:
      - my-redis-a

🧪 실행 명령

# docker-compose.yml 파일이 위치한 경로에서 실행
docker-compose up --build

🧩 Redis CLI 접속 예시

docker exec -it redis-master /bin/sh

🖼 복제 구성 구조

아래는 Docker Compose를 활용한 Redis Master-Slave 구성 예시입니다.

Docker-Compose 구조

728x90

'DB' 카테고리의 다른 글

[Redis] Redis Cluster  (0) 2024.03.12
[Redis] Redis Sentinel  (0) 2024.03.10
[Redis] 백업과 장애 복구 (AOF 방식)  (0) 2024.03.10
[Redis] 백업과 장애 복구 (RDB 방식)  (0) 2024.03.07
[Redis] Pub/Sub을 이용한 채팅방 구현  (0) 2024.03.01