환경 구성 개요:
- 서버 192.168.1.5: Redis 인스턴스 3개 운영 (포트 6379, 6380, 6381)
- 서버 192.168.1.6: Sentinel 인스턴스 2개 운영 (포트 26380, 26381)
Redis 인스턴스 설정 (192.168.1.5)
# 기본 디렉토리 생성
mkdir -p /etc/redis
cd /etc/redis
# 설정 파일 복사
cp /etc/redis.conf redis_6380.conf
cp /etc/redis.conf redis_6381.conf
# 기본 설정 수정 (redis.conf)
bind 192.168.1.5
daemonize yes
# 첫 번째 서브노드 설정 (redis_6380.conf)
port 6380
daemonize yes
pidfile /var/run/redis_6380.pid
logfile /var/log/redis/redis_6380.log
dir /var/lib/redis_6380
slaveof 192.168.1.5 6379
# 데이터 디렉토리 준비
mkdir /var/lib/redis_6380
chown redis:redis /var/lib/redis_6380
# 두 번째 서브노드 설정 (redis_6381.conf)
port 6381
daemonize yes
pidfile /var/run/redis_6381.pid
logfile /var/log/redis/redis_6381.log
dir /var/lib/redis_6381
slaveof 192.168.1.5 6379
# 데이터 디렉토리 준비
mkdir /var/lib/redis_6381
chown redis:redis /var/lib/redis_6381
# 서비스 시작
redis-server /etc/redis.conf
redis-server /etc/redis/redis_6380.conf
redis-server /etc/redis/redis_6381.conf
# 포트 확인
netstat -tlnp | grep redis
# 복제 상태 검증
redis-cli -p 6379 info replication
# 출력 예시:
# role:master
# connected_slaves:2
# slave0:ip=127.0.0.1,port=6380,state=online
# slave1:ip=127.0.0.1,port=6381,state=online
Sentinel 클러스터 설정 (192.168.1.6)
# 설정 디렉토리 생성
mkdir -p /etc/redis
cd /etc/redis
# 기본 설정 정리
grep -v "^#\|^$" /etc/redis-sentinel.conf > sentinel_26380.conf
cp sentinel_26380.conf sentinel_26381.conf
# 첫 번째 Sentinel 설정 (sentinel_26380.conf)
port 26380
dir /tmp
sentinel monitor clusterA 192.168.1.5 6379 2
sentinel down-after-milliseconds clusterA 30000
sentinel parallel-syncs clusterA 1
sentinel failover-timeout clusterA 180000
logfile /var/log/redis/sentinel_26380.log
# 로그 파일 생성
touch /var/log/redis/sentinel_26380.log
chown redis:redis /var/log/redis/sentinel_26380.log
# 두 번째 Sentinel 설정 (sentinel_26381.conf)
port 26381
dir /tmp
sentinel monitor clusterA 192.168.1.5 6379 2
sentinel down-after-milliseconds clusterA 30000
sentinel parallel-syncs clusterA 1
sentinel failover-timeout clusterA 180000
logfile /var/log/redis/sentinel_26381.log
# 로그 파일 생성
touch /var/log/redis/sentinel_26381.log
chown redis:redis /var/log/redis/sentinel_26381.log
# Sentinel 실행
redis-sentinel /etc/redis/sentinel_26380.conf &
redis-sentinel /etc/redis/sentinel_26381.conf &
# 연결 상태 확인
netstat -tlnp | grep redis-sentinel
# Sentinel 상태 조회
redis-cli -p 26380 info sentinel
# 출력 예시:
# sentinel_masters:1
# master0:name=clusterA,status=ok,address=192.168.1.5:6379,slaves=2,sentinels=2