集群故障转移

3

我知道我在询问集群故障转移方面的问题非常明显。

我在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”

我只是想尽量减少管理工作 :). 否则,我需要在这里实现其他算法“数据一致性”。

如果你们中的任何人有任何解决方案或想法,请分享。

谢谢, Sanjay Mohnani


我不太清楚您使用Redis Cluster想要实现什么目标。您是想要高可用性吗?如果您通过Cluster运行分片并且失去了一个没有从节点的节点,那么数据就会被永久删除。如果您不介意数据的丢失,为什么还要运行Cluster呢?对于高可用性,您可以简单地运行主/从服务器并进行故障转移。 - The Real Bill
我们正在寻找一个类似于Memcached的分布式系统。我们使用Redis,因为它具有广泛的存储类型(字符串、散列、集合等)。所以我们需要一些分布式的东西,但不是单点故障类型的。希望这对你来说有意义。 - Sanjay Mohnani
1个回答

2
在仅有主节点的集群中,如果一个节点出现故障,则数据将会丢失。因此不可能进行resharding(重新分片),因为无法将数据(哈希槽)从已故节点迁移出来。
为了使集群在主节点失败时继续工作,您需要从节点(每个主节点一个)。这样,当主节点失败时,其从节点将接管(成为具有相同数据副本的新主节点)。
redis-trib.rb脚本无法处理少于3个主节点的集群创建,但在redis-cluster中,集群可以具有任意大小(至少一个节点)。
因此,添加从节点可以被视为您问题的自动解决方案。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接