구성 계획

  • 192.168.0.11 redis, sentinel
  • 192.168.0.12 redis, sentinel
  • 192.168.0.13 redis, sentinel
  • redis 포트 : 6379
  • sentinel 포트 : 26379

redis 설치, 설정

192.168.0.11 ~ 192.168.0.13 공통

# 관련 패키지 설치 
sudo apt install -y gcc make pkg-config libjemalloc-dev libjemalloc2 tcl libssl-dev libsystemd-dev
# redis 설치 
wget http://download.redis.io/releases/redis-7.2.4.tar.gz
tar xvzf redis-7.2.4.tar.gz 
cd redis-7.2.4
cd deps
make hiredis jemalloc linenoise lua
cd ..
make USE_SYSTEMD=yes
make test 
make install PREFIX=/home/kalva/redis_6379

# 설정 파일 복사
cp redis.conf /home/kalva/redis_6379/redis_6379.conf
cp sentinel.conf /home/kalva/redis_6379/sentinel_26379.conf

# 로그 디렉토리 생성 
cd /home/kalva/redis_6379
mkdir logs

192.168.0.11 redis 설정, 구동

vi /home/kalva/redis_6379/redis_6379.conf
# 모두 접속 허용
bind 0.0.0.0
# 백그라운드로 동작
daemonize yes
# pid파일 위치
pidfile "/home/kalva/redis_6379/redis_6379.pid"
# log파일 위치
logfile "/home/kalva/redis_6379/logs/redis_6379.log"
# rdb 파일 디렉토리 
dir /home/kalva/redis-7.2.4/
# 슬레이브가 마스터 서버와 통신하기 위한 패스워드 
masterauth mypass
# redis 클라이언트가 redis 와 통신하기 위한 패스워드 
requirepass mypass
appendonly yes
appendfsync everysec

# Redis 구동 
/home/kalva/redis_6379/bin/redis-server /home/kalva/redis_6379/redis_6379.conf

192.168.0.12, 192.168.0.13 redis 설정, 구동

vi /home/kalva/redis_6379/redis_6379.conf
# 모두 접속 허용
bind 0.0.0.0
# 백그라운드로 동작
daemonize yes
# pid파일 위치
logfile "/home/kalva/redis_6379/logs/redis_6379.log"
# log파일 위치
pidfile "/home/kalva/redis_6379/redis_6379.pid"
# rdb 파일 디렉토리 
dir /home/kalva/redis-7.2.4/
# 슬레이브가 마스터 서버와 통신하기 위한 패스워드 
masterauth mypass
# redis 클라이언트가 redis 와 통신하기 위한 패스워드 
requirepass mypass
appendonly yes
appendfsync everysec

# 복제 마스터 서버 정보 
replicaof 192.168.0.11 6379

# Redis 구동 
/home/kalva/redis_6379/bin/redis-server /home/kalva/redis_6379/redis_6379.conf

sentinel 설정

192.168.0.11 ~ 192.168.0.13 redis 설정, 구동

vi /home/kalva/redis_6379/sentinel_26379.conf
# 백그라운드로 동작
daemonize yes
# pid파일 위치
pidfile "/home/kalva/redis_6379/sentinel_26379.pid"
# log파일 위치
logfile "/home/kalva/redis_6379/logs/sentinel_26379.log"
# 모니터링 대상 master정보, 쿼럼설정 
sentinel monitor mymaster 192.168.0.11 6379 2
# master비번
sentinel auth-pass mymaster mypass
# master 다운판정 시간 6초
sentinel down-after-milliseconds mymaster 6000
# failover 완료되어야 하는 시간
sentinel failover-timeout mymaster 180000

# sentinel 구동 
/home/kalva/redis_6379/bin/redis-sentinel /home/kalva/redis_6379/sentinel_26379.conf

구동 테스트

복제 정보, 센티널 정보 확인

# 복제 정보 확인 
kalva@kalva:~$ /home/kalva/redis_6379/bin/redis-cli -h 192.168.0.11 
192.168.0.11:6379> auth mypass
OK
192.168.0.11:6379> info replication
# Replication
role:master
connected_slaves:2
slave0:ip=192.168.0.12,port=6379,state=online,offset=406,lag=0
slave1:ip=192.168.0.13,port=6379,state=online,offset=406,lag=0
master_failover_state:no-failover
master_replid:bd536db1af0fc367cce17cb5bede06e52ac778e3
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:406
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:406
192.168.0.11:6379> 

