我知道我在问一些关于集群故障转移的非常明显的问题。
我在 redis.io 上读到,如果任何主集群节点发生故障,它将影响其他主节点,直到从属节点接管为止。在我的结构中,我没有定义任何奴隶,只与 3 个主人一起工作。
我正在考虑修改 redis-trib.rb 文件,这将删除有缺陷的服务器并启动包含其他 2 个节点的集群。我对一些事情感到困惑,
1) 重新分片
Could not possible until failed server goes live
2) 创建集群的最少 3 个节点限制
As per bit understanding, redis-trib.rb not allowing me to create cluster for two nodes There might be some solution in code file :)
3) 使用事件节点重新创建新结构的自动方式
As programmer point of view, I'm searching something automatic for my system. Something that trigger one command when Redis Cluster fails some tasks happens internally. like
- Shutdown all other redis cluster servers
- Remove nodes-[port].conf files from all cluster nodes folder
- Start redis cluster servers
- Run "redis-trib.rb create ip:port ip:port"
我只是想尽量减少管理工作 :)。 否则我需要在这里实现一些其他算法“数据一致性”。
如果你们有任何解决方案或想法,请分享。
谢谢, 桑杰·莫纳尼
最佳答案
在只有主节点的集群中,如果一个节点发生故障,数据就会丢失。因此无法重新分片,因为无法将数据(哈希槽)迁移出故障节点。
为了在主节点发生故障时保持集群正常工作,您需要从节点(每个主节点一个)。这样,当一个 master 发生故障时,它的 slave 会进行故障转移(成为具有相同数据副本的新 master)。
redis-trib.rb 脚本不处理少于 3 个主节点的集群创建,但是在 redis-cluster 中,集群可以是任何大小(至少一个节点)。
因此,添加从节点可以认为是您问题的自动解决方案。
关于redis - 集群故障转移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39773968/