참고 자료:
http://chrislaskey.com/blog/342/running-multiple-redis-instances-on-the-same-server/
http://makandracards.com/makandra/7965-run-multiple-redis-servers-on-ubuntu
작업 환경:
Ubuntu 12.04.4 LTS x86_64 / Xeon E5640 @ 2.67Ghz / 6 core / 4G
redis 2.8.7 x86_64
이번에 해외에 게임을 새로 퍼블리싱 하는데 CCU를 1분마다 체크해달라고 한다. 그런데 기존 코드를 크게 고치기엔 부담이 있어서 그냥 redis instance를 하나 더 띄워서 글로벌 키를 다 걸고 EXPIRE를 걸어서 DBSIZE만 반환해주면 되겠다, 라는 생각이 들어서 새 인스턴스를 띄우게 되었다.
굵은 글씨가 커맨드이니 따라하려면 굵은 글씨에 집중하자.
1. 설정 파일 복사
기존의 설정 파일을 복사해야 한다. 기존의 설정 파일은 /etc/redis/에 들어있다. 새 Redis 개체는 'redis-cache-server'이며, 기존의 서버는 'redis-server'로 명명하겠다.
cd /etc/redis/
sudo cp redis.conf redis-cache.conf
sudo vi redis-cache.conf
2. 설정 파일 편집
복사한 redis-cache.conf 파일의 몇 가지를 수정해야 하는데 확인해 보자.별표가 찍혀있는 것은 해외 사이트에선 언급하진 않았지만 본인이 찝찝해서 바꾼 것.
- pidfile
pid가 기록될 폴더이다. 내 환경 기준으로 /var/run/redis/redis.pid로 되어있다. 이걸 /var/run/redis/redis-cache.pid로 수정했다.
- port
기본 port는 6379이다. 6380으로 수정한다.
- logfile
내 환경에서 /dev/null에 작성이 되어있는데, 특정 경로를 지정해도 된다. 귀찮아서 수정하지 않았다.
- dbfilename *
redis는 지정된 주기마다 데이터의 내용을 파일에 기록한다. 그 파일을 설정하는 것인데. 기본 이름은 redis.rdb인데, redis-cache.rdb로 수정한다.
- dir *
현재 /var/lib/redis 로 되어있는데, 영 찝찝해서 /var/lib/redis-cache로 설정했다.
3. 폴더 생성 및 권한 설정
활동할 폴더를 설정해 주었으니 폴더를 생성해 주어야한다.
sudo mkdir /var/lib/redis-cache
sudo chown redis.redis /var/lib/redis-cache
4. init 스크립트 작성
새 redis 개체를 구동시키기 위한 스크립트를 작성한다. 여기에 붙여넣기엔 이쁘지 않아서 gist에 링크를 참고하도록 한다. 파일명은 redis-cache-server로 했다.
/etc/init.d/redis-cache-server
경로에 파일을 생성했다.
https://gist.github.com/anonymous/3759a0849276b8582000
본인이 수정을 해야 할 때 참고해야 할 부분은 아래와 같다
sudo vi /etc/init.d/redis-cache-server
- DAEMON_ARGS
service daemon에 들어갈 설정 파일의 경로이다. 상단에서 복사해서 수정한 파일의 경로를 적으면 된다.
- NAME
새로 올릴 redis instance의 이름을 기재하면 된다. 왠만하면 shell과 이름을 같게 하면 좋을 것 같다.
- DESC
새로 올릴 redis instance의 설명을 기재하면 된다. 귀찮아서 같게 적는다.
- PIDFILE
redis-cache.conf에 적은 pid 파일의 경로를 적어준다.
그 후에, 실행 권한을 부여하기 위해
sudo chmod +x /etc/init.d/redis-cache-server
를 실행한다.
5. 설정 파일 배포 및 실행 테스트
update-rc.d 를 통하여 설정 파일을 배포한다.
sudo update-rc.d /etc/init.d/redis-cache-server defaults
를 입력한 후에
sudo /etc/init.d/redis-cache-server
를 실행해서 구동에 실패했다면 위의 내용을 다시 확인해 올려본다. 구동에 성공했다면(별다른 말이 없다면)
redis-cli -p 6380
을 통해서 cli 접근이 되는지 확인하고 사용해보자.
뭐 순조롭게 잘 돌아가고 있는 것 같다.