한서버에 여러개의 레디스를 실행 하는 경우 있습니다.
Script 통해 작업 하게 되시면 빠르게 실수없이 설치 할수 있습니다.
간략하게 정리 해봤습니다.
1. 레디스 설치
2. 레디스 설치 대상 파일로 관리 (레디스목록)
3. 레디스 목록 파일 기준으로 환경파일 및 RDB생성
4. 레디스목록 파일 내용을 redis start ,stop ,접속
Redis 환경설정
sysctl vm.overcommit_memory=1
/etc/redis/6379.conf
sed -i "s:protected-mode yes:protected-mode no:g" /etc/redis/6379.conf
sed -i "s:tcp-backlog 511:tcp-backlog 1024:g" /etc/redis/6379.conf
sed -i "s:logfile:#logfile:g" /etc/redis/6379.conf
sed -i "s:# syslog-enabled no:syslog-enabled yes:g" /etc/redis/6379.conf
sed -i "s:# syslog-ident redis:syslog-ident redis(6379):g" /etc/redis/6379.conf
sed -i "s:databases 16:databases 1:g" /etc/redis/6379.conf
자동재시작 환경파일 생성
vi /etc/init/redis_6379.conf
start on runlevel [!2345] # 시스템종료,리부팅일때 시작 서비시작
stop on runlevel [016] # 서비스 종료
respawn # 프로세스 죽으면 재시작
expect fork # 백그라운드 실행
limit nofile 50000 50000 # file open 갯수
레디스 시작
/opt/redis/bin/redis-server /etc/redis/6379.conf
레디스 멀티 실행을 위한 포트 정리 파일 생성
vi /etc/redis/redislist.txt
redis1,6379
redis2,6380
redis3,6380
etc/redis/redislist.txt 읽어서
삭제
while read file
do
RDBNAME=`echo $file|cut -d "," -f 1`
PORT=`echo $file|cut -d "," -f 2`
echo $PORT,$RDBNAME
rm -rf /var/lib/redis/$PORT*
rm /etc/redis/$PORT*.conf
rm /etc/init/redis\_$PORT*.conf
rm /var/run/redis\_$PORT*.pid
done < /etc/redis/redislist.txt
RDB,redis config, redis start config 파일생성
while read file
do
RDBNAME=`echo $file|cut -d "," -f 1`
PORT=`echo $file|cut -d "," -f 2`
echo $PORT,$RDBNAME
mkdir /var/lib/redis/$PORT\-$RDBNAME
cp -f /etc/redis/6379.conf /etc/redis/$PORT\-$RDBNAME.conf
cp -f /etc/init/redis_6379.conf /etc/init/redis_$PORT\-$RDBNAME.conf
sed -i "s:pidfile /var/run/redis_6379.pid:pidfile /var/run/redis_$PORT-$RDBNAME.pid:g" /etc/redis/$PORT\-$RDBNAME.conf
sed -i "s:/var/lib/redis/6379:/var/lib/redis/$PORT-$RDBNAME:g" /etc/redis/$PORT\-$RDBNAME.conf
sed -i "s:syslog-ident redis(6379):syslog-ident redis($PORT-$RDBNAME):g" /etc/redis/$PORT\-$RDBNAME.conf
sed -i "s/6379/$PORT/g" /etc/redis/$PORT\-$RDBNAME.conf
sed -i "s/dump.rdb/$RDBNAME.rdb/g" /etc/redis/$PORT\-$RDBNAME.conf
sed -i "s:6379.conf:$PORT\-$RDBNAME.conf:g" /etc/init/redis_$PORT\-$RDBNAME.conf
done < /etc/redis/redislist.txt
redis start (/etc/redis/redislist.txt)
while read file
do
RDBNAME=`echo $file|cut -d "," -f 1`
PORT=`echo $file|cut -d "," -f 2`
echo $PORT,$RDBNAME
start redis_$PORT\-$RDBNAME
done < /etc/redis/redislist.txt
ps -ef|grep redis
redis stop (/etc/redis/redislist.txt)
while read file
do
RDBNAME=`echo $file|cut -d "," -f 1`
PORT=`echo $file|cut -d "," -f 2`
echo $PORT,$RDBNAME
stop redis_$PORT\-$RDBNAME
done < /etc/redis/redislist.txt
ps -ef|grep redis
redis 접속 (/etc/redis/redislist.txt)
#rdb File Check
while read file
do
RDBNAME=`echo $file|cut -d "," -f 1`
PORT=`echo $file|cut -d "," -f 2`
echo $PORT,$RDBNAME
redis-cli -p $PORT save
ls /var/lib/redis/$PORT-*
done < /etc/redis/redislist.txt
for port in netstat -napolt|grep LISTEN|grep redis-server|grep -v tcp6|cut -d ":" -f 2|awk '{print $1}'; do echo "Redis instance port : $port";redis-cli -h 127.0.0.1 -p $port info|grep -e ^role -e ^master -e ^slave;echo " "; done