一种Redis主从架构的高可用解决方法及装置制造方法及图纸

技术编号:35839965 阅读:38 留言:0更新日期:2022-12-03 14:12
本申请公开了一种Redis主从架构的高可用解决方法及装置,方法包括:第一服务器判断初始主节点服务是否正常,若正常则查询其当前身份,若为主节点则判断其下是否存在Redis集群从节点,若不存在则判断第二服务器的Redis服务是否正常,若正常,设置第二服务器在Redis集群中的身份为从节点并将Redis数据进行同步;若初始主节点服务异常,获取Ping命令重试次数,若重试次数已达到目标次数则更新重试次数为零并判断第二服务器的Redis服务是否正常,若正常则将第二服务器对应的节点切换为新的主节点,将本机Nginx组件配置的数据转发地址修改为新的主节点的地址。方案适用于小型项目、能满足高可用要求。能满足高可用要求。能满足高可用要求。

【技术实现步骤摘要】
一种Redis主从架构的高可用解决方法及装置


[0001]本申请涉及网络安全
,尤其涉及一种Redis主从架构的高可用解决方法及装置。

技术介绍

[0002]Redis(Remote Dictionary Server)是一款开源的高性能的NoSQL数据库,它可以用作数据库、缓存和消息队列。为了满足开发市场需求,Redis支持单机、主从、哨兵、集群多种架构模式。
[0003]其中,主从架构主要应用于高并发场景,但现有的主从架构模式下的故障转移方案不适用于小型项目,采用现有的故障转移方案无法做到在一主一从两个节点之间自动切换以转移故障、无法对并发数据进行有效处理继而实现高可用。

技术实现思路

[0004]本申请实施例提供了一种Redis主从架构的高可用解决方法及装置。所述技术方案如下:第一方面,本申请实施例提供了一种Redis主从架构的高可用解决方法,所述方法应用于由第一服务器与第二服务器构成的Redis集群,所述第一服务器与所述第二服务器内均安装有Nginx组件,默认所述第一服务器对应的节点为Redis集群初始主节点,所述第二服务器对应的节点为Redis集群初始从节点,其中:所述第一服务器启动定时任务执行如下操作:步骤S1:执行第一脚本,判断所述Redis集群初始主节点的服务状态是否正常,若服务状态正常,则查询所述Redis集群初始主节点的当前身份,若当前身份为主节点,执行步骤S2,若服务状态异常,执行步骤S3;步骤S2:判断所述Redis集群初始主节点下是否存在Redis集群从节点,若不存在,则判断所述第二服务器的Redis服务是否正常,若Redis服务正常,设置所述第二服务器在Redis集群中的身份为从节点,将所述第二服务器的Redis数据同步给所述Redis集群初始主节点,所述第一脚本执行完成;步骤S3:获取用于判断所述Redis集群初始主节点的服务状态是否正常的Ping命令的重试次数,判断所述重试次数是否已达到目标次数,若已达到目标次数,则将所述重试次数更新为零,并判断所述第二服务器的Redis服务是否正常,若Redis服务正常,则将所述第二服务器对应的节点切换为新的主节点,将本机Nginx组件配置的数据转发地址修改为所述新的主节点的地址,所述第一脚本执行完成;所述第二服务器启动定时任务执行如下步骤:步骤S1

:执行第二脚本,判断所述Redis集群初始主节点的服务状态是否正常,若服务状态正常,则查询所述Redis集群初始主节点的当前身份,若当前身份为主节点,执行步骤S2

,若服务状态异常,执行步骤S3


步骤S2

:判断所述Redis集群初始主节点下是否存在Redis集群从节点,若不存在,则判断本机Redis服务是否正常,若Redis服务正常,则设置本机在Redis集群中的身份为从节点,将本机Redis数据同步给所述Redis集群初始主节点,所述第二脚本执行完成;步骤S3

