主机房部署了redis集群,并数据持久化。
问题:要求容灾机房能在主机房发生灾难并不可修复的情况下,容灾机房能在一定时间内承担起主机房的业务能力。如何保障容灾机房的redis集群数据跟主机房一致??如何操作??谢谢
主要看你采用集群的方式,如果是cluster,请参考
关于双活机房中cluster模式的组网,根据你的业务场景来决定。
如果redis的使用中并不处在核心链路上,完全当做cache来使用,且在击穿情况下有后续的数据库来支撑,可以放在同一机房内。
如果redis的使用在核心链路上,当做数据库来使用,在单侧机房部署,不能保证多机房环境下的多活。以双活机房为例,集群有A、a、B、b、C、c节点,A、B、C三个节点部署在甲机房,a、b、c三个节点部署在乙机房,甲乙两个机房使用波分线路进行大二层透传,能够使某一业务同时在某一都使用同一网段地址。基于redis本身,能够实现双数据副本模式,当甲机房单侧异常时,乙机房单侧接管,重新完成组网,提供服务。
如果是其他集群,请描述,我再补充
收起可以采用twemproxy的架构进行演进。
A地域部署proxy和redis实例(主),B地域部署proxy和redis实例(从),通过sentinel控制主从切换。
正常情况下A、B地域的proxy同时提供服务,将请求路由到A地域的redis节点;一旦A地域故障,可以通过redis实例的主从切换,实现B地域的接管。
当然proxy前面还有一层负载均衡,能够将用户请求平均负载到多个proxy上,并且能够判断proxy的存活。
由于redis是异步复制,数据的完全一致性肯定无法保障,但是redis作为缓存层,对数据库一致性要求没那么高。
收起我司采用的是redis原生态的集群方式,3个节点,每个节点启主端口6379,备端口6380,形成一个环路的集群提供给业务使用,业务需要数据持久化,有订单数据计数器永久保存在redis中。目前主备机房没有打通大二层。主备机房各搭了一套redis集群,主机房redis采用rsync方式同步到备机房redis的相应目录下。备机房需要承接业务时,启动redis即可。不知道还有没有更好的方式保障??
收起