第一个是自动化配置redis主从模式、哨兵模式、集群模式的shell脚本:
#!/bin/bash
1)配置redis主从模式
2)配置redis哨兵模式
3)配置redis集群模式
read -p "输入你的选择(1-3):" op
zcfz(){
cd /etc/redis/conf
#生成redis配置文件。
for i in {6379..6381};do cp ./redis.conf ${i}.conf;done
#修改监听ip
for i in {6379..6381};do sed -i "s/bind 127.0.0.1/bind 192.168.201.5/" ${i}.conf;done
#关闭保护设置
for i in {6379..6381};do sed -i "s/protected-mode yes/protected-mode no/" ${i}.conf;done
#修改监听端口
for i in {6380..6381};do sed -i "s/port 6379/port ${i}/" ${i}.conf;done
#开启守护进程
for i in {6379..6381};do sed -i "s/daemonize no/daemonize yes/" ${i}.conf;done
#指定pid存放目录
for i in {6379..6381};do sed -i "s#pidfile /var/run/redis_6379.pid#pidfile /etc/redis/run/redis_${i}.pid#" ${i}.conf;done
#指定运行日志文件
for i in {6379..6381};do sed -i "s#logfile /var/log/redis/redis.log#logfile /etc/redis/log/${i}.log#" ${i}.conf;done
#指定存储数据的位置
for i in {6379..6381};do sed -i "s#dir /var/lib/redis#dir /etc/redis/data/#" ${i}.conf;done
#配置slave角色文件
for i in {6380..6381};do sed -i "s/# slaveof <masterip> <masterport>/slaveof 192.168.201.5 6379/" ${i}.conf;done
#配置master角色文件
sed -i "s/# min-slaves-to-write 3/min-slaves-to-write 2/" 6379.conf
sed -i "s/# min-slaves-max-lag 10/min-slaves-max-lag 10/" 6379.conf
}
sb(){
cd /etc/redis/conf
#生成redis配置文件。
for i in {6382..6384};do cp ./redis.conf ${i}.conf;done
#修改监听ip
for i in {6382..6384};do sed -i "s/bind 127.0.0.1/bind 192.168.201.5/" ${i}.conf;done
#关闭保护设置
for i in {6382..6384};do sed -i "s/protected-mode yes/protected-mode no/" ${i}.conf;done
#修改监听端口
for i in {6382..6384};do sed -i "s/port 6379/port ${i}/" ${i}.conf;done
#开启守护进程
for i in {6382..6384};do sed -i "s/daemonize no/daemonize yes/" ${i}.conf;done
#指定pid存放目录
for i in {6382..6384};do sed -i "s#pidfile /var/run/redis_6379.pid#pidfile /etc/redis/run/redis_${i}.pid#" ${i}.conf;done
#指定运行日志文件
for i in {6382..6384};do sed -i "s#logfile /var/log/redis/redis.log#logfile /etc/redis/log/${i}.log#" ${i}.conf;done
#指定存储数据的位置
for i in {6382..6384};do sed -i "s#dir /var/lib/redis#dir /etc/redis/data/#" ${i}.conf;done
#配置slave角色文件
for i in {6383..6384};do sed -i "s/# slaveof <masterip> <masterport>/slaveof 192.168.201.5 6379/" ${i}.conf;done
#配置master角色文件
sed -i "s/# min-slaves-to-write 3/min-slaves-to-write 2/" 6382.conf
sed -i "s/# min-slaves-max-lag 10/min-slaves-max-lag 10/" 6382.conf
#
#生成哨兵配置文件
for i in {26379..26381};do cp ./redis-sentinel.conf ${i}.sentinel.conf;done
#修改监听ip
for i in {26379..26381};do sed -i "s/port 26379/bind 192.168.201.5 \nport ${i}/" ${i}.sentinel.conf;done
#修改监听主机ip地址、端口及从机数量
for i in {26379..26381};do sed -i "s/sentinel monitor mymaster 127.0.0.1 6379 2/sentinel monitor mymaster 192.168.201.5 6382 2/" ${i}.sentinel.conf;done
#修改日志存储位置
for i in {26379..26381};do sed -i "s#logfile /var/log/redis/sentinel.log#logfile /etc/redis/log/${i}.sentinel.log \ndaemonize yes#" ${i}.sentinel.conf;done
}
jq(){
cd /etc/redis/conf
#生成redis配置文件。
for i in {6385..6390};do cp ./redis.conf ${i}.conf;done
#修改监听ip
for i in {6385..6390};do sed -i "s/bind 127.0.0.1/bind 192.168.201.5/" ${i}.conf;done
#关闭保护设置
for i in {6385..6390};do sed -i "s/protected-mode yes/protected-mode no/" ${i}.conf;done
#修改监听端口
for i in {6385..6390};do sed -i "s/port 6379/port ${i}/" ${i}.conf;done
#开启守护进程
for i in {6385..6390};do sed -i "s/daemonize no/daemonize yes/" ${i}.conf;done
#指定pid存放目录
for i in {6385..6390};do sed -i "s#pidfile /var/run/redis_6379.pid#pidfile /etc/redis/run/redis_${i}.pid#" ${i}.conf;done
#指定运行日志文件
for i in {6385..6390};do sed -i "s#logfile /var/log/redis/redis.log#logfile /etc/redis/log/${i}.log#" ${i}.conf;done
#指定存储数据的位置
for i in {6385..6390};do sed -i "s#dir /var/lib/redis#dir /etc/redis/data/#" ${i}.conf;done
#生成集群配置
for i in {6385..6390};do echo -e "cluster-enabled yes \ncluster-config-file nodes-${i}.conf \ncluster-node-timeout 15000" >> ${i}.conf;done
#启动服务
for i in {6385..6390};do redis-server ${i}.conf;done
#节点加入集群
for i in {6386..6390};do redis-cli -h 192.168.201.5 -p 6385 cluster meet 192.168.201.5 $i;done
#分槽,同时也规划master节点
redis-cli -h 192.168.201.5 -p 6385 cluster flushslots
redis-cli -h 192.168.201.5 -p 6386 cluster flushslots
redis-cli -h 192.168.201.5 -p 6387 cluster flushslots
redis-cli -h 192.168.201.5 -p 6385 cluster addslots {0..5461}
redis-cli -h 192.168.201.5 -p 6386 cluster addslots {5462..10922}
redis-cli -h 192.168.201.5 -p 6387 cluster addslots {10923..16383}
#建立主从关系
node1=$(redis-cli -h 192.168.201.5 -p 6385 cluster nodes |awk -F ' ' /6385/'{print $1}')
redis-cli -h 192.168.201.5 -p 6388 cluster replicate $node1
node2=$(redis-cli -h 192.168.201.5 -p 6385 cluster nodes |awk -F ' ' /6386/'{print $1}')
redis-cli -h 192.168.201.5 -p 6389 cluster replicate $node2
node3=$(redis-cli -h 192.168.201.5 -p 6385 cluster nodes |awk -F ' ' /6387/'{print $1}')
redis-cli -h 192.168.201.5 -p 6390 cluster replicate $node3
}
case $op in
1)
zcfz
;;
2)
sb
;;
3)
jq
;;
*)
echo "输入失败"
esac
#杀死所有reidis进程
#for i in {`netstat -anptu |awk /redis/'{print $NF}'|awk -F '/' '{print $1}'`};do kill $i;done
第二个是redis服务的启停脚本
#!/bin/bash
read -p '请输入redis服务端口:' port
ml="/etc/redis/"
if
[ -f $ml'conf'/$port'.conf' ]; then
if
[ "$1" = "start" ]; then
redis-server $ml'conf'/$port'.conf'
elif
[ "$1" = "stop" ]; then
cat $ml'/run/redis_'$port'.pid' &> /dev/null
if [ $? != 0 ]; then
echo 未启动此服务,不用关闭......
else
tar zcvf $ml'data/'$port.rdb-$(date +%s).tar.gz $ml'data/'$port'.rdb' &> /dev/null
redis_pid=$(cat $ml'run/redis_'$port'.pid')
kill $redis_pid
fi
elif
[ "$1" = "restart" ]; then
cat $ml'run/redis_'$port'.pid' &> /dev/null
if [ $? = 0 ]; then
tar zcvf $ml'data/'$port.rdb-$(date +%s).tar.gz $ml'data/'$port'.rdb' &> /dev/null
redis_pid=$(cat $ml'run/redis_'$port'.pid')
kill $redis_pid &&
redis-server $ml'conf/'$port'.conf'
else
redis-server $ml'conf/'$port'.conf'
fi
else
echo "USEAGE: $0 start | stop | restart"
fi
else
echo 配置文件不存在
fi