Redis集群搭建与使用
大型开发中redis的使用必不可全,最近自己也试了下,倒是挺好玩的。由于环境搭建好多都是复制与修改,也就直接改为shell命令傻瓜操作了,写的皮毛请见谅。
Redis下载
这里使用的redis版本,因window版本的集群搭建需要rubby环境(因为最新的也就3多,5版本前好像都不支持cli搭建集群)。
以下是相关需要。
这里说下一linux安装操作
$ wget https://download.redis.io/releases/redis.tar.gz
$ tar xzf redis.tar.gz
$ cd redis
$ make
集群搭建
redis启动方式中,有一种可以通过redis-server命令 +配置文件启动redis服务。
$ redis-server redis.conf
要想搭建redis集群需要先开启一定数量的redis服务,再通过cli工具将开启的redis服务器构建为集群。集群推荐都是6+台。随后只用把配置文件分别复制到指定配置目录,启动redis-server逐个启动即可。(redis-server在make编译后的src文件目录中)
shell构建伪集群
#!/bin/bash
redis_dir="./src/redis-server";
begin_port=$1;
time=$2;
#########环境搭建#################
##############################
echo "环境搭建中";
for((i=1;i<=${time};i++));
do
real_port="${begin_port}${i}";
real_dir="./${begin_port}${i}";
target_conf="${real_dir}/redis.conf";
echo ${mydir};
mkdir ${real_dir};
conf_txt="
daemonize yes
port ${real_port}
bind 0.0.0.0
dir ./
cluster-enabled yes
cluster-config-file nodes-${real_port}.conf
cluster-node-timeout 5000
appendonly yes
protected-mode no";
touch ${target_conf};
echo -e ${conf_txt} >> ${target_conf};
cp ./src/redis-server ${real_dir};
done
echo "环境搭建成功"
######集群运行#######
#############################
echo "redis服务器集群启动"
for((j=0;j<=$2;j++));
do
echo "${j}号已经启动";
real_server="./${begin_port}${j}/redis-server";
real_conf="./${begin_port}${j}/redis.conf";
echo ${real_server} ${real_conf};
${real_server} ${real_conf};
done
echo "集群启动成功"
#########集群配置##############
#############################
echo "集群配置中"
ip=127.0.0.1;
str="";
for((k=1;k<=time;k++));
do
str="${str} ${ip}:${begin_port}${k}";
done
echo ${str};
cmd="./src/redis-cli --cluster create ${str} --cluster-replicas 1";
echo ${cmd};
${cmd};
在src的同级目录创建一个shell命令,这个程序将会在同级目录下创建已端口为名字的文件夹,文件夹中存放着对应的配置文件,然后自动启动集群。
使用如下(我的shell文件为my.sh):
sh ./my.sh 700 6(集群数量)
// 700为端口号的一部分,与启动的集群编号拼接为端口
// 开启的集群数量
运行后看见如下,代表集群创建成功。
Can I set the above configuration? (type 'yes' to accept):
bug
在云端配置的过程中,我曾一直连接不上,因为云服务端口是白名单,隐藏端口没开,一直报错。所以需要开启集群端口,否则集群会链接不上。redis有一个集群总线端口,在redis端口上+1000。