redis部署脚本(单机集群均可)

使用方法

1. 将redis安装包解压到待安装位置

2. 创建脚本(vi deploy.sh)将下面的代码复制到脚本中

3.执行 sh deploy.sh(执行前先修改配置中的变量,使之符合当前环境)

#/bin/bash/
#默认是只有一台备机,多台备机请自己配置
####################变量定义#################
##执行脚本前修改参数

##read -p "输入redis开放的端口 : " Port
## 此处为redis的安装包路径
redis_path="/usr/local/redis/redis-5.0.3"
##此处为redis开放的端口
redis_port="6379"
## redis的密码
redis_pass="123465"
## 是否集群
redis_cluster='false'
##备机端口
redis_cluster_port=6380
## 是否是集群的最后一台
redis_last='false'
##是否部署完成后立即启动服务
redis_start='false'

#默认是只有一台备机,多台备机请自己配置
redis_mount='1'
####################变量定义#################
#进入安装目录
cd $redis_path
##如过配置文件已备份则不再进行编译安装
buckFile='redis.conf.buck'
if [ ! -f "$buckFile" ]; then
### 执行编译安装
make & make install
##
## 拷贝配置文件
fi
echo -e "redis配置文件已备份不进行编译安装\n"
cp ./redis.conf ./redis.conf.buck
if [ $? -eq 0 ]
then
echo “备份配置文件执行成功”
else
echo “备份配置文件执行失败”
fi
##修改配置文件
#关闭ip绑定 69行
sed  -i  's/^bind 127.*/#bind 127.0.0.1/gi' ./redis.conf
## 修改端口
sed  -i  "s/^port.*/port ${redis_port}/gi" ./redis.conf
#设置后台运行  136行
sed  -i  's/^daemonize.*/daemonize yes/gi' ./redis.conf
#关闭保护模式 88行
sed  -i  's/^protected-mode.*/protected-mode no/gi' ./redis.conf
#设置密码123456   507行
sed  -i  "s/^# requirepass.*/requirepass ${redis_pass}/gi" ./redis.conf

##集群配置
if [ $redis_cluster == 'true' ];then
#开启集群  838行
sed  -i  's/^# cluster-enabled.*/cluster-enabled yes/gi' ./redis.conf
#设置超时时间   852行
sed  -i  's/^# cluster-node-timeout.*/cluster-node-timeout 15000/gi' ./redis.conf
#设置pid   158行
sed  -i  "s/^pidfile.*/pidfile /var/run/redis_$redis_port.pid/gi" ./redis.conf
#设置配置文件    846行
%s/^# cluster-config-file.*/cluster-config-file nodes-$redis_port.conf/gi
##创建集群配置文件存放文件夹
mkdir -p ./cluster
cp ./redis.conf ./cluster/redis_$redis_port.conf
cp ./redis.conf ./cluster/redis_$redis_cluster_port.conf
sed  -i  "s/$redis_port/$redis_cluster_port/g"  ./cluster/redis.conf
fi
echo -e "*****************************************************\n配置文件修改完成\n 开始输出修改项"
if [ $redis_cluster == 'true' ];then
echo -e "集群部署\n"

echo -e "是否开启集群\n"
sed  -n -e "/^# cluster-enabled.*/p" ./redis.conf
sed  -n -e "/^cluster-enabled.*/p" ./redis.conf

echo -e "设置超时时间\n"
sed  -n -e "/^# cluster-node-timeout.*/p" ./redis.conf
sed  -n -e "/^cluster-node-timeout.*/p" ./redis.conf

echo -e "设置pid\n"
sed  -n -e "/^pidfile.*/p" ./redis.conf

echo -e "设置配置文件\n"
sed  -n -e "/^# cluster-config-file.*/p" ./redis.conf
sed  -n -e "/^cluster-config-file.*/p" ./redis.conf
else
echo -e "单机部署\n"
##开启redis备机端口
firewall-cmd --zone=public --add-port=$redis_cluster_port/tcp --permanent
fi
echo -e "关闭ip绑定\n"
sed  -n -e "/^# bind 127.*/p" ./redis.conf
sed  -n -e "/^bind 127.*/p" ./redis.conf

echo -e "修改端口\n"
sed  -n -e "/^port.*/p" ./redis.conf

echo -e "设置后台运行\n"
sed  -n -e "/^daemonize.*/p" ./redis.conf

echo -e "关闭保护模式\n"
sed  -n -e "/^protected-mode.*/p" ./redis.conf


echo -e "设置密码\n"
sed  -n -e "/^# requirepass.*/p" ./redis.conf
sed  -n -e "/^requirepass.*/p" ./redis.conf
###############################开启防火墙端口###################################
##开启redis端口
firewall-cmd --zone=public --add-port=$redis_port/tcp --permanent
firewall-cmd --reload
#################################启动redis服务######################################
if [ $redis_start == 'true' ];then

if [ $redis_cluster == 'true' ];then
####启动redis主机和备机
./src/redis-server ./cluster/redis_$redis_port.conf
./src/redis-server ./cluster/redis_$redis_cluster_port.conf

else
##启动单机
./src/redis-server ./redis.conf
fi
echo -e "##########################################\n查询redis运行进程\n"
ps -ef | grep redis-server
fi
echo -e "redis服务已启动\n"


##############################创建redis集群#########################################

##是否集群
if [ $redis_cluster == 'true' ];then
###是否是最后一个节点
if [ $redis_last == 'true' ];then
src/redis-cli --cluster create -a $redis_pass --cluster-replicas 1 10.0.90.42:6379 10.0.90.42:6380 10.0.90.43:6379 10.0.90.43:6380 10.0.90.44:6379 10.0.90.44:6380



read -p "输入集群节点数(主机+备机):" count

# 在当前目录下创建文本文件temp,如果文件存在则清空文件
$(> temp)
##使用-n不换行
echo -n "./src/redis-cli --cluster create -a $redis_pass --cluster-replicas $redis_mount  " >> temp
for((i=1;i<=$count;i++));
do 
read -p "输入第$i个集群节点(ip:端口) : " ipPort
echo -n "$ipPort " >> temp
done 
# h2取tempfile文本里的字符串
h2=$(cat temp)


echo $h2
read -p "确认输入的节点ip和端口无误(输入Y/N) : " yn

if [ $yn == 'Y' ];then
eval $h2
fi
fi
fi

暂时没有写完,待后续完善

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值