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