一种Redis副本集的实现方法及装置制造方法及图纸

技术编号:26762072 阅读:20 留言:0更新日期:2020-12-18 23:06
本发明专利技术公开了一种Redis副本集的实现方法及装置,该方法包括以下步骤:S1、采用预设方法对代理进行活性检测,实现代理高可用;S2、通过预设法则实现自动故障转移、手动主从节点切换、哨兵自动切换、故障节点自救及脑裂多主检测;S3、所述代理采用预设规则获取数据库Redis最新结构信息,正确路由请求。有益效果:通过组件Proxy、KeepAlived、Redis‑server、Redis‑sentinel及Check‑sentinel脚本的配合使用,使得本发明专利技术可以采用最低配的Redis来实现高可用方案,不仅有效地解决了脑裂及虚机宕机无法切换的问题,而且还有效地解决了虚机启动后的多主问题,同时代理的加入能够对Redis提供一种保护如性能损耗命令的屏蔽及客户端连接打满Redis导致Redis异常退出等。

【技术实现步骤摘要】
一种Redis副本集的实现方法及装置
本专利技术涉及数据库
,具体来说,涉及一种Redis副本集的实现方法及装置。
技术介绍
目前网络博客或许多项目应用中,Redis副本集很多是一主两从三哨兵、多哨兵或一主一从两哨兵的搭建方式,很少谈及一主一从一哨兵最低配的搭建方式。常见的方案如下:方案一(如图1所示)为一主一从两哨兵,M1、R1分别为主从Redis,S1、S2为高可用哨兵;方案二(如图2所示)为一主一从三哨兵,如单独部署,3个哨兵会占用更多的资源;与Redis部署在一起,同样会遇到故障切换问题;方案三(如图3所示)为一主两从3哨兵,依然不是最低配,耗费更多的资源;另外没有代理,用户需要感知所有节点信息如IP,PORT等,通过客户端可以执行所有管理员操作如FLUSH等,带来安全隐患。然而,对于上述方案一而言,其存在以下缺陷:1)无法解决网络故障后脑裂问题;2)如其中某一哨兵进程宕掉或某一虚机宕掉后,故障切换无法顺利进行;3)客户端需要明确底层部署架构信息如IP,PORT等,且可以执行一切管理员操作如FLUSH等。对于上述方案二而言,增加一个哨兵;如三个哨兵单独部署为带来额外的资源耗费,哨兵进程只是故障切换,不会占用太多资源;如哨兵进程与Redis部署在一起,同样会有两个明显的缺点:1)如其中哨兵多的一方虚机宕掉后,故障切换无法顺利进行;2)客户端需要明确底层部署架构信息如IP,PORT等,且可以执行一切管理员操作如FLUSH等。对于上述方案三而言,一主两从三哨兵,额外增加一台物理资源,已然不是最低配。针对相关技术中的问题,目前尚未提出有效的解决方案。
技术实现思路
针对相关技术中的问题,本专利技术提出一种Redis副本集的实现方法及装置,以克服现有相关技术所存在的上述技术问题。为此,本专利技术采用的具体技术方案如下:根据本专利技术的一个方面,提供了一种Redis副本集的实现方法,包括以下步骤:S1、采用预设方法对代理进行活性检测,实现代理高可用;S2、通过预设法则实现自动故障转移、手动主从节点切换、哨兵自动切换、故障节点自救及脑裂多主检测;S3、所述代理采用预设规则获取数据库Redis最新结构信息,正确路由请求。进一步的,所述S1中采用预设方法对代理进行活性检测,实现代理高可用具体包括以下步骤:采用预设的软件KeepAlived通过检测代理活性来控制VIP偏移,实现所述代理高可用。进一步的,所述S1中的所述代理为开源代理Predixy,所述开源代理Predixy可屏蔽一些密码重置及参数修改的命令,且用户无需感知底层架构部署信息,连接所述代理犹如连接单个数据库Redis,可以实现后续副本集扩展。进一步的,所述S2中通过预设法则实现自动故障转移、手动主从节点切换、哨兵自动切换、故障节点自救及脑裂多主检测具体包括以下步骤:S21、当副本集初始化后,哨兵运行于从节点,并周期性获取数据库Redis的状态及负责数据库Redis的自动故障转移和手动主从节点服务器的切换;S22、当主从切换完成后,周期触发Check-sentinel脚本会检测到哨兵运行节点与数据库Redis角色不匹配,进而哨兵会被所述Check-sentinel脚本相应的切换到当下从节点服务器中。进一步的,所述S22中周期性触发Check-sentinel脚本具体包括以下步骤:当服务器为主节点服务器,且存在哨兵,则停止所述哨兵进程,所述代理进程配置文件软连接指向本地,修改软连接指向远端代理配置文件,并重启代理;当服务器为从节点服务器,且不存在哨兵,则启动哨兵进程,所述代理进程配置文件软连接指向远端,修改软连接指向本地代理配置文件,并重启代理;当PING命令返回错误时,则视为从节点服务器,每周期累加一次,若5次依然失败,则修改所述代理配置文件软连接指向本地配置文件。进一步的,所述S3中所述代理获取数据库Redis最新结构信息的预设规则指所述代理周期性的从哨兵获取。根据本专利技术的另一个方面,还提供了一种电子装置,所述电子装置包括存储器和处理器,所述存储器上存储有可在所述处理器上运行的Redis副本集的实现程序,所述Redis副本集的实现程序被所述处理器执行时实现如下步骤:S1、采用预设方法对代理进行活性检测,实现代理高可用;S2、通过预设法则实现自动故障转移、手动主从节点切换、哨兵自动切换、故障节点自救及脑裂多主检测;S3、所述代理采用预设规则获取数据库Redis最新结构信息,正确路由请求。进一步的,所述S1中采用预设方法对代理进行活性检测,实现代理高可用具体包括以下步骤:采用预设的软件KeepAlived通过检测代理活性来控制VIP偏移,实现所述代理高可用。进一步的,所述S2中通过预设法则实现自动故障转移、手动主从节点切换、哨兵自动切换、故障节点自救及脑裂多主检测具体包括以下步骤:S21、当副本集初始化后,哨兵运行于从节点,并周期性获取数据库Redis的状态及负责数据库Redis的自动故障转移和手动主从节点服务器的切换;S22、当主从切换完成后,周期触发Check-sentinel脚本会检测到哨兵运行节点与数据库Redis角色不匹配,进而哨兵会被所述Check-sentinel脚本相应的切换到当下从节点服务器中。进一步的,所述S22中周期性触发Check-sentinel脚本具体包括以下步骤:当服务器为主节点服务器,且存在哨兵,则停止所述哨兵进程,所述代理进程配置文件软连接指向本地,修改软连接指向远端代理配置文件,并重启代理;当服务器为从节点服务器,且不存在哨兵,则启动哨兵进程,所述代理进程配置文件软连接指向远端,修改软连接指向本地代理配置文件,并重启代理;当PING命令返回错误时,则视为从节点服务器,每周期累加一次,若5次依然失败,则修改所述代理配置文件软连接指向本地配置文件。本专利技术的有益效果为:通过组件Proxy、KeepAlived、Redis-server、Redis-sentinel及Check-sentinel脚本的配合使用,使得本专利技术可以采用最低配的Redis来实现高可用方案,不仅有效地解决了脑裂及虚机宕机无法切换的问题,而且还有效地解决了虚机启动后的多主问题,同时代理的加入能够对Redis提供一种保护如性能损耗命令的屏蔽及客户端连接打满Redis导致Redis异常退出等。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是现有技术中Redis副本集方案一的搭建方式示意图;图2是现有技术中Redis副本集方案二的搭建方式示意图;图3是现有技术中Redis副本集方案三的搭建方式示意本文档来自技高网
...

