Tendis存储版
支持使用Redis
语法创建Tendis集群
编译
参考编译
实例部署
配置文件必须确保cluster-enabled
为yes,其他集群相关配置,详看配置参数,或者参考启动实例
./bin/tendisplus ./tendis.conf.30000
./bin/tendisplus ./tendis.conf.30001
./bin/tendisplus ./tendis.conf.30002
./bin/tendisplus ./tendis.conf.30003
./bin/tendisplus ./tendis.conf.30004
./bin/tendisplus ./tendis.conf.30005
如上所示,拉起了6个tendis进程,端口号分别是30000~30005
集群部署
拉起tendis服务进程之后,就可以像使用类似Redis
命令一样来建立tendis集群.
节点握手
连接30000节点meet其他所有节点
shell> redis-cli -p 30000
127.0.0.1:30000> cluster meet 127.0.0.1 30001
127.0.0.1:30000> cluster meet 127.0.0.1 30002
127.0.0.1:30000> cluster meet 127.0.0.1 30003
127.0.0.1:30000> cluster meet 127.0.0.1 30004
127.0.0.1:30000> cluster meet 127.0.0.1 30005
分配slots
默认情况下,Tendis存储版
跟Redis
一样,将所有的数据映射到16384个slot中,每个key都会对应一个槽。只有把slot分配给了Tendis节点,Tendis节点才能响应与slot相关的命令,否则就会-MOVE
到其他节点。
分配slots可使用cluster add slots
指令
shell> redis-cli -p 30000 cluster addslots {0..5461}
OK
shell> redis-cli -p 30002 cluster addslots {5462..10922}
OK
shell> redis-cli -p 30004 cluster addslots {10923..16383}
OK
上面的命令将16384个slots平均的分配给3个节点。
等待若干秒后,可以通过cluster info
指令查看集群状态。
127.0.0.1:30000> cluster info
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
...
此时可以发现集群状态已经是OK。
主从复制
这里将3个实例分配了slots,剩余三个实例可以作为他们的slave,使用cluster replicate
命令
shell> redis-cli -p 30001 cluster replication 4233f87b9899774feb71bcef1cfeec964de0535b
OK
shell> redis-cli -p 30003 cluster replication b072bdd0f3d6cf75edcee1345da0d33f59177da0
OK
shell> redis-cli -p 30005 cluster replication c980e1e23d20e9169aca0cbe7751d8a76b73859f
OK
这样,就可以搭建一个三主三从的集群
127.0.0.1:30000> cluster nodes
20f8df612b19c879c92149458856ec08af50d459 127.0.0.1:30001@16374 slave 4233f87b9899774feb71bcef1cfeec964de0535b 0 1606964904000 5 connected
4233f87b9899774feb71bcef1cfeec964de0535b 127.0.0.1:30000@16379 myself,master - 0 1606964903000 0 connected 0-5461
f9d8c3f6679badc6366087d498f005849ad3b14d 127.0.0.1:30003@16375 slave b072bdd0f3d6cf75edcee1345da0d33f59177da0 0 1606964901000 4 connected
b072bdd0f3d6cf75edcee1345da0d33f59177da0 127.0.0.1:30002@16378 master - 0 1606964902996 1 connected 5462-10922
c980e1e23d20e9169aca0cbe7751d8a76b73859f 127.0.0.1:30004@16377 master - 0 1606964904598 2 connected 10923-16383
cd3c5da6415d5c1d125961e0f78badd162c7f7d3 127.0.0.1:3005@16376 slave c980e1e23d20e9169aca0cbe7751d8a76b73859f 0 1606964894000 3 connected
部署Tendis集群
的方式,基本和Redis Cluster
一致。