===================================== REDIS 설치가이드 ===================================== 1. 개요 ========= 1-1. 목적 --------- 본 문서는 (주)유라클에서 제공하는 모피어스 제품군 중 “MSP Server Platform - Push”의 원활한 설치를 할 수 있도록 제품 설치에 관련한 설명과 수행 절차를 나타내는 것을 목적으로 한다. 본 문서는 Push 기능 중 Redis 설치에 관한 내용을 기술하고 있다. 1-2. 고려 사항 -------------- 본 문서는 성능 개선, 기능 추가 등의 사항으로 내용이 변경 될 수 있다. 2. REDIS 서버 구성도 ==================== 2-1 REDIS 서버 구성 개념도 -------------------------- |image4| 2-2 구성 요소 ------------- +------------+-----------------------+---------------------+ | Server | 주요 역할 | 주요 기능 | +============+=======================+=====================+ | REDIS | REDIS MASTER SERVER | MEMORY DB | | | | | | | REDIS SLAVE1 SERVER | 사용자정보 저장 | | | | | | | REDIS SLAVE2 SERVER | | +------------+-----------------------+---------------------+ | REDIS | REDIS SENTINEL1 | REDIS MASTER<-> | | | | | | SENTINEL | REDIS SENTINEL2 | REDIS SLAVE1,2 간 | | | | | | | REDIS SENTINEL3 | MASTER SLAVE 관리 | +------------+-----------------------+---------------------+ 3. REDIS 설치 ============== 3-1 REDIS설치 --------------- - 설치를 할 서버에 로그인 - 설치 파일을 설치할 디렉토리에업로드한다. ex) redis-3.0.7.tar.gz - 압축을 해제한다. ex) tar xvzf redis-3.0.7.tar.gz - cd redis-3.0.7/ 메인폴더 이동 - redis-3.0.7/make - redis-3.0.7/make install - 06.REDIS/redis-start.sh, 06.REDIS/redis-stop.sh, 06.REDIS/sentinel-start.sh, 06.REDIS/ sentinel-stop.sh (release 폴더 참조) 4개의 파일 모두 redis-3.0.7/ 폴더에 복사 3-2. REDIS 핵심 파일 목록 ------------------------- +----------------------+---------------------------+ | **파일 경로** | **설명** | +======================+===========================+ | redis.conf | redis설정파일 | +----------------------+---------------------------+ | src/ redis-server | Redis 실행파일 | +----------------------+---------------------------+ | sentinel.conf | Redis-sentinel 설정파일 | +----------------------+---------------------------+ | src/redis-sentinel | Redis Sentinel 실행파일 | +----------------------+---------------------------+ | redis-start.sh | Redis 실행 스크립트 | +----------------------+---------------------------+ | redis-stop.sh | Redis 중지 스크립트 | +----------------------+---------------------------+ | sentinel-start.sh | Sentinel 실행 스크립트 | +----------------------+---------------------------+ | sentinel-stop.sh | Sentinel 중지 스크립트 | +----------------------+---------------------------+ 4. 설정 =============== 4-1. REDIS MASTER 설정 ---------------------- $ vi redis.conf +----------------------------------------+----------------------------------------------------+ | logfile “redis-3.0.7/logs/redis.log" | redis 로그파일 위치 (mkdir logs - logs폴더 생성) | +========================================+====================================================+ | appendonly yes | 메모리 디스크에 저장여부 | +----------------------------------------+----------------------------------------------------+ | **bind 내부IP** | **주의!!!! 보안상 반드시 내부 IP사용** | +----------------------------------------+----------------------------------------------------+ | appendfsync everysec | 메모리 디스크에 저장 주기 | +----------------------------------------+----------------------------------------------------+ | | no : os가 자동으로 저장(가장빠름) | +----------------------------------------+----------------------------------------------------+ | | always : redis update마다 저장(가장느림) | +----------------------------------------+----------------------------------------------------+ | | everysec: 매 초당 redis update 내용저장(보통) | +----------------------------------------+----------------------------------------------------+ 4-2. REDIS SLAVE 설정 ~~~~~~~~~~~~~~~~~~~~~~ $ vi redis.conf +----------------------------------------+----------------------------------------------------+ | logfile "redis-3.0.7/logs/redis.log" | redis 로그파일 위치 (mkdir logs - logs폴더 생성) | +========================================+====================================================+ | appendonly yes | 메모리 디스크에 저장여부 | +----------------------------------------+----------------------------------------------------+ | **bind 내부IP** | **주의!!!! 보안상 반드시 내부 IP사용** | +----------------------------------------+----------------------------------------------------+ | appendfsync everysec | 메모리 디스크에 저장 주기 | +----------------------------------------+----------------------------------------------------+ | | no : os가 자동으로 저장(가장빠름) | +----------------------------------------+----------------------------------------------------+ | | always : redis update마다 저장(가장느림) | +----------------------------------------+----------------------------------------------------+ | | everysec: 매 초당 redis update 내용저장(보통) | +----------------------------------------+----------------------------------------------------+ | slaveof 11.22.33.44 6379 | 마스터 IP PORT 입력 | +----------------------------------------+----------------------------------------------------+ 4-3. REDIS-SENTINEL 설정 ------------------------ $ vi sentinel.conf +------------------------------------------------------------------+--------------------------------------------------------+ | sentinel monitor mymaster | Redis master 설정 | | | | | | : redis master ip | | | | | | : redis master port | | | | | | : failover처리에대한 sentinel 투표 수 | +==================================================================+========================================================+ | logfile "redis-3.0.7/logs/redis.log" | Sentinel log 위치 설정((mkdir logs - logs폴더 생성)) | +------------------------------------------------------------------+--------------------------------------------------------+ 5. 실행 및 확인 =============== 5-1. REDIS MASTER 실행 및 확인 ------------------------------ - REDIS 마스터 redis-3.0.7/ 로 이동 +--------------------------------------------------------------+ | # ./redis-start.sh <- redis실행 | | | | # redis-cli <- redis접속 | | | | 127.0.0.1:6379> info <- redis정보확인 | | | | 아래와같이 MASTER이며 접속된 SLAVE 정보를 확인 할 수 있다. | | | | |image1| | +==============================================================+ +--------------------------------------------------------------+ 5-2. REDIS SLAVE 실행 및 확인 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 슬레이브 REDIS redis-3.0.7/ 로 이동 +--------------------------------------------------------------+ | # ./redis-start.sh <- redis실행 | | | | # redis-cli <- redis접속 | | | | 127.0.0.1:6379> info <- redis정보확인 | | | | 아래와같이 SLAVE이며 접속한 MASTER 정보를 확인 할 수 있다. | | | | |image2| | +==============================================================+ +--------------------------------------------------------------+ 5-3. REDIS-SENTINEL 실행 미 확인 -------------------------------- - 각 REDIS redis-3.0.7/ 로 이동 +---------------------------------------------------------------------+ | # ./sentinel-start.sh <- redis실행 | | | | # vi ./sentinel.conf | | | | 아래와같이 REDIS SLAVE 정보, 다른 SENTINEL 정보를 확인 할 수 있다 | | | | |image3| | +=====================================================================+ +---------------------------------------------------------------------+ 6. 유용한 REDIS 명령어 ====================== - | **REDIS 접속** | **명령어 : redis-cli** | ex) redis-cli 1. | **Database 선택** | **명령어 : select [database]** | ex) select 9 2. | **KEY 테이블 전체 조회** | **명령어 : keys [database] (\*\*\*\* keys 명령어를 사용하면 full scan일 발생됨으로 redis lock 가 발생. 서비스 중 사용을 권장하지 않음.)** | ex) keys \* 3. | **HASHKEY 테이블 한껀 Value 정보 가져오기** | **명령어 : hget [해시키테이블명] [조회할 키명]** | ex) hget com.uracle.push.test:CUID test01 4. | **HASHKEY 테이블 전체 Value 정보 가져오기** | **명령어 : hgetall [해시키테이블명]** | ex) hgetall com.uracle.push.test:CUID 5. | **HASHKEY 테이블에서 Key 검색하기** | **명령어 : hscan [해시키테이블명] [database] [MATCJ 검색어] [COUNT 검색ROW 수]** | ex) hscan com.uracle.push.test:PUSHUSER 9 MATCH a23\* COUNT 3 6. **HASHKEY에 저장된 SIZE 조회하기** **명령어 :hlen [해시키테이블명]** ex) hlen com.uracle.push.test:PUSHUSER .. |image1| image:: img/redis-1.png :width: 6.29861in .. |image2| image:: img/redis-2.png :width: 4.78192in .. |image3| image:: img/redis-3.png :width: 5.36533in .. |image4| image:: img/redis-4.png :width: 5.36533in