#!/usr/bin/env bash
#redis集群一键安装脚本
if [ $# -ne 6 ];then
echo "please input ./redis-cluster-install.sh -n 10 -p 6001 -a 123456"
echo "-n redis集群的节点个数"
echo "-p 节点起始侦听端口号"
echo "-a redis密码"
exit 0
fi
if [ "$(($2%2))" -ne 0 ] || [ $2 < 6 ] ;then
echo "redis集群的节点个数必须设置6个以上"
exit
fi
cd ~/
#下载并编译redis
wget https://download.redis.io/releases/redis-6.2.6.tar.gz
tar xzf redis-6.2.6.tar.gz
cd redis-6.2.6
make
mkdir bin
cp redis.conf bin/redis.conf
cp src/redis-cli bin/redis-cli
cp src/redis-server bin/redis-server
cp src/redis-sentinel bin/redis-sentinel
cp src/redis-check-aof bin/redis-check-aof
cp src/redis-check-rdb bin/redis-check-rdb
cp src/redis-benchmark bin/redis-benchmark
sed -i 's/daemonize no/daemonize yes/g' redis.conf
sed -i 's/#cluster-enabled yes/cluster-enabled yes/g' redis.conf
sed -i 's/protected-mode yes/protected-mode no'
sed -i 's/bind 127.0.0.1 -::1/bind 0.0.0.0/g' redis.conf
#密码设置
sed -i "s/# requirepass foobared/requirepass $6/g" redis.conf
sed -i "s/# masterauth <master-password>/masterauth $6/g" redis.conf
cd ~/
mkdir redis-cluster
cd redis-cluster
cp redis-6.2.6/src/redis-cli redis-cli
host=""
for i in $(seq 1 $2)
do
dir=`echo $i | awk '{printf("%02d\n",$0)}'`
mkdir $dir
cp -r redis-6.2.6/bin/ $dir
#修改端口号
sed -i "s/port 6379/port $(($4+$i-1))/g" $dir/redis.conf
sed -i "s/logfile \"\"/logfile \"$dir/redis.log\"/g" $dir/redis.conf
host+="127.0.0.1:$(($4+$i-1)) "
#启动单个redis节点实例
$dir/redis-server $dir/redis.conf
done
#部署集群
./redis-cli --cluster create $host --cluster-replicas 1 -a $6
#删除下载的redis
cd ~/
rm -rf redis-6.2.6
rm -rf redis-6.2.6.tar.gz
将以上代码保存为 redis-cluster-install.sh文件并执行