K8s集群中的Redis故障转移

时间:2020-03-03 21:42:51

标签: kubernetes redis failover

我正在尝试使Redis故障转移在具有工作程序节点故障方案的Kubernetes中工作。我有一个由一个主节点和两个工作节点组成的K8s集群。主节点不调度Pod。 Redis的清单表明,在一个有状态集中有一个主实例和一个从属实例,在另一个有状态集中有3个哨兵。清单具有亲和力,可以控制要在单独的工作程序节点上调度的Pod。如果我耗尽了具有主实例和一个标记的工作节点,则故障转移将像冠军一样工作。

但是,如果有 2 个与主实例一起被淘汰的哨点,则不会选举任何主节点,并且会在剩余的工作节点报告中重新启动这两个哨点:{{1} }。日志消息中的IP地址是以前的从服务器的IP地址(我希望将其提升为新的主服务器)。

是否有一些巫术可以完成这项工作?这是有效的群集配置吗?不太确定应该怎么看才能了解正在发生的事情。

1 个答案:

答案 0 :(得分:1)

您想要的是PodDisruptionBudget。这将使自愿迁离至少不会破坏事情。除此之外,您还可以使用严格的反关联性来强制将Pod安排在不同的节点上。但是,如果同时丢失两个节点,Sentinels可能会解除同步,则故障仍然可能发生。这是为什么大部分不再使用Redis Sentinel来支持集群模式的原因。