之前建好了redis集群, 但没有找到集群重启的机制, 停电2次, 重新创建太麻烦, 于是写了个脚本辅助启动

redis的创建过程可以看:

http://www.cnblogs.com/wenbronk/p/6864390.html
http://www.cnblogs.com/wenbronk/p/6865914.html

然后, 直接放在父目录下就可以了

[wenbronk@localhost redis1]$ cat redis-cluster.sh
#!/bin/bash
# create by wenbronk at //
# redis集群管理脚本
PORTNUM=
PASS_WD=bd86d2ab-08e5-4ae0-87ce-06cc021336d0
REDIS_HOME=/opt/wenbronk_soft/redis/redis1
HOST1=192.168.50.202
PORT1=
PORT2=
PORT3=
PORT4=
PORT5=
PORT6=
HOSTS=($HOST1 $HOST1 $HOST1 $HOST1 $HOST1 $HOST1)
PORTS=($PORT1 $PORT2 $PORT3 $PORT4 $PORT5 $PORT6) BASE_DIR=(bin bin1 bin2 bin3 bin4 bin5)
declare -A HOST_GROUP # clean
if [ "$1" == "clean" ]
then
for direct in $REDIS_HOME/*
do
if [ -d "$direct" ]
then
echo $direct
rm -rf $direct/dump*
rm -rf $direct/nodes*
rm -rf $direct/appendonly*
sed -i '1{:a;N;'$n'!b a};$d;N;P;D' $direct/redis.conf fi
done
exit 0
fi #create
if [ "$1" == "create" ]
then
for direct in $REDIS_HOME/*
do
if [ -d "$direct" ]
then
$direct/redis-server $direct/redis.conf
PORTNUM=$((PORTNUM-1))
HOST_GROUP[$PORTNUM]=${HOSTS[$PORTNUM]}:${PORTS[$PORTNUM]}
fi
done
$REDIS_HOME/bin/redis-trib.rb create --replicas 1 ${HOST_GROUP[*]}
exit 0
fi #auth
if [ "$1" == "auth" ]
then
for direct in $REDIS_HOME/*
do
if [ -d "$direct" ];then
PORTNUM=$PORTNUM-1
$direct/redis-cli -c -h ${HOSTS[$PORTNUM]} -p ${PORTS[$PORTNUM]} config set masterauth $PASS_WD
$direct/redis-cli -c -a $PASS_WD -h ${HOSTS[$PORTNUM]} -p ${PORTS[$PORTNUM]} config set requirepass $PASS_WD
$direct/redis-cli -c -a $PASS_WD -h ${HOSTS[$PORTNUM]} -p ${PORTS[$PORTNUM]} auth $PASS_WD
$direct/redis-cli -c -a $PASS_WD -h ${HOSTS[$PORTNUM]} -p ${PORTS[$PORTNUM]} config rewrite
# $direct/redis-cli -c -h ${HOSTS[$PORTNUM]} -p ${PORTS[$PORTNUM]} exit
fi
done
exit 0
fi #stop
if [ "$1" == "stop" ]
then
pkill -9 redis
fi
exit 0 #help
if [ "$1" == "help" ]
then
echo "stop|clean|create|auth"
fi
exit 0

由于没有找到和shell交互的方式, 创建的时候需要输入一个yes, 所以吧集群创建和密码设置分开了

执行时, stop->clean->create->auth 即可实现

然后集群的统一启动脚本

开始想用spawn, 但找了半天没找到怎么循环使用, 所以需要在每个机器侠有个start-this.sh用于本机的redis管理

#!/bin/bash
# create by wenbronk at //
# redis 集群管理脚本 PORTNUM=
PASS_WD=bd86d2ab-08e5-4ae0-87ce-06cc021336d0
REDIS_HOME=/opt/redis
HOST1=redis-
HOST2=redis-
HOST3=redis-
PORT1=
PORT2= HOSTS=($HOST1 $HOST1 $HOST2 $HOST2 $HOST3 $HOST3)
PORTS=($PORT1 $PORT2 $PORT1 $PORT2 $PORT1 $PORT2)
BASEDIR=(bin- bin-)
declare -A HOSTGROUP case "$1" in #clean
clean)
for (( i=; i<${#HOSTS[@]}; i=i+))
do
ssh root@${HOSTS[$i]} "sh $REDIS_HOME/start-this.sh clean"
done
exit
;; #create
create)
for (( i=; i<${#HOSTS[@]}; i=i+))
do
ssh root@${HOSTS[$i]} "sh $REDIS_HOME/start-this.sh create"
HOSTGROUP[$i]=${HOSTS[$i]}:${PORTS[$i]}
i=$((i+))
HOSTGROUP[$i]=${HOSTS[$i]}:${PORTS[$i]}
done
$REDIS_HOME/bin/redis-trib.rb create --replicas ${HOSTGROUP[*]} ;; #auth
auth)
for (( i=; i<${#HOSTS[@]}; i=i+))
do
echo connect to ${HOST[$i]} at ${PORTS[$i]} and change passwd
$direct/redis-cli -c -h ${HOSTS[$i]} -p ${PORTS[$i]} config set masterauth $PASS_WD
$direct/redis-cli -c -a $PASS_WD -h ${HOSTS[$i]} -p ${PORTS[$i]} config set requirepass $PASS_WD
$direct/redis-cli -c -a $PASS_WD -h ${HOSTS[$i]} -p ${PORTS[$i]} auth $PASS_WD
$direct/redis-cli -c -a $PASS_WD -h ${HOSTS[$i]} -p ${PORTS[$i]} config rewrite done exit
;; #other
*)
echo "unsupport params!! please input stop|clean|create|auth as params_one"
exit
esac

start-this.sh

#!/bin/bash
# create by wenbronk at //
# redis cluster clean & create
REDIS_HOME=/opt/redis
HOSTIP=redis- case "$1" in
clean)
echo "connect to $HOSTIP"
for direct in $REDIS_HOME/*
do
if [ -d "$direct" ];then
rm -rf $direct/dump*
echo "rm $direct/dump*"
rm -rf $direct/nodes*
echo "rm $direct/nodes*"
rm -rf $direct/appendonly*
echo "rm $direct/appendonly*"
sed -i '1{:a;N;'$n'!b a};$d;N;P;D' $direct/redis.conf
echo "sed last 2 line at $direct/redis.conf"
fi
done
echo "logout from $HOSTIP"
exit 0
;; start)
echo "connect to $HOSTSIP"
for direct in $REDIS_HOME/*
do
if [ -d "$direct" ];then
echo "start redis $HOSTIP"
$REDIS_HOME/redis-server.sh $REDIS_HOME/redis.conf
fi
done
echo "logout from $HOSTSIP"
exit 0
;; esac

ps: 本脚本只用于redis集群的统一启动, 不用于搭建, 需要有预先搭建好的环境, 关于redis集群的搭建, 可以参考另一个博客:

http://www.cnblogs.com/wenbronk/p/6864390.html

redis-集群创建脚本的更多相关文章

  1. redis集群创建时报错:Sorry, can't connect to node

    1.redis集群创建时报错:Sorry, can't connect to node ip,端口等都配置正确的话,还需要将redis.conf文件中的密码注释掉    # requirepass 1 ...

  2. Redis哨兵集群创建脚本--v2

    1. 基础环境 操作系统版本  CentOS Linux release 7.6.1810 (Core) Docker 版本  19.03.11, build 42e35e61f3 Redis  版本 ...

  3. Redis集群创建和配置

    1.检查GCC是否安装,可以看看版本号 gcc -v 安装命令:yum install gcc-c++ 2.安装Ruby和Rubygems 如果有网的话,则通过yum命令进行安装,自动将关联的依赖包全 ...

  4. Redis集群创建报错

    Redis集群环境:och163/och164/och165 在执行如下脚本时报错: ./src/redis-trib.rb create 10.1.253.163: 10.1.253.164: 10 ...

  5. Redis哨兵集群创建脚本--v1

    基础环境 操作系统版本  CentOS Linux release 7.6.1810 (Core) Docker 版本  19.03.11, build 42e35e61f3 Redis  版本  3 ...

  6. redis 集群创建常见几个问题

    Redis配置集群遇到问题及解决方法   配置完所有主节点后,报" ERR Invalid node address specified" 由于Redis-trib.rb 对域名或 ...

  7. Redis学习总结(五)--Redis集群创建

    在之前我们讲到了主从,但是对于大数据量的场景下我们就需要用到集群了,让我们来了解下集群吧. 为什么需要集群 单机内存太小 redis最高可以达到10万/s 请求,如果超过该频率呢? 数据分布方式 数据 ...

  8. redis集群创建

    先参考文章 https://www.cnblogs.com/PatrickLiu/p/8458788.html https://blog.csdn.net/fengshizty/article/det ...

  9. redis集群+JedisCluster+lua脚本实现分布式锁(转)

    https://blog.csdn.net/qq_20597727/article/details/85235602 在这片文章中,使用Jedis clien进行lua脚本的相关操作,同时也使用一部分 ...

  10. redis 集群环境搭建-redis集群管理

    集群架构 (1)所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽. (2)节点的fail是通过集群中超过半数的节点检测失效时才生效. (3)客户端与redi ...

随机推荐

  1. 图片转化为pdf(转)

    方法1: 利用Adobe公司的Adobe Acrobat Professional进行转化.注意,一定是Professional版本的,Reader版本没有这个功能.  首先安装Adobe Acrob ...

  2. ubuntu18.04 编译安装 apache php

    1. apache apache 需要依赖几个模块:apr, apr-util, pcre,也分别源码安装. 1.1 编译安装 1.1.1 apr apr-util 下载地址:http://apr.a ...

  3. 【LeetCode】 Valid Sudoku

    Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules. The Sudoku board could be ...

  4. date(): It is not safe to rely on the system’s timezone settings.

    在执行php脚本时出现的错误: date(): It is not safe to rely on the system’s timezone settings.You are *required* ...

  5. EBS获取附件URL

    http://wenku.baidu.com/link?url=MnYX269RBqW9ZRh-4famwduhYq9As0-vsIyVPA7aqv64cdxxjZEOaEE1_KZ9SGjY9qCx ...

  6. unusedjs

    查看js的有效使用情况: https://github.com/gmetais/unusedjs Installation You need to open your console and writ ...

  7. [LeetCode 总结帖]: 链表专题

    链表在笔试面试中都是出镜率极高的一种数据结构. 由于链表具有结构简单,代码量较少,变化多,可以较为全面的考察应聘者的逻辑思考能力以及应变能力的特点,而备受面试官青睐. 在本节中,我将Leetcode中 ...

  8. xlsxwriter

    xlsxwriter是python中用来处理execl表格的库 参考

  9. pgAdmin4 汉化

  10. 《ASP.NET MVC 5 破境之道》:第一境 ASP.Net MVC5项目初探 — 第一节:运行第一个MVC5项目

    第一境 ASP.Net MVC5项目初探 — 第一节:运行第一个MVC5项目 创建一个MVC项目,是很容易的,大部分工作,VS都帮我们完成了.只需要按照如下步骤按部就班就可以了. 打开VS2017,选 ...