:获取用于判断所述Redis集群初始主节点的服务状态是否正常的Ping命令的重试次数,判断所述重试次数是否已达到目标次数,若已达到目标次数,则将所述重试次数更新为零,并判断本机Redis服务是否正常,若Redis服务正常,则将本机对应的节点切换为新的主节点,将本机Nginx组件配置的数据转发地址修改为所述新主节点的地址,所述第二脚本执行完成。
[0005]第二方面,本申请实施例提供了一种Redis主从架构的高可用解决装置,所述装置应用于由第一服务器与第二服务器构成的Redis集群,所述第一服务器与所述第二服务器内均安装有Nginx组件,默认所述第一服务器对应的节点为Redis集群初始主节点,所述第二服务器对应的节点为Redis集群初始从节点,所述装置包括定时任务模块、第一判断模块、第二判断模块、第三判断模块、第四判断模块、第五判断模块、第六判断模块,其中,所述第一判断模块、所述第二判断模块、所述第三判断模块应用于所述第一服务器,所述第四判断模块、所述第五判断模块、所述第六判断模块应用于所述第二服务器;所述定时任务模块:用于启动定时任务;所述第一判断模块:用于执行第一脚本,判断所述Redis集群初始主节点的服务状态是否正常,若服务状态正常,则查询所述Redis集群初始主节点的当前身份,若当前身份为主节点,触发所述第二判断模块,若服务状态异常,触发所述第三判断模块;所述第二判断模块:用于判断所述Redis集群初始主节点下是否存在Redis集群从节点,若不存在,则判断所述第二服务器的Redis服务是否正常,若Redis服务正常,设置所述第二服务器在Redis集群中的身份为从节点,将所述第二服务器的Redis数据同步给所述Redis集群初始主节点,所述第一脚本执行完成;所述第三判断模块:用于获取用于判断所述Redis集群初始主节点的服务状态是否正常的Ping命令的重试次数,判断所述重试次数是否已达到目标次数,若已达到目标次数,则将所述重试次数更新为零,并判断所述第二服务器的Redis服务是否正常,若Redis服务正常,则将所述第二服务器对应的节点切换为新的主节点,将本机Nginx组件配置的数据转发地址修改为所述新的主节点的地址,所述第一脚本执行完成;所述第四判断模块:用于执行第二脚本,判断所述Redis集群初始主节点的服务状态是否正常,若服务状态正常,则查询所述Redis集群初始主节点的当前身份,若当前身份为主节点,触发所述第五判断模块,若服务状态异常,触发第六判断模块;所述第五判断模块:用于判断所述Redis集群初始主节点下是否存在Redis集群从节点,若不存在,则判断本机Redis服务是否正常,若Redis服务正常,则设置本机在Redis集群中的身份为从节点,将本机Redis数据同步给所述Redis集群初始主节点,所述第二脚本执行完成;所述第六判断模块:用于获取用于判断所述Redis集群初始主节点的服务状态是否正常的Ping命令的重试次数,判断所述重试次数是否已达到目标次数,若已达到目标次数,则将所述重试次数更新为零,并判断本机Redis服务是否正常,若Redis服务正常,则将本机对应的节点切换为新的主节点,将本机Nginx组件配置的数据转发地址修改为所述新
主节点的地址,所述第二脚本执行完成。
[0006]第三方面,本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述任一项方法的步骤。
[0007]第四方面,本申请实施例提供了一种服务器,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述任一项方法的步骤。
[0008]本申请一些实施例提供的技术方案带来的有益效果至少包括:本申请提供的所述方法可以在前端无感知的情况下完成对故障节点的切换,在该过程中,节点切换、地址修改以及节点复制操作均由服务器执行,无需人为干预,达到了自动转移故障的效果;且在主节点发生切换时,接收到用户数据处理请求的Nginx组件能够将待处理数据本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种Redis主从架构的高可用解决方法,其特征在于,所述方法应用于由第一服务器与第二服务器构成的Redis集群,所述第一服务器与所述第二服务器内均安装有Nginx组件,默认所述第一服务器对应的节点为Redis集群初始主节点,所述第二服务器对应的节点为Redis集群初始从节点,其中:所述第一服务器启动定时任务执行如下操作:步骤S1:执行第一脚本,判断所述Redis集群初始主节点的服务状态是否正常,若服务状态正常,则查询所述Redis集群初始主节点的当前身份,若当前身份为主节点,执行步骤S2,若服务状态异常,执行步骤S3;步骤S2:判断所述Redis集群初始主节点下是否存在Redis集群从节点,若不存在,则判断所述第二服务器的Redis服务是否正常,若Redis服务正常,设置所述第二服务器在Redis集群中的身份为从节点,将所述第二服务器的Redis数据同步给所述Redis集群初始主节点,所述第一脚本执行完成;步骤S3:获取所述Redis集群初始主节点的重试次数,判断所述重试次数是否已达到目标次数,若已达到目标次数,则将所述重试次数更新为零,并判断所述第二服务器的Redis服务是否正常,若Redis服务正常,则将所述第二服务器对应的节点切换为新的主节点,将本机Nginx组件配置的数据转发地址修改为所述新的主节点的地址,所述第一脚本执行完成;所述第二服务器启动定时任务执行如下步骤:步骤S1

