Tendis存储版支持使用Redis语法创建Tendis集群

编译

参考编译

实例部署

配置文件必须确保cluster-enabled为yes,其他集群相关配置,详看配置参数,或者参考启动实例

  1. ./bin/tendisplus ./tendis.conf.30000
  2. ./bin/tendisplus ./tendis.conf.30001
  3. ./bin/tendisplus ./tendis.conf.30002
  4. ./bin/tendisplus ./tendis.conf.30003
  5. ./bin/tendisplus ./tendis.conf.30004
  6. ./bin/tendisplus ./tendis.conf.30005

如上所示,拉起了6个tendis进程,端口号分别是30000~30005

集群部署

拉起tendis服务进程之后,就可以像使用类似Redis命令一样来建立tendis集群.

节点握手

连接30000节点meet其他所有节点

  1. shell> redis-cli -p 30000
  2. 127.0.0.1:30000> cluster meet 127.0.0.1 30001
  3. 127.0.0.1:30000> cluster meet 127.0.0.1 30002
  4. 127.0.0.1:30000> cluster meet 127.0.0.1 30003
  5. 127.0.0.1:30000> cluster meet 127.0.0.1 30004
  6. 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指令

  1. shell> redis-cli -p 30000 cluster addslots {0..5461}
  2. OK
  3. shell> redis-cli -p 30002 cluster addslots {5462..10922}
  4. OK
  5. shell> redis-cli -p 30004 cluster addslots {10923..16383}
  6. OK

上面的命令将16384个slots平均的分配给3个节点。

等待若干秒后,可以通过cluster info指令查看集群状态。

  1. 127.0.0.1:30000> cluster info
  2. cluster_state:ok
  3. cluster_slots_assigned:16384
  4. cluster_slots_ok:16384
  5. ...

此时可以发现集群状态已经是OK。

主从复制

这里将3个实例分配了slots,剩余三个实例可以作为他们的slave,使用cluster replicate命令

  1. shell> redis-cli -p 30001 cluster replication 4233f87b9899774feb71bcef1cfeec964de0535b
  2. OK
  3. shell> redis-cli -p 30003 cluster replication b072bdd0f3d6cf75edcee1345da0d33f59177da0
  4. OK
  5. shell> redis-cli -p 30005 cluster replication c980e1e23d20e9169aca0cbe7751d8a76b73859f
  6. OK

这样,就可以搭建一个三主三从的集群

  1. 127.0.0.1:30000> cluster nodes
  2. 20f8df612b19c879c92149458856ec08af50d459 127.0.0.1:30001@16374 slave 4233f87b9899774feb71bcef1cfeec964de0535b 0 1606964904000 5 connected
  3. 4233f87b9899774feb71bcef1cfeec964de0535b 127.0.0.1:30000@16379 myself,master - 0 1606964903000 0 connected 0-5461
  4. f9d8c3f6679badc6366087d498f005849ad3b14d 127.0.0.1:30003@16375 slave b072bdd0f3d6cf75edcee1345da0d33f59177da0 0 1606964901000 4 connected
  5. b072bdd0f3d6cf75edcee1345da0d33f59177da0 127.0.0.1:30002@16378 master - 0 1606964902996 1 connected 5462-10922
  6. c980e1e23d20e9169aca0cbe7751d8a76b73859f 127.0.0.1:30004@16377 master - 0 1606964904598 2 connected 10923-16383
  7. cd3c5da6415d5c1d125961e0f78badd162c7f7d3 127.0.0.1:3005@16376 slave c980e1e23d20e9169aca0cbe7751d8a76b73859f 0 1606964894000 3 connected

部署Tendis集群的方式,基本和Redis Cluster一致。