Redis 群集故障转移

Redis 群集故障转移,redis,cluster-computing,failover,Redis,Cluster Computing,Failover,我知道我在问一些关于集群故障转移的非常明显的问题 我在redis.io上读到,如果任何主集群节点出现故障,它将影响其他主节点,直到从节点接管为止。在我的结构中,我没有定义任何奴隶,只是与3个主人一起工作 我正在考虑修改redis-trib.rb文件,该文件将删除有缺陷的服务器,并用其他2个节点启动集群。我对一些事情感到困惑 1) 再硬化 在出现故障的服务器启动之前,无法执行此操作 2) 创建群集的最少3个节点限制 根据bit的理解,redis-trib.rb不允许我为两个节点创建集群 代码文件中

我知道我在问一些关于集群故障转移的非常明显的问题

我在redis.io上读到,如果任何主集群节点出现故障,它将影响其他主节点,直到从节点接管为止。在我的结构中,我没有定义任何奴隶,只是与3个主人一起工作

我正在考虑修改redis-trib.rb文件,该文件将删除有缺陷的服务器,并用其他2个节点启动集群。我对一些事情感到困惑

1) 再硬化

在出现故障的服务器启动之前,无法执行此操作

2) 创建群集的最少3个节点限制

根据bit的理解,redis-trib.rb不允许我为两个节点创建集群 代码文件中可能有某种解决方案:)

3) 使用活动节点自动重新创建新结构

从程序员的角度来看,我正在为我的系统搜索一些自动的东西。当Redis Cluster失败时触发一个命令的某些操作会在内部发生。像

  • 关闭所有其他redis群集服务器
  • 从所有群集节点文件夹中删除节点-[port].conf文件
  • 启动redis群集服务器
  • 运行“redis-trib.rb创建ip:port ip:port”
我只是想尽量减少管理工作:)否则,我需要在这里实现一些其他算法“数据一致性”。

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

谢谢,
Sanjay Mohnani

在只有主节点的集群中,如果节点出现故障,数据将丢失。因此,由于无法将数据(哈希槽)从发生故障的节点迁移出去,因此不可能进行重新硬存储

要在主节点出现故障时保持集群工作,需要从节点(每个主节点一个)。这样,当主设备发生故障时,其从设备将进行故障切换(成为具有相同数据副本的新主设备)

redis-trib.rb脚本不处理少于3个主节点的集群创建,但是在redis集群中,集群可以是任意大小(至少一个节点)


因此,添加从属节点可以被视为问题的自动解决方案。

在只有主节点的集群中,如果节点出现故障,数据将丢失。因此,由于无法将数据(哈希槽)从发生故障的节点迁移出去,因此不可能进行重新硬存储

要在主节点出现故障时保持集群工作,需要从节点(每个主节点一个)。这样,当主设备发生故障时,其从设备将进行故障切换(成为具有相同数据副本的新主设备)

redis-trib.rb脚本不处理少于3个主节点的集群创建,但是在redis集群中,集群可以是任意大小(至少一个节点)


因此,添加从属节点可以被视为自动解决您的问题。

我不清楚您使用Redis Cluster到底希望实现什么。您想要高可用性吗?如果您通过集群运行切分并丢失一个没有从属节点的节点,那么数据就消失了。如果您不担心数据丢失,为什么还要运行集群呢?对于HA,您可以简单地通过故障切换运行主/从系统。我们正在搜索类似于Memcached的分布式系统。我们使用redis是因为它有大量的存储类型(字符串、散列、集合等等)。所以我们需要分布式但不是单点失效类型的东西。希望这对你有意义。我不清楚你到底想用Redis集群实现什么。您想要高可用性吗?如果您通过集群运行切分并丢失一个没有从属节点的节点,那么数据就消失了。如果您不担心数据丢失,为什么还要运行集群呢?对于HA,您可以简单地通过故障切换运行主/从系统。我们正在搜索类似于Memcached的分布式系统。我们使用redis是因为它有大量的存储类型(字符串、散列、集合等等)。所以我们需要分布式但不是单点失效类型的东西。希望这对你有意义。