当运行单个实例redis时,我可以使用“slave of”来创建一个(或许多我喜欢的)这个redis节点的只读副本。
使用redis群集时,我将数据拆分为Partitons(Masters),并为每个分区创建一个slave。
是否可以将此群集视为单个实例,并将“Slave”奴隶连接到此群集,该群集将保留群集中所有数据的副本,而不仅仅是连接节点的分区?
如果使用redis群集不可能,使用sentinel时这可能是一个有效的解决方案吗?
我们目前的问题: 我们正在使用“奴隶”功能和keepalived在主服务器中断时故障转移我们的redis实例。
但我们有很多“奴隶”奴隶连接到故障转移设置的虚拟IP,以提供缓存数据。 现在,每次系统故障转移时(出于维护原因,例如),当所有连接的从站必须与新主站重新同步数据时,所有连接的从站都有最多30秒的时间。
我们已经使用了所有可能的redis配置参数,但无法使这个同步时间更短(例如,依赖于复制后退日志,在故障转移后新主服务器上不可用)。
任何想法?
答案 0 :(得分:0)
这是一个非常好的文档: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群集模式下,您需要使用所有节点的复制。
此致
答案 1 :(得分:0)
好吧,我刚读过这篇文章:
https://seanmcgary.com/posts/how-to-build-a-fault-tolerant-redis-cluster-with-sentinel
作者使用Redis Cluster的单个主服务器,每个主服务器有2个从服务器,而不是一个服务器,他让Redis Sentinel负责在主服务器关闭时选择主服务器。
您可以使用此设置来查看Master的选举是否快速发生。当它发生时,客户将由奴隶服务,并且不应经历停机。