我知道我正在询问有关群集故障转移的非常明显的事情。
我在redis.io上读到,如果任何主集群节点发生故障,它将影响其他主节点,直到奴隶来负责。在我的结构中,我没有定义任何奴隶,只是与3个主人合作。
我正在考虑修改redis-trib.rb文件,该文件将删除缺陷服务器,并将启动其他2个节点的群集。我对一些事情感到困惑,
1)重新分析
在服务器出现故障之前无法实现
2)创建集群的最小3节点限制
根据位理解,redis-trib.rb不允许我为两个节点创建集群 代码文件中可能有一些解决方案:)
3)使用实时节点重新创建新结构的自动方式
作为程序员的观点,我正在为我的系统自动搜索一些东西。当Redis Cluster失败某些任务时,会触发一个命令。喜欢
- 关闭所有其他redis群集服务器
- 从所有群集节点文件夹中删除nodes- [port] .conf文件
- 启动redis群集服务器
- 运行" redis-trib.rb create ip:port ip:port"
我只想尽量减少管理工作:)。 否则我需要实现一些其他算法" Data Consistency"这里。
如果你们中的任何人有任何解决方案或想法,请分享。
谢谢, Sanjay Mohnani
答案 0 :(得分:1)
在仅包含主节点的群集中,如果节点发生故障,则数据将丢失。因此,不可能进行重新分片,因为无法将数据(散列槽)迁移出故障节点。
要在主服务器出现故障时保持群集正常工作,您需要从属节点(每个主节点一个)。这样,当主设备发生故障时,其从设备会进行故障转移(成为具有相同数据副本的新主设备)。
redis-trib.rb脚本不能处理少于3个主服务器的集群创建,但在redis-cluster中,集群可以是任意大小(至少一个节点)。
因此,添加从属节点可视为您问题的自动解决方案。