使用Redis Sentinel支持从属复制的奴隶?

Kyl*_*ndt 6 redis redis-sentinel

我们有两个数据中心,每个数据中心都有两个redis实例.通常它们被复制为链.

NY1 (Master) --> NY2 (Slave) --> CO1 (Slave) --> CO2 (Slave)

NY是纽约,CO是科罗拉多州,我们的备份数据中心.为了节省WAN上的带宽,我们不希望CO1 CO2连接到NY1.相反,我们想要一种链配置,其中只有一个从属设备直接连接到主设备,而其他设备都是"奴隶的奴隶".

可以使用Sentinel维护这种复制布局吗?或者所有奴隶都必须是主人的奴隶,而不是奴隶的奴隶?

Ada*_*all 1

目前,Sentinel 无法实现此类设置,因为 Sentinel 会重写所有受监控 Redis 系统的配置。

例如,如果您按照您所描述的方式设置系统并让哨兵监视所有主机,那么如果主服务器发生故障并强制进行故障转移,则每个 Redis 主机都将被重新配置。其中一个副本(其中任何一个)将成为新的主副本,其他副本将成为新主副本的副本。当旧主服务器重新上线时,它将被重新配置为新主服务器的副本。

不过,一般来说,您可以让 Redis 按照您想要的方式工作。通过将 config 值设置为副本,您可以根据需要拥有任意数量的副本副本replicaof

就我个人而言,我仍然会使用 Sentinel 来监视主服务器和“主要”副本(从主服务器本身复制的副本)。这可能会导致主要副本之一成为新的主副本,因此我将启用通知选项。这告诉哨兵在发生故障转移时调用脚本。在该脚本中,您可以发送电子邮件、点击 Slack webhook 或执行任何其他您想用它执行的操作。当我得到它时,我会手动将主机重新配置回我想要的格式,但使用新的主机。这样做会很痛苦,但我仍然可以自动进行主副本和主要副本的故障转移,这样我的应用程序将继续工作。