对集群进行重新分片+故障转移测试+添加删除节点(2-7)
昨天搭建了6个redis实例,3主3从,0,1,2是主。今天打开后发现主变成了2,3,4(是否自动选举master策略,待研究)。重新分片的时候必须打开所有master节点。 1.重新分片 从所有master中移1000个哈希槽到主节点7002中 [图片] 分片后结果: [图片] 7002节点中已经比其他节点总多出1000个哈西槽。执行分片完毕(手动,目前还没有实现自动) 2.故障转移测试 向7002(3个主节点之一)发送debug segfault命令,让这个主节点崩溃。
[图片] 明显可以看到7002mater变为fail,7005由原来的slave变成了master。这就是redis的故障转移主从代替。 3.添加/删除节点到集群 两种方式: 1.如果是主节点。险创建一个空节点,然后将某些哈希桶移到这个空节点里。 2.如果是从节点。需要将这个节点设置为集群中某个节点的复制品replica。 无论是哪个节点,都需要添加一个空节点。 实验新建7006节点 3.1.添加到集群里,主动成为主节点(./redis-trib.rb add-node 127.0.0.1:7006 127.0.0.1:7000) [图片] 检查集群节点(cluster nodes) [图片] 已经添加进去并接自动成为主节点,但是,他没有任何数据,也没有哈希槽。要给他分配哈希槽就用1.重新分片方法移动哈希槽。—-成为主节点 3.2 让它成为某个主节点的复制品-即变为从节点 cluster replicate 主节点ID [图片] 1:如果删除的节点是主节点,这里我们删除127.0.0.1:7006节点,这个节点有1000个哈希槽 首先要把节点中的哈希槽转移到其他节点中,最后一步,使用下面的命令把这个节点删除。 redis-trib.rb del-node 127.0.0.1:7006 127.0.0.1:7006 2:如果节点是从节点的,直接使用下面的命令删除即可。 redis-trib.rb del-node 127.0.0.1:7006 127.0.0.1:7006
明天研究redis监控功能实现方式~并测试。