1、支持网卡名不一致批量安装

2、修改系统服务,支持非正常退出后自重启
This commit is contained in:
liuxueli
2018-08-10 11:08:22 +08:00
parent 52bacd89a9
commit 4bc120c507
6 changed files with 95 additions and 35 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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 &

View File

@@ -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