# 센티널 노드 확인
# slaves=2,sentinels=3 가 맞는지 확인 
kalva@kalva:~$ /home/kalva/redis_6379/bin/redis-cli -h 192.168.0.11 -p 26379 info sentinel
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_tilt_since_seconds:-1
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=192.168.0.11:6379,slaves=2,sentinels=3

master 노드 확인

kalva@kalva:~$ /home/kalva/redis_6379/bin/redis-cli -h 192.168.0.11 -p 26379  sentinel get-master-addr-by-name mymaster
1) "192.168.0.11"
2) "6379"

Failover 테스트

# 192.168.0.13 서버 우선순위 50으로 설정
# replica-priority 값이 낮을수록 우선순위기 높다. 
kalva@kalva:~$ /home/kalva/redis_6379/bin/redis-cli
127.0.0.1:6379> auth mypass
OK
127.0.0.1:6379> CONFIG SET replica-priority 50
OK

# FAILOVER
kalva@kalva:~$ /home/kalva/redis_6379/bin/redis-cli -h 192.168.0.11 -p 26379 
192.168.0.11:26379> SENTINEL FAILOVER mymaster
OK

# 마스터 노드 확인 
192.168.0.11:26379> SENTINEL GET-MASTER-ADDR-BY-NAME mymaster
1) "192.168.0.13"
2) "6379"

# 192.168.0.13 에서 확인 
kalva@kalva:~/redis_6379$ /home/kalva/redis_6379/bin/redis-cli 
127.0.0.1:6379> auth mypass
OK
127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:2
slave0:ip=192.168.0.12,port=6379,state=online,offset=554510,lag=0
slave1:ip=192.168.0.11,port=6379,state=online,offset=554510,lag=0
master_failover_state:no-failover
master_replid:ef914c9e01ccbc78289a259f66c5894b4818e248
master_replid2:bd536db1af0fc367cce17cb5bede06e52ac778e3
master_repl_offset:554649
second_repl_offset:453815
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:15
repl_backlog_histlen:554635


kalva@kalva:~$ /home/kalva/redis_6379/bin/redis-cli -h 192.168.0.11 -p 26379 
192.168.0.11:26379> SENTINEL SENTINELS mymaster
1)  1) "name"
    2) "93275507e9835dc182df09356d8fe829715b3eae"
    3) "ip"
    4) "192.168.0.12"
    5) "port"
    6) "26379"
    7) "runid"
    8) "93275507e9835dc182df09356d8fe829715b3eae"
    9) "flags"
   10) "sentinel"
   11) "link-pending-commands"
   12) "0"
   13) "link-refcount"
   14) "1"
   15) "last-ping-sent"
   16) "0"
   17) "last-ok-ping-reply"
   18) "270"
   19) "last-ping-reply"
   20) "270"
   21) "down-after-milliseconds"
   22) "6000"
   23) "last-hello-message"
   24) "1868"
   25) "voted-leader"
   26) "?"
   27) "voted-leader-epoch"
   28) "0"
2)  1) "name"
    2) "c4c59fc8e54187cd99f926a677f3e4a9bf88c68b"
    3) "ip"
    4) "192.168.0.13"
    5) "port"
    6) "26379"
    7) "runid"
    8) "c4c59fc8e54187cd99f926a677f3e4a9bf88c68b"
    9) "flags"
   10) "sentinel"
   11) "link-pending-commands"
   12) "0"
   13) "link-refcount"
   14) "1"
   15) "last-ping-sent"
   16) "0"
   17) "last-ok-ping-reply"
   18) "270"
   19) "last-ping-reply"
   20) "270"
   21) "down-after-milliseconds"
   22) "6000"
   23) "last-hello-message"
   24) "233"
   25) "voted-leader"
   26) "?"
   27) "voted-leader-epoch"
   28) "0"

'Redis' 카테고리의 다른 글

클러스터 구성  (0) 2024.12.01
Redis 관리  (0) 2024.11.27
WSL2 + Rocky Linux 8 + Redis 7.2 설치  (0) 2023.12.10

+ Recent posts