我正在尝试让redis故障转移在kubernetes中工作,并使用工作节点故障场景。我有一个k8s集群,它由一个主节点和两个工作节点组成。主节点不安排pod。redis的清单是这样的:在一个有状态集中有一个主示例和一个从示例,在另一个有状态集中有3个sentinel。清单具有引导pod在单独的工作节点上调度的亲缘关系。如果我排出一个具有主示例和一个sentinel的worker节点,故障转移就像champ一样工作。
但是,如果有2个sentinel随master示例一起被逐出,则不会选择任何master,并且在剩余的worker节点上重新启动的2个sentinel将报告: -failover-abort-no-good-slave master jnpr-ipb-redis-masters 10.244.1.209 7380
. 日志消息中的ip地址是前从机的ip地址(我希望它升级到新的主机)。
有没有一点魔法能让这个工作?这是有效的群集配置吗?不太清楚我应该看什么来了解发生了什么。
1条答案
按热度按时间mfpqipee1#
你想要的是预算。这将使自愿驱逐至少不会破坏东西。除此之外,您还可以使用硬反亲和力来强制将pod安排在不同的节点上。不过,如果同时丢失两个节点,哨兵就有可能失步。这就是为什么redis sentinel大部分不再被用于支持集群模式的原因。