【技术保护点】
1.一种Redis副本集的实现方法,其特征在于,包括以下步骤:/nS1、采用预设方法对代理进行活性检测,实现代理高可用;/nS2、通过预设法则实现自动故障转移、手动主从节点切换、哨兵自动切换、故障节点自救及脑裂多主检测;/nS3、所述代理采用预设规则获取数据库Redis最新结构信息,正确路由请求。/n

【技术特征摘要】
1.一种Redis副本集的实现方法,其特征在于,包括以下步骤:
S1、采用预设方法对代理进行活性检测,实现代理高可用;
S2、通过预设法则实现自动故障转移、手动主从节点切换、哨兵自动切换、故障节点自救及脑裂多主检测;
S3、所述代理采用预设规则获取数据库Redis最新结构信息,正确路由请求。


2.根据权利要求1所述的一种Redis副本集的实现方法,其特征在于,所述S1中采用预设方法对代理进行活性检测,实现代理高可用具体包括以下步骤:采用预设的软件KeepAlived通过检测代理活性来控制VIP偏移,实现所述代理高可用。


3.根据权利要求1所述的一种Redis副本集的实现方法,其特征在于,所述S1中的所述代理为开源代理Predixy,所述开源代理Predixy可屏蔽一些密码重置及参数修改的命令,且用户无需感知底层架构部署信息,连接所述代理犹如连接单个数据库Redis,可以实现后续副本集扩展。


4.根据权利要求1所述的一种Redis副本集的实现方法,其特征在于,所述S2中通过预设法则实现自动故障转移、手动主从节点切换、哨兵自动切换、故障节点自救及脑裂多主检测具体包括以下步骤:
S21、当副本集初始化后,哨兵运行于从节点,并周期性获取数据库Redis的状态及负责数据库Redis的自动故障转移和手动主从节点服务器的切换;
S22、当主从切换完成后,周期触发Check-sentinel脚本会检测到哨兵运行节点与数据库Redis角色不匹配,进而哨兵会被所述Check-sentinel脚本相应的切换到当下从节点服务器中。


5.根据权利要求4所述的一种Redis副本集的实现方法,其特征在于,所述S22中周期性触发Check-sentinel脚本具体包括以下步骤:
当服务器为主节点服务器,且存在哨兵,则停止所述哨兵进程,所述代理进程配置文件软连接指向本地,修改软连接指向远端代理配置文件,并重启代理;
当服务器为从节点服务器,且不存在哨兵,则启动哨兵进程,所述代理进程配置文件软连接指向远端,修改软连接指向本地代理配置文件,并重启代理;
当PING命令返回错误时,则视为从节点服务器,每周期累加一次,若5次依然失败,则修改所述代理配置文件软连接指向本地配...

【专利技术属性】
技术研发人员:于占水
申请(专利权)人:紫光云南京数字技术有限公司
类型:发明
国别省市:江苏;32

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

1