【问题标题】:Cluster Failover集群故障转移
【发布时间】:2014-06-14 03:19:58
【问题描述】:

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

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

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

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

谢谢, 桑杰·莫哈尼

【问题讨论】:

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

标签: redis cluster-computing failover


【解决方案1】:

在只有主节点的集群中,如果一个节点发生故障,数据就会丢失。因此无法重新分片,因为无法将数据(哈希槽)迁移出故障节点。

为了在主节点发生故障时保持集群正常工作,您需要从节点(每个主节点一个)。这样,当一个主服务器发生故障时,它的从服务器故障转移(成为具有相同数据副本的新主服务器)。

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

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

【讨论】:

    猜你喜欢
    • 2021-02-15
    • 2017-08-31
    • 1970-01-01
    • 1970-01-01
    • 2021-10-13
    • 2020-06-09
    • 2020-02-14
    • 2020-06-16
    相关资源
    最近更新 更多