下面是linux 安装redis的shell脚本,如果是从服务器把role改成2即可。 #!/usr/bin/env bash # ---------------------------------------- # Functions: onekey install redis sentinel # Auther: denglianyong # ---------------------------------------- # syntx check # define some variables #redis_sentinel_ip=`ifconfig | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'`
redis_sentinel_ip=192.168.210.3 sentinel_port=8001 redis_port=6379 redis_sentinel_dir=/data/redis-sentinel/$sentinel_port redis_dir=/usr/local/redis version=4.0.1 role=1 #1:master 2:slave master_ip=192.168.210.3 password="pfnl0bdh9wlhafpv"
install_redis(){ #redis_pid_dir=/var/run/redis redis_log=/var/log/redis #redis_rdb_aof_dir=/var/lib/redis # #[ -d $redis_pid_dir ] || mkdir $redis_pid_dir [ -d $redis_log ] || mkdir $redis_log [ -d $redis_sentinel_dir ] || mkdir -p $redis_sentinel_dir
# upgrade os && install dev tools #yum update -y && yum groupinstall -y "Development Tools" && yum -y install tcl
# download latest redis if [ ! -f /usr/local/src/redis-$version.tar.gz ]; then wget http://download.redis.io/releases/redis-$version.tar.gz -P /usr/local/src fi cd /usr/local/src && tar zxvf redis-$version.tar.gz -C /usr/local/ cd /usr/local/ && ln -sv redis-$version redis && cd redis && make && taskset -c 1 sudo make test
# config sysctl.conf echo 512 > /proc/sys/net/core/somaxconn sysctl vm.overcommit_memory=1
# config three redis #mkdir -pv $redis_sentinel_dir/ # copy excute command \cp $redis_dir/src/{redis-server,redis-sentinel} $redis_sentinel_dir/
# copy redis.conf & sentinel.conf \cp $redis_dir/{redis.conf,sentinel.conf} $redis_sentinel_dir/
# config redis.conf # example by /data/redis-sentinel/9000/redis.conf sed -i "s/bind 127.0.0.1/bind $redis_sentinel_ip/g" $redis_sentinel_dir/redis.conf sed -i "s/port 6379/port $redis_port/g" $redis_sentinel_dir/redis.conf
sed -i "s/# requirepass foobared/requirepass $password/g" $redis_sentinel_dir/redis.conf sed -i 's/protected-mode\ yes/protected-mode\ no/g' $redis_sentinel_dir/redis.conf sed -i 's/daemonize no/daemonize yes/g' $redis_sentinel_dir/redis.conf sed -i 's/appendonly no/appendonly yes/g' $redis_sentinel_dir/redis.conf #sed -i 's/logfile ""/logfile \"\/data\/redis-sentinel\"/g' $redis_sentinel_dir/redis.conf sed -i "s/logfile \"\"/logfile \/var\/log\/redis\/redis.log/g" $redis_sentinel_dir/redis.conf #sed -i 's/dir \.\//dir \/data\/redis-sentinel\//g' $redis_sentinel_dir/redis.conf #sed -i 's/appendonly.aof/\/data\/redis-sentinel\/appendonly.aof/g' $redis_sentinel_dir/redis.conf # rename config for secuirty #rename-command SHUTDOWN REDIS_SHUTDOWN #rename-command FLUSHDB REDIS_FLUSHDB #rename-command FLUSHALL REDIS_FLUSHALL #rename-command KEYS REDIS_KEYS echo 'rename-command CONFIG REDIS_CONFIG' >> $redis_sentinel_dir/redis.conf echo 'rename-command FLUSHALL REDIS_FLUSHALL' >> $redis_sentinel_dir/redis.conf echo 'rename-command FLUSHDB REDIS_FLUSHDB' >> $redis_sentinel_dir/redis.conf
if [ $role -eq 2 ];then echo "slaveof $master_ip $redis_port" >> $redis_sentinel_dir/redis.conf fi # ln redis-server & redis-sentinel cp $redis_dir/src/{redis-server,redis-sentinel,redis-cli} /usr/local/sbin/
# start redis cd $redis_sentinel_dir/ ./redis-server redis.conf
# watch redis master/slave status ps -ef | grep redis $redis_dir/src/redis-cli -h $redis_sentinel_ip -p $redis_port -a $password info replication sleep 5
# config sentinel.conf & start sentinel 1 # example by /data/redis-sentinel/9000/sentinel.conf sed -i 's/\# protected-mode no/protected-mode no/g' $redis_sentinel_dir/sentinel.conf sed -i "s/port 26379/port $sentinel_port/g" $redis_sentinel_dir/sentinel.conf sed -i "s#127.0.0.1 6379#$redis_sentinel_ip 6379#g" $redis_sentinel_dir/sentinel.conf sed -i "s#dir /tmp#dir $redis_sentinel_dir#g" $redis_sentinel_dir/sentinel.conf echo "daemonize yes" >> $redis_sentinel_dir/sentinel.conf
# start sentinel $redis_sentinel_dir/redis-sentinel $redis_sentinel_dir/sentinel.conf
# watch sentinel status ps -ef | grep redis $redis_dir/src/redis-cli -h $redis_sentinel_ip -p $sentinel_port sentinel masters }
start(){ cd $redis_sentinel_dir/ ./redis-server redis.conf
# start sentinel $redis_sentinel_dir/redis-sentinel $redis_sentinel_dir/sentinel.conf }
stop(){ ps aux| grep 'redis' |grep -v 'grep' |awk '{print $2}'|xargs kill -9 }
usage() { echo "Usage: ./redis.sh [install|start|stop ]" exit 1 } if [ "$1" = "install" ]; then install_redis elif [ "$1" = "start" ]; then start elif [ "$1" = "stop" ]; then stop else usage fi