所以我正在测试redis集群。我有一个有 3 个主机和 3 个从机的设置。现在,如果一个节点面临硬故障(主节点和从节点都出现故障),集群仍然可以正常工作,除非故障节点服务的哈希槽。现在,在测试这样的场景时,我看到对这些哈希槽服务的键进行的读/写操作失败并出现异常,这很好(我正在使用 jedis 顺便说一句)。但是,如果我使用 redis 集群作为缓存,我希望这些哈希槽由其他节点提供服务。该实用程序中似乎不存在此功能redis-trib
。
我无法重新分片集群以移动这些哈希槽,./redis-trib.rb reshard
因为[ERR] Not all #{ClusterHashSlots} slots are covered by nodes.
. 我也无法从集群中删除节点,因为./redis-trib.rb del-node
失败了[ERR] Node #{node} is not empty! Reshard data away and try again.
。那么,最好的方法是什么,以处理我无法启动我的原始节点但希望那些哈希槽由其他节点提供服务的场景(假设我什至可以在旧节点上丢失数据)?理想情况下,例如能够删除该节点(集群中的主节点和从节点,并将这些哈希槽分配给其他节点)。