在运行单实例redis时,我可以使用"slave of“来创建这个redis节点的只读副本(或者我喜欢的数量)。
当使用redis集群时,我将我的数据分成partition (Master),并且可以为每个分区创建一个slave。
是否可以将该集群视为单个实例,并将"slave的从属“连接到该集群,该集群将保存集群中所有数据的副本,而不仅仅是连接节点的分区?
如果不能使用redis集群,在使用sentinel时,这可能是一个可行的解决方案吗?
我们当前的问题:我们正在使用"slave of“功能和keepalived一起在主服务器宕机时对redis实例进行故障转移。
但是,我们有许多“从”从设备连接到故障转移设置的虚拟IP,以提供缓存数据。现在,每次系统故障转移(出于维护原因,例如)所有连接的从机都有长达30秒的超时,当它们必须与新的主机重新同步其数据时。
我们已经尝试了所有可能的redis配置参数,但是不能让这个同步时间更短(例如,通过依赖于在故障转移后在新的主服务器上不可用的复制积压)。
有人有什么想法吗?
发布于 2016-09-02 22:34:25
这里有一个非常好的文档:http://redis.io/presentation/Redis_Cluster.pdf和http://fr.slideshare.net/NoSQLmatters/no-sql-matters-bcn-2014 (幻灯片9)或更好的https://www.javacodegeeks.com/2015/09/redis-clustering.html
如果您想要Redis集群模式下的slave,则需要使用所有节点的复制。
致以敬意,
发布于 2016-09-05 10:13:27
好吧,我刚刚读了这篇文章:
https://seanmcgary.com/posts/how-to-build-a-fault-tolerant-redis-cluster-with-sentinel
作者在Redis集群中使用了一个单一的主机,每个主机有2个从,而不是一个,他让Redis Sentinel在主机宕机时负责从主机到主机的选举。
您可以使用此设置来查看Master的选举是否快速发生。在这种情况下,客户端将由从属服务器提供服务,并且不会发生停机。
https://stackoverflow.com/questions/39288470
复制相似问题