使用方法
- 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
暂时没有写完,待后续完善