:执行第二脚本,判断所述Redis集群初始主节点的服务状态是否正常,若服务状态正常,则查询所述Redis集群初始主节点的当前身份,若当前身份为主节点,执行步骤S2

,若服务状态异常,执行步骤S3

;步骤S2

:判断所述Redis集群初始主节点下是否存在Redis集群从节点,若不存在,则判断本机Redis服务是否正常,若Redis服务正常,则设置本机在Redis集群中的身份为从节点,将本机Redis数据同步给所述Redis集群初始主节点,所述第二脚本执行完成;步骤S3

:获取所述Redis集群初始主节点的重试次数,判断所述重试次数是否已达到目标次数,若已达到目标次数,则将所述重试次数更新为零,并判断本机Redis服务是否正常,若Redis服务正常,则将本机对应的节点切换为新的主节点,将本机Nginx组件配置的数据转发地址修改为所述新主节点的地址,所述第二脚本执行完成。2.根据权利要求1所述的方法,其特征在于,所述步骤S1中,若所述Redis集群初始主节点的当前身份为从节点,则执行步骤S4:将所述Redis集群初始主节点的当前身份修改为主节点,将所述第二服务器的Redis数据同步给所述Redis集群初始主节点,将本机Nginx 组件配置的数据转发地址修改为所述Redis集群初始主节点的地址,所述第一脚本执行完成;所述步骤S1

中,若所述Redis集群初始主节点的当前身份为从节点,则执行步骤S4

:将所述Redis集群初始主节点的当前身份修改为主节点,将本机Nginx组件配置的数据转发地址修改为所述Redis集群初始主节点的地址,所述第二脚本执行完成。3.根据权利要求1所述的方法,其特征在于,所述步骤S2中,若所述Redis集群初始主节点下存在Redis集群从节点,则执行步骤S5:提示所述Redis集群初始主节点的服务状态正常,并判断本机Nginx组件配置的数据转
发地址是否为所述Redis集群初始主节点的地址,若是,第一脚本执行完成,若否,则将所述数据转发地址修改为所述Redis集群初始主节点的地址,所述第一脚本执行完成;所述步骤S2

中,若所述Redis集群初始主节点下存在Redis集群从节点,则执行步骤S5

:提示所述Redis集群初始主节点的服务状态正常,并判断本机Nginx组件配置的数据转发地址是否为所述Redis集群初始主节点的地址,若是,第二脚本执行完成,若否,则将所述数据转发地址修改为所述Redis集群初始主节点的地址,所述第二脚本执行完成。4.根据权利要求3所述的方法,其特征在于,所述步骤S5

中,将所述数据转发地址修改为所述Redis集群初始主节点的地址之后,还包括:关闭所述Redis集群从节点的服务,并在关闭时长达到第一预设时长时重启所述Redis集群从节点的服务。5.根据权利要求1所述的方法,其特征在于,所述步骤S2还包括:若判断所述第二服务器的Redis服务异常,则远程登录所述第二服务器的Redis服务并对所述第二服务器的Redis服务进行重启,并在重启后将所述第二服务器的Redis数据同步给所述Redis集群初始主节点,所述第一脚本执行完成;所述步骤S2

还包括:若判断本机Redis服务异常,则对本机Redis服务进行重启并提示,将本机Redis数据同步给所述Redis集群初始主节点,所述第二脚本执行完成。6.根据权利要求1所述的方法,其特征在于,所述步骤S3还包括:若所述重...

【专利技术属性】
技术研发人员:田步明陆舟
申请(专利权)人:飞天诚信科技股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1