diff --git a/install.sh b/install.sh index 641d040..54192fb 100644 --- a/install.sh +++ b/install.sh @@ -1,49 +1,53 @@ #!/bin/sh -device=lo + +role= +device= +slaveof_ip= +slaveof_port= MASTER=/home/mesasoft/redis_master/ SLAVE_MASTER=/home/mesasoft/redis_global_slave_master/ SLAVE=/home/mesasoft/redis_global_slave/ +function get_card_by_ip() +{ + echo `ifconfig -a | grep -B 1 $1 | head -n1 | awk -F":" '{print $1}'` +} -function redis_master +function redis_master() { cp -r redis_master /home/mesasoft/ - cp redis-master-daemon.service /usr/lib/systemd/system/ cp redis-master.service /etc/systemd/system/ - systemctl enable redis-master-daemon.service systemctl enable redis-master.service systemctl daemon-reload sed -i "s/bind 127.0.0.1/bind `ifconfig $device | grep netmask | awk '{print $2}'`/g" $MASTER/redis_master.conf sed -i "s/127.0.0.1/`ifconfig $device | grep netmask | awk '{print $2}'`/g" $MASTER/reset_redis4maat.sh - chmod 777 $MASTER/redis_master_daemon - systemctl start redis-master-daemon + systemctl start redis-master sleep 5 + sed -i 's/ +//g' $MASTER/reset_redis4maat.sh chmod 777 $MASTER/reset_redis4maat.sh cd $MASTER/; ./reset_redis4maat.sh; cd - } -function redis_slave_master +function redis_slave_master() { cp -r redis_global_slave_master /home/mesasoft/ - cp redis-global-slave-master-daemon.service /usr/lib/systemd/system/ cp redis-global-slave-master.service /etc/systemd/system/ sed -i "s/bind 127.0.0.1/bind `ifconfig $device | grep netmask | awk '{print $2}'`/g" $SLAVE_MASTER/redis_global_slave_master.conf sed -i "s/slaveof 10.0.6.202 6379/slaveof $1 $2/g" $SLAVE_MASTER/redis_global_slave_master.conf - systemctl enable redis-global-slave-master-daemon.service systemctl enable redis-global-slave-master.service systemctl daemon-reload - chmod 777 $SLAVE_MASTER/redis_global_slave_master_daemon - systemctl start redis-global-slave-master-daemon + systemctl start redis-global-slave-master } -function redis_slave +function redis_slave() { cp -r redis_global_slave /home/mesasoft/ for((i=6380; i<=6389;i++)) @@ -51,30 +55,83 @@ function redis_slave mkdir $SLAVE$i/ -p cp $SLAVE/redis_global_slave.conf $SLAVE$i/redis$i.conf sed -i "s/bind 127.0.0.1/bind `ifconfig $device | grep netmask | awk '{print $2}'`/g" $SLAVE$i/redis$i.conf - sed -i "s/slaveof 127.0.0.1 6379/slaveof $1 $2/g" $SLAVE$i/redis$i.conf + if [[ -z $1 ]]; then + sed -i "s/slaveof 127.0.0.1 6379/slaveof `ifconfig $device | grep netmask | awk '{print $2}'` 6379/g" $SLAVE$i/redis$i.conf + else + sed -i "s/slaveof 127.0.0.1 6379/slaveof $1 $2/g" $SLAVE$i/redis$i.conf + fi sed -i "s/port 6379/port $i/g" $SLAVE$i/redis$i.conf sed -i "s/redis_6379.pid/`echo "redis_$i.pid"`/g" $SLAVE$i/redis$i.conf done + sed -i 's/ +//g' $SLAVE/r2 + sed -i 's/ +//g' $SLAVE/redis_global_slave_daemon + chmod 777 $SLAVE/r2 chmod 777 $SLAVE/redis_global_slave_daemon cd $SLAVE; ./r2; cd - } -function redis_help + +function redis_help() { - echo "mode: master/slave_master/slave" - echo "master ./install.sh eno1 master" - echo "slave_master ./install.sh eno1 slave_master redis_ip redis_port" - echo "slave ./install.sh eno1 slave redis_ip redis_port" + echo "-r|--role):" + echo " master/slave_master/slave" + echo "-d|--device:" + echo " network card" + echo "-i|--slaveof_ip:" + echo " slaveof ip" + echo "-p|--slaveof_port:" + echo " slaveof port" + echo "-I|--iplist:" + echo " iplist" + echo "" + echo "*********************************************************************************" + echo "* master *" + echo "* ./install.sh -r master -d eth0 *" + echo "* slave_master *" + echo "* ./install.sh -r slave_master -d eth0 -i 192.168.18.128 -p 6379 *" + echo "* ./install.sh -r slave -i 192.168.18.128 -p 6379 -I iplist *" + echo "* slave *" + echo "* ./install.sh -r slave -d eth0 -i 192.168.18.128 -p 6379 *" + echo "* ./install.sh -r slave -i 192.168.18.128 -p 6379 -I iplist *" + echo "* ./install.sh -r slave -I iplist *" + echo "*********************************************************************************" } -if [[ $# -lt 2 ]];then - redis_help - exit 0 -else - device=$1 -fi + +while getopts ":r:d:i:p:I:" ARGS +do + case $ARGS in + r|--role) + role=$OPTARG + ;; + d|--device) + device=$OPTARG + ;; + i|--redis-ip) + slaveof_ip=$OPTARG + ;; + p|--redis-port) + slaveof_port=$OPTARG + ;; + I|--iplist) + iplist=$OPTARG + while read ip + do + device=`get_card_by_ip $ip` + if [[ ! -z "$device" ]] ; then + break; + fi + done < $iplist + ;; + --) + shift + break ;; + esac +done if [[ `locate redis-server | grep /usr/local/bin/redis-server | wc -l` -lt 1 ]]; then tar zxvf redis-3.2.9.tar.gz @@ -82,17 +139,19 @@ if [[ `locate redis-server | grep /usr/local/bin/redis-server | wc -l` -lt 1 ]]; mkdir /home/mesasoft/ -p fi -SLAVEOF_IP=$3 -SLAVEOF_PORT=$4 -case $2 in +case $role in master) - redis_master $MASTER + redis_master ;; slave_master) - redis_slave_master $SLAVEOF_IP $SLAVEOF_PORT + redis_slave_master $slaveof_ip $slaveof_port ;; slave) - redis_slave $SLAVEOF_IP $SLAVEOF_PORT + if [[ -z "$slaveof_ip" ]] || [[ -z "$slaveof_port" ]]; then + redis_slave + else + redis_slave $slaveof_ip $slaveof_port + fi ;; *) redis_help @@ -100,3 +159,4 @@ case $2 in esac rm -rf redis-3.2.9 +#cat -v install.sh | tr -d '^M' > 111.sh diff --git a/redis-global-slave-master.service b/redis-global-slave-master.service index 672736a..78d6385 100644 --- a/redis-global-slave-master.service +++ b/redis-global-slave-master.service @@ -7,7 +7,7 @@ After=network.target Type=simple ExecStart=/usr/local/bin/redis-server /home/mesasoft/redis_global_slave_master/redis_global_slave_master.conf RestartSec=10 -On-failure=always +Restart=always [Install] Alias=redis-global-slave diff --git a/redis-global-slave.service b/redis-global-slave.service index 09a559e..58136a3 100644 --- a/redis-global-slave.service +++ b/redis-global-slave.service @@ -7,7 +7,7 @@ After=network.target Type=simple ExecStart=/usr/local/bin/redis-server /home/mesasoft/redis_global_slave/redis_global_slave.conf RestartSec=10 -On-failure=always +Restart=always [Install] Alias=redis-global-slave diff --git a/redis-master.service b/redis-master.service index f739547..3508f63 100644 --- a/redis-master.service +++ b/redis-master.service @@ -7,7 +7,7 @@ After=network.target Type=simple ExecStart=/usr/local/bin/redis-server /home/mesasoft/redis_master/redis_master.conf RestartSec=10 -On-failure=always +Restart=always [Install] WantedBy=multi-user.target diff --git a/redis_global_slave/r2 b/redis_global_slave/r2 index 4c5c433..a719ffd 100644 --- a/redis_global_slave/r2 +++ b/redis_global_slave/r2 @@ -1,3 +1,3 @@ #!/bin/sh -killall redis_global_slave_daemon +kill -9 `ps xaf | grep redis_global_slave_daemon | grep -v grep | awk '{print $1}'` ./redis_global_slave_daemon &> /dev/null & diff --git a/redis_global_slave/redis_global_slave_daemon b/redis_global_slave/redis_global_slave_daemon index 9e74672..f0b3995 100644 --- a/redis_global_slave/redis_global_slave_daemon +++ b/redis_global_slave/redis_global_slave_daemon @@ -5,7 +5,7 @@ while [ 1 ]; do do port_alive=`netstat -antlp | grep $i | wc -l` if [[ $port_alive -lt 1 ]]; then - cd ./$i/; taskset -c 3-20 redis-server redis$i.conf; cd - + cd ./$i/; redis-server redis$i.conf; cd - echo program crashed, restart at `date +"%w %Y/%m/%d, %H:%M:%S"` >> RESTART.log fi done