Redis 运维shell 工具
介绍
在Redis 集群运维过程中,经常需要做一些重复性工作,因为Redis 无中心设计,这就需要在每个节点中执行相同命令,对于这些重复性劳动工作完全可以通过shell处理,降低运维难度,减少工作量,以下是我在工作冲总结的脚本,仅供大家参考。
工具集
1. 集群健康状态检测
新建脚本redis_tool.sh,然后执行
1
| sh redis_tool.sh clusterStatus 127.0.0.1 7000
|
2. 移除fail节点
新建脚本redis_tool.sh,然后执行
1
| sh redis_tool.sh forget 127.0.0.1 7000
|
脚本内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
| #!/bin/sh
function clusterStatus(){ instans=`redis-cli -c -h $1 -p $2 cluster nodes|grep -v fail|awk '{print $2}'` for var in ${instans[@]}; do echo $var host=${var%:*} port=${var#*:} redis-cli -c -h $host -p $port cluster info |grep cluster_state:fail done }
function forget(){ instans=`redis-cli -c -h $1 -p $2 cluster nodes|grep -v fail|awk '{print $2}'` for var in ${instans[@]}; do echo $var host=${var%:*} port=${var#*:} failnodes=`redis-cli -c -h $host -p $port cluster nodes|grep fail|awk '{print $1}'` for nodeid in ${failnodes[@]}; do echo $nodeid redis-cli -c -h $host -p $port cluster forget $nodeid done
done }
# main start case $1 in clusterStatus) echo "check redis cluster cluster_state..." clusterStatus $2 $3; ;; forget) echo "forget redis fail nodes ..." forget $2 $3; ;; *) echo "Usage: the options [clusterStatus|forget]" ;; esac
|