本发明涉及云数据库领域,具体地说是一种redis高可用vip漂移方法、终端及存储介质。
背景技术:
作为一种内存型数据库,redis具有性能高、结构简单、相关工具完备等特点,被越来越多地应用在各种互联网工程中,成为各大门户网站和移动互联网app的必备组件。近年来随着云计算概念的兴起,大量redis数据库从本地被迁移到了云计算平台,成为了云数据库。然而由于云计算平台特殊的技术架构,云数据库redis主从切换时的vip(virtualipaddress,虚拟ip地址)漂移环节成为了新的技术难点。
云数据库redis正常运行时的系统拓扑如图1所示:主节点将vip绑定,从节点不绑定,业务负载通过vip访问主节点,从节点与主节点保持数据同步,哨兵(监控器)监控主从节点的运行情况。
redis主从切换时的vip漂移方法如附图2所示:哨兵检测到主节点宕机时,会进行以下几步操作:
1、切换主从节点互换身份;
2、操作宕机节点解绑vip;
3、操作正常节点绑定vip。
具体流程如图3所示。
上述传统的方法虽然可以实现vip漂移的功能但是有以下缺陷:
1、vip切换的过程依赖哨兵登录主、从节点进行操作,需要授予哨兵登录redis云节点的密钥,不利于密钥的管理和系统安全;
2、哨兵作为vip切换的主动方,也存在异常的可能,若哨兵切换主从身份后宕机,会导致身份切换但vip没有漂移,可能导致云数据库redis服务状态混乱;
3、哨兵作为vip切换的主动方,仅进行一次vip切换操作,若vip切换不成功,没有重试机制,可能导致云数据库redis服务状态混乱。
针对上述分析,如何在确保redis节点密钥的安全性、且主从节点身份切换时不会导致服务状态混乱的前提下,实现vip漂移,是需要解决的技术问题。
技术实现要素:
本发明的技术任务是针对以上不足,提供一种redis高可用vip漂移方法、终端及存储介质,来解决如何在确保redis节点密钥的安全性、且主从节点身份切换时不会导致服务状态混乱的前提下,实现vip漂移的问题。
第一方面,本发明提供一种redis高可用vip漂移方法,用于实现两个redis节点之间主从身份的切换以及vip漂移,所述两个redis节点中一个节点的身份为主节点并绑定vip,另一个节点的身份为从节点不绑定vip,主节点和从节点数据同步,所述方法包括:
通过哨兵监测每个redis节点的运行状态;
每个redis节点均部署有节点监控器,通过节点监控器监测对应redis节点的身份;
当哨兵监测到节点异常时,通过哨兵切换两个redis节点的主从身份,每个节点监控器监测到对应的redis节点的身份变化后,通过部署于原主节点中的节点监控器将原节点与vip解绑,通过部署于切换后主节点中的节点监控器将切换后主节点与vip绑定。
使用上述实施方式时,云数据库redis正常运行时,两个redis节点分别为第一节点和第二节点,第一节点的的身份为主节点将vip绑定,第二节点的身份为从节点不绑定vip,业务负载通过vip访问主节点,从节点和主节点保持数据同步,哨兵监控主节点和从节点的运行状态,每个redis节点自带的节点监控器监测对应redis节点的身份,当哨兵监测到主节点宕机时,切换第一节点和第二节点的主从身份,第一节点的监控器将其与vip解绑,第二节点的监控器将其与vip绑定,从而实现主从身份的切换以及vip漂移。
作为优选,通过哨兵切换两个redis节点的主从身份,并将切换后每个redis节点的身份存储于哨兵。
作为优选,当哨兵监测到节点异常时,通过哨兵切换两个redis节点的主从身份,并将切换后每个redis节点的身份存储于哨兵。
作为优选,每个redis节点本地保存其身份,包括更新并保存切换后的身份
作为优选,所述节点监控器的工作包括:
监测对应redis节点的身份;
如果所述redis节点当前身份为主节点,判断所述redis节点是否已绑定vip,如果所述redis节点已绑定vip,则监测对应redis节点的身份,如果所述redis节点未绑定vip,则将所述redis节点绑定vip;
如果所述redis节点当前身份为从节点,判断所述redis节点是否已解绑vip,如果所述redis节点已解绑vip,则继续监测对应redis节点的身份,如果所述redis节点未解绑vip,则将所述redis节点解绑vip。
作为优选,节点监控器监测对应redis节点的身份,包括如下步骤:
获取本地保存的身份;
判断哨兵中是否存储有所述redis节点的身份;
如果哨兵中存储有所述redis节点的身份,判断本地保存的身份与哨兵中存储的所述redis节点的身份是否一致,如果一致,输出本地保存的身份,如果不一致,修改本地保存的身份以与哨兵中存储的所述redis节点的身份一致,并输出本地保存的修改后的身份;
如果哨兵中未存储所述redis节点的身份,输出本地保存的身份。
作为优选,所述节点监控器为监控脚本。
第二方方面,本发明提供一种终端,包括处理器、输入设备、输出设备和存储器,处理器、输入设备、输出设备和存储器相互连接,存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令执行如第一方面任一项所述一种redis高可用vip漂移方法。
第三方面,本发明提供一种存储介质,所述存储介质为计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,程序指令当被处理器执行时所述处理器执行如第一方面任一项所述的一种redis高可用vip漂移方法。
本发明的一种redis高可用vip漂移方法、终端及存储介质具有以下优点:
1、vip切换过程中哨兵不需要登录主节点和从节点,可以保护redis节点密钥,维护系统的高安全性;
2、通过哨兵进行主从身份切换后,redis节点作为vip切换的主动方,不会导致数据库redis服务状态混乱;
3、redis节点作为vip切换的主动方具有漂移重试机制,漂移不成功后会在动重试,不会导致数据库redis服务状态混乱。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例中描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
下面结合附图对本发明进一步说明。
附图1为云数据库redis正常运行系统拓扑结构示意图;
附图2为传统vip漂移方法拓扑示意图;
附图3为传统vip漂移流程框图;
附图4为实施例1一种redis高可用vip漂移方法中正常运行系统拓扑结构示意图;
附图5为1一种redis高可用vip漂移方法中vip漂移拓扑示意图;
附图6为1一种redis高可用vip漂移方法中哨兵工作流程框图;
附图7为1一种redis高可用vip漂移方法中节点监控器的工作流程框图;
附图8为1一种redis高可用vip漂移方法中检测身份流程框图。
具体实施方式
下面结合附图和具体实施例对本发明作进一步说明,以使本领域的技术人员可以更好地理解本发明并能予以实施,但所举实施例不作为对本发明的限定,在不冲突的情况下,本发明实施例以及实施例中的技术特征可以相互结合。
需要理解的是,在本发明实施例的描述中,“第一”、“第二”等词汇,仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。在本发明实施例中的“多个”,是指两个或两个以上。
本发明实施例中的属于“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,单独存在b,同时存在a和b这三种情况。另外,本文中字符“/”一般表示前后关联对象是一种“或”关系。
本发明实施例提供一种redis高可用vip漂移方法、终端及存储介质,用于解决如何在确保redis节点密钥的安全性、且主从节点身份切换时不会导致服务状态混乱的前提下,实现vip漂移的问题的技术问题。
实施例1:
本发明的一种redis高可用vip漂移方法,用于实现两个redis节点之间主从身份的切换以及vip漂移。
如附图4所示,正常运行时,两个redis节点中一个redis节点的身份为主节点并绑定vip,另一个redis节点的身份为从节点不绑定vip,业务负载通过vip访问主节点,主节点和从节点数据同步,哨兵监控每个redis节点的运行状态,每个redis节点中部署有监控器,通过其部署的监控器监控对应rdis节点的身份。
如附图5和附图6所示,当哨兵监测到当前主节点宕机时,切换两个redis节点的主从身份,从而两个redis节点的身份发生变化,当部署于redis节点的节点监控器监测到对应的redis节点的身份发生变化后,通过部署于原主节点中的节点监控器将原节点与vip解绑,通过部署于切换后主节点中的节点监控器将切换后主节点与vip绑定。
其中,附图7所示,上述节点监控器执行如下操作:
监测对应redis节点的身份;
如果redis节点当前身份为主节点,判断redis节点是否已绑定vip,如果redis节点已绑定vip,则监测对应redis节点的身份,如果redis节点未绑定vip,则将redis节点绑定vip;
如果redis节点当前身份为从节点,判断redis节点是否已解绑vip,如果redis节点已解绑vip,则继续监测对应redis节点的身份,如果redis节点未解绑vip,则将redis节点解绑vip。
基于上述节点监控器的工作,节点监控器监测到对应的redis节点的身份发生变化后,进行如下操作:原主节点的节点监控器将该redis节点与vip解绑,切换后主节点的节点监控器将该redis节点与vip绑定。
其中,如附图8所示,节点监控器监测对应redis节点的身份,包括如下步骤:
(1)获取本地保存的身份;
(2)判断哨兵中是否存储有上述redis节点的身份;
(3)如果哨兵中存储有上述redis节点的身份,判断本地保存的身份与哨兵中存储的上述redis节点的身份是否一致,如果一致,输出本地保存的身份,如果不一致,修改本地保存的身份以与哨兵中存储的上述redis节点的身份一致,并输出本地保存的修改后的身份;
(4)如果哨兵中未存储上述redis节点的身份,输出本地保存的身份。
本发明的一种redis高可用vip漂移方法作用于主节点a节点以及从节点节点,哨兵检测到a节点宕机时,切换主从节点身份,两个redis节点的节点监控器检测到各自节点的身份变化后,a节点的节点监控器将该redis节点解绑vip;b节点的节点监控器将redis节点绑定vip,此时业务负载连接至正常运行的b节点,主从切换完成。节点监控器监测节点身份时,会从哨兵同步身份,如果主节点宕机或网络中断,并在切换完成后恢复,节点监控器可以自动同步节点状态,解绑vip,保证集群中节点状态一致性。
实施例2:
本发明提供一种终端,包括处理器、输入设备、输出设备和存储器,处理器、输入设备、输出设备和存储器相互连接,存储器用于存储计算机程序,上述计算机程序包括程序指令,上述处理器被配置用于调用上述程序指令执行如实施例1公开的一种redis高可用vip漂移方法。本实施例中一种终端包括计算机。
实施例3:
本发明提供一种存储介质,该存储介质为计算机可读存储介质,计算机可读存储介质存储有计算机程序,上述计算机程序包括程序指令,程序指令当被处理器执行时上述处理器执行如实施例1公开的一种redis高可用vip漂移方法。
以上所述实施例仅是为充分说明本发明而所举的较佳的实施例,本发明的保护范围不限于此。本技术领域的技术人员在本发明基础上所作的等同替代或变换,均在本发明的保护范围之内。本发明的保护范围以权利要求书为准。