原生命令搭建redis cluster 分布式3主3从
1.准备节点
这里演示单机多部署(生产环境多机)首先准备6个节点分别是7000-7005端口
先配置7000端口
这里说明下cluster相关的配置
cluster-enabled表示该节点是否开启cluster模式
cluster-config-file 是生成本地cluster的一个配置文件
cluster-require-full-coverage 这个是说,如果集群中有一个节点挂掉,整个集群将不可用 默认yes 这里改成 no,即某节点挂掉,集群依然对外提供服务。
接着配置其他节点 (同7000)
接着启动所有节点
这里我们随便选择一个节点set数据,发现报了个错
这里因为我们未分配槽,集群是不可用的,可以输入cluster info命令看下集群的状态
2.节点握手
将节点配置启动后,接下来就要进行节点握手(meet操作)
在节点上执行cluster meet ip port 对集群中某节点进行握手操作
cluster nodes命令列出集群中所有节点发现6个,其中7000是master节点
再执行下cluster info命令观察:
两个节点都发现有6个节点,表名集群中所有节点都已经互通完毕。
3.分配槽
分配槽的命令是 cluster addslots 【slot】其中slot参数就是槽节点一次只能分配一个,如果我们要为7000节点分配0~5000这个范围的槽,要执行5000次命令,因此需要写一个shell脚本来完成分配槽:
start=$1
end=$2
port=$3
for slot in `seq ${start} ${end}`
do
echo "slot:${slot}"
redis-cli -p ${port} cluster addslots ${slot}
done
cluster一共有16384个槽(0-16383) 因此为了平均分配到3个节点(7000-7002是主,7003-7005是从),我们计划16384/3 也就是分别为 0~5461、5462~10922、三个范围。
接下来我们执行分配槽脚本:
sh addslots.sh 0 5461 7000
sh addslots.sh 5462 10922 7001
sh addslots.sh 10923 16383 7002
执行cluster nodes和cluster info查看,所有槽已经分配完毕。
这时候我们set一个值就成功了
4.配置主从
配置方式:在选择的从节点上执行 cluster replicate 【nodeId】,nodeId可以通过cluster nodes获得
执行完后看下节点状态,发现主从关系已经有了
输入cluster slots可以看到槽的分配以及主从
至此,原生手动安装方式演示完毕!