Redis는 "Key-Value" 형테의 데이터를 관리하기 위한 비관계형 DBMS로 Push 시스템에서 Push 모바일 사용자의 정보를 관리하기 위해 사용한다.
Redis 서버의 사양은 수용 예상되는 Push 사용자 단말기 수에 따라 다르며, 일반적으로 1,000만 사용자 이하의 경우 다음과 같은 사양이 필요하다.
항목 | 권장 사양 |
---|---|
CPU | 2 Core (1.9 Ghz 이상) |
RAM | 4GB 이상의 여유 메모리 |
Disk | 40GB 이상 |
지원 OS | Linux |
지원되는 JDK | 해당 없음 |
본 가이드에서는 이중화를 위해 Redis Sentinel 구성을 한다.
Sentinel 이중화 구성은 다음과 같이 구성되어야 한다.
서버 3대의 구성은 다음과 예시로 한다.
서버 | IP | redis 설치유무 | sentinel 설치유무 |
---|---|---|---|
Redis #1 | 192.168.1.1 | O | O |
Redis #2 | 192.168.1.2 | O | O |
Redis #3 | 192.168.1.3 | - | O |
배포 디렉토리는 /uracle/morpheus/server/redis
로 가정한다.
일반적으로 설치 패키지는 redis-v[x.y.z]-requirepass-b[buildnumber]-install-x86_64-rhel6-linux-[yyyymmddhhmiss].tgz
와 같은 형식으로 배포된다.
/uracle/morpheus/server
디렉토리에 압축을 해제 후 redis-[x.y.z]
형식의 디렉토리 이름을 redis
로 변경하면 /uracle/morpheus/server/redis/rdcli.sh
와 같이 쉘 스크립트 파일이 위치된다.
Redis 서버 번호에 따라 다르게 진행되며, #1, #2 서버만 진행 필요(Redis #3는 제외)
/uracle/morpheus/server/redis/conf/redis.conf
를 불러온다.bind
설정 항목을 다음과 같이 변경한다.... 중략 ...
bind 192.168.1.1 127.0.0.1
... 중략 ...
... 중략 ...
bind 192.168.1.2 127.0.0.1
... 중략 ...
Redis 서버 번호에 따라 다르게 진행되며, #1, #2, #3 서버 전체 진행 필요
/uracle/morpheus/server/redis/conf/sentinel.conf
를 불러온다.bind
와 sentinel monitor mymaster
설정 항목을 다음과 같이 변경한다.... 중략 ...
bind 192.168.1.1 127.0.0.1
... 중략 ...
sentinel monitor mymaster 192.168.1.1 6379 2
... 중략 ...
... 중략 ...
bind 192.168.1.2 127.0.0.1
... 중략 ...
sentinel monitor mymaster 192.168.1.1 6379 2
... 중략 ...
... 중략 ...
bind 192.168.1.3 127.0.0.1
... 중략 ...
sentinel monitor mymaster 192.168.1.1 6379 2
... 중략 ...
redis-server
를 구동한다./uracle/morpheus/server/redis/rdstart.sh
redis-sentinel
를 구동한다./uracle/morpheus/server/redis/stnstart.sh
/uracle/morpheus/server/redis/rdcli.sh replicaof 192.168.1.1 6379
정상으로 연결될 경우, cli가 OK
를 반환한다.
/uracle/morpheus/server/redis/rdcli.sh info replication
role
항목이 다음과 같은지 확인한다.master
slave
/uracle/morpheus/server/redis/rdcli.sh info sentinel
master0
항목의 세부 항목이 다음과 같은지 확인한다.redis-server 중 master role의 서비스가 일정 시간 이상 중단되면, sentinel의 정족수(quorum) 기준에 의해 redis-server slave가 master로 자동으로 승격된다.
그러나 sentinel 명령어를 통해 수동 failover를 진행할 수 있으므로, 테스트를 위해 아래와 같이 진행해볼 수 있다.
아무 Sentinel에 접속 후 다음과 같이 진행한다.
/uracle/morpheus/server/redis/stncli.sh info sentinel
/uracle/morpheus/server/redis/stncli.sh sentinel failover mymaster
/uracle/morpheus/server/redis/stncli.sh info sentinel