Redis는 "Key-Value" 형테의 데이터를 관리하기 위한 비관계형 DBMS로 Push 시스템에서 Push 모바일 사용자의 정보를 관리하기 위해 사용한다.
Redis 서버의 사양은 수용 예상되는 Push 사용자 단말기 수에 따라 다르며, 일반적으로 1,000만 사용자 이하의 경우 다음과 같은 사양이 필요하다.
항목 | 권장 사양 |
---|---|
CPU | 2 Core (1.9 Ghz 이상) |
RAM | 4GB 이상의 여유 메모리 |
Disk | 40GB 이상 |
지원 OS | Windows |
지원되는 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 |
배포 디렉토리는 C:\uracle\morpheus\server\redis
로 가정한다.
일반적으로 설치 패키지는 Redis-[x.y.z]-Windows-x64.tar.gz
와 같은 형식으로 배포된다.
C:\uracle\morpheus\server
디렉토리에 압축을 해제 후 Redis-[x.y.z]-Windows-x64-with-Service
형식의 디렉토리 이름을 redis
로 변경하면 C:\uracle\morpheus\server\redis\redis-server.exe
와 같이 실행파일이 위치된다.
C:\
디렉토리로 이동 후 uracle
디렉토리를 우클릭하여 속성에 진입한다.보안
탭에서 편집
버튼을 클릭한다.추가
를 클릭한다.고급
를 클릭한다.지금 찾기
를 클릭 후 검색 결과
에서 서비스 구동 계정
을 선택 후 확인
을 클릭한다.본 문서에서 사용하는 서비스 구동 계정은 owner를 예시로 하며, 반드시 실제 서비스 구동 계정으로 변경이 필요하다.
확인
을 클릭한다.서비스 구동 계정
을 선택 후 사용 권한 아래의 항목 중 모든 권한
에서 허용
을 체크 후 확인
을 클릭한다.Redis 서버 번호에 따라 다르게 진행되며, #1, #2 서버만 진행 필요(Redis #3는 제외)
C:\uracle\morpheus\server\redis\redis.conf
를 불러온다.bind
설정 항목을 다음과 같이 변경 한다.... 중략 ...
bind 192.168.1.1 127.0.0.1
... 중략 ...
... 중략 ...
bind 192.168.1.2 127.0.0.1
... 중략 ...
sc.exe create redis-server binpath=C:\uracle\morpheus\server\redis\RedisService.exe start=auto
Redis 서버 번호에 따라 다르게 진행되며, #1, #2, #3 서버 전체 진행 필요
C:\uracle\morpheus\server\redis\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
... 중략 ...
C:\uracle\morpheus\server\redis
디렉토리로 이동한다.RedisService.exe
파일을 SentinelService.exe
이름으로 복사한다.대소문자와 띄어쓰기에 주의하여 파일 이름을 변경한다.
sc.exe create redis-sentinel binpath=C:\uracle\morpheus\server\redis\SentinelService.exe start=auto
redis-server
항목을 더블 클릭한다.로그온
탭에서 계정 지정
라디오 버튼 클릭 후 찾아보기
를 클릭한다.보안
탭에서 편집
버튼을 클릭한다.고급
를 클릭한다.지금 찾기
를 클릭 후 검색 결과
에서 서비스 구동 계정
을 선택 후 확인
을 클릭한다.본 문서에서 사용하는 서비스 구동 계정은 owner를 예시로 하며, 반드시 실제 서비스 구동 계정으로 변경이 필요하다.
확인
을 클릭한다.암호
와 암호 확인
항목에 서비스 운영 계정의 비밀번호를 입력 후 확인
을 클릭한다.서비스 운영 계정의 비밀번호가 변경될 경우, 반드시 이 과정을 통해 비밀번호를 변경해야 서비스가 정상 동작한다.
redis-sentinel
항목도 동일하게 반복 진행한다.redis-server
와 redis-sentinel
서비스를 기동한다.net start redis-server
net start redis-sentinel
net start redis-sentinel
C:\uracle\morpheus\server\redis\redis-cli.exe replicaof 192.168.1.1 6379
정상으로 연결될 경우, cli가 OK
를 반환한다.
C:\uracle\morpheus\server\redis\redis-cli.exe -a [비밀번호] --no-auth-warning info replication
role
항목이 다음과 같은지 확인한다.master
slave
C:\uracle\morpheus\server\redis\redis-cli.exe -p 26379 info sentinel
master0
항목의 세부 항목이 다음과 같은지 확인한다.redis-server 중 master role의 서비스가 일정 시간 이상 중단되면, sentinel의 정족수(quorum) 기준에 의해 redis-server slave가 master로 자동으로 승격된다.
그러나 sentinel 명령어를 통해 수동 failover를 진행할 수 있으므로, 테스트를 위해 아래와 같이 진행해볼 수 있다.
아무 Sentinel에 접속 후 다음과 같이 진행한다.
C:\uracle\morpheus\server\redis\redis-cli.exe -p 26379 info sentinel
C:\uracle\morpheus\server\redis\redis-cli.exe -p 26379 sentinel failover mymaster
C:\uracle\morpheus\server\redis\redis-cli.exe -p 26379 info sentinel