redis集群启动脚本

安装之类的准备工作可以参考redis官网介绍:redis文档
这里主要分享两个脚本(拿了大佬的东西,@fengyong7723131的原文,一开始没成功,自己经过实践做了一些更改)

干货开始

按照官网的指引做好准备工作以后的文件结构是这样的:

piao@DESKTOP-13G5OT3:~/redis-cluster$ ll
total 8
drwxrwxr-x 1 piao piao  512 Aug  4 15:51 node_7000/
drwxrwxr-x 1 piao piao  512 Aug  4 15:42 node_7001/
drwxrwxr-x 1 piao piao  512 Aug  4 15:42 node_7002/
drwxrwxr-x 1 piao piao  512 Aug  4 17:36 node_7003/
drwxrwxr-x 1 piao piao  512 Aug  4 17:36 node_7004/
drwxrwxr-x 1 piao piao  512 Aug  4 17:36 node_7005/

其中与官网不同的地方有:

不需要单独复制redis-server到集群文件夹,可以直接使用包管理软件(apt,yum)安装redis来调用redis-server

节点中的配置文件加了一个pid文件配置,为了方便停止集群:

port 7000
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
pidfile redis.pid

启动/停止节点

#!/bin/bash
cluster_home=/home/piao/redis-cluster
cluster_dir=`ls`
#node节点的个数
node_size=0
#node节点数组
nodes=[]
#信息文件
infoFile="infoFile"
#pid文件
pidFile="pidFile"
#创建infoFile和pidFile文件
touch infoFile
touch pidFile
 
#启动以node开头的文件夹下的redis节点,条件一:node开头,条件二:必须是文件夹
function starCluster(){
echo "" > $infoFile
echo "========================端口号:======================="
for node in $cluster_dir
 do
  echo ${node}
  if [ -d $node ]
   then 
    echo "${node}是文件夹"
  else
    echo "${node}不是文件夹"
  fi
  if [ "${node:0:5}" = "node_" ]
   then
      echo "starting $node"
      node_size=`expr ${node_size} + 1`
      cd $cluster_home/$node
      redis-server redis.conf >> $infoFile& 
  fi
done
echo ""
echo "======================================================"
echo "===================有${node_size}个redis节点====================="
echo "======================================================"
}
 
#关闭所有节点
function stopCluster(){
#cat $infoFile | grep "PID" |  awk '{ infoSize=length($0);infoIndex=index($0,"PID");print substr($0,infoIndex+4,infoSize) }' > $pidFile
echo "===================redis集群的pid:===================="
for node in $cluster_dir
 do
  if [ "${node:0:5}" = "node_" ]
   then
    echo -e "`cat ${node}/redis.pid`, \c" 
    kill -9 `cat ${node}/redis.pid` &
  fi
done  
echo ""
echo "======================================================"
}
 
case $1 in
start) starCluster
;;
stop) stopCluster
;;
esac

启动集群:

#!/bin/bash
cluster_home=/home/piao/redis-cluster/
cd $cluster_home
cluster_dir=`ls`
for node in $cluster_dir
do
  if [ "${node:0:5}" = "node_" ]
   then
	echo "清除$node"
	rm -rf $node/appendonly.aof $node/dump.rdb $node/nodes.conf
  fi
done
redis-cli --cluster create 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 --cluster-replicas 1

执行集群脚本后,需要手动输入yes

PS:使用Redis需要注意安全,服务器至少应该启用防火墙,Redis加上密码的话就更好了
Redis集群的密码似乎需要各个节点手动设置,可以在节点配置文件中加上

requirepass 123456

或者连接Redis后,使用如下命令配置:

127.0.0.1:7000 > config set requirepass 123456
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值