728x90
Redis replication(복제)
- 백업만으로는 장애 대비에 부족함(백업 실패 가능성, 복구에 소요되는 시간)
- Redis도 복제를 통해 가용성을 확보하고 빠른 장애조치가 가능
- master가 죽었을 경우 replica 중 하나를 master로 전환해 즉시 서비스 정상화 가능
- 복제본(replica)은 read-only 노드로 사용가능 하므로 traffic 분산도 가능
Redis 복제 사용
- Replica노드에서만 설정을 적용해 master-replica 복제 구성
# Replica로 동작 하도록 설정
replicaof 127.0.0.1 6379
# Replica는 read-only로 설정
replica-read-only
Master 노드에는 RDB나 AOF를 이용한 백업 기능 활성화가 필수!
(재시작 후에 비어있는(Master는 비어 있지만 복제본에는 데이터가 있는 경우) 데이터 상태가 복제 되지 않도)
설정 방법
# Master
## 1. Master Redis를 실행
docker run --name my-redis-master -p 5000:6379 redis
# Replica
## 2. 설정 파일 수정
code redis.conf
##### REPlICATION #####
# replicaof <masterip> <masterport> -> 이 부분을
replicaof 127.0.0.1 5000 # 로 수정 5000은 위에 작성한 Master Redis port주소
## 3. Replica 실행 Docker Network 설정 필수
docker run --network host -v $(pwd)/redis.conf:redis.conf --name my-redis-replica redis redis-server /redis.conf
Docker-Compose를 사용하여 더욱 쉽게 설정하는 방법
- docker-compose는 여러개의 컨테이너로 구성된 어플리케이션을 정의 하고 실행 할수 있는 도구
- YAML 파일을 통해 설정 한다.
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 실행 명령어
# docker-compose.yml 위치에서
# docker-compose up으로 실행 하며 --build로 실행 할때마다 다시 Build해서 실행 시킨다.
docker-compose up --build
# redis-cli 접속
docker exec -it redis-master /bin/sh
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 |