CN110224871A - 一种Redis集群的高可用方法及装置 - Google Patents
一种Redis集群的高可用方法及装置 Download PDFInfo
- Publication number
- CN110224871A CN110224871A CN201910540450.2A CN201910540450A CN110224871A CN 110224871 A CN110224871 A CN 110224871A CN 201910540450 A CN201910540450 A CN 201910540450A CN 110224871 A CN110224871 A CN 110224871A
- Authority
- CN
- China
- Prior art keywords
- redis
- server
- redis server
- address
- cluster
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/06—Management of faults, events, alarms or notifications
- H04L41/0654—Management of faults, events, alarms or notifications using network fault recovery
- H04L41/0663—Performing the actions predefined by failover planning, e.g. switching to standby network elements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/06—Management of faults, events, alarms or notifications
- H04L41/0654—Management of faults, events, alarms or notifications using network fault recovery
- H04L41/0668—Management of faults, events, alarms or notifications using network fault recovery by dynamic selection of recovery network elements, e.g. replacement by the most appropriate element after failure
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/30—Decision processes by autonomous network management units using voting and bidding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/10—Mapping addresses of different types
- H04L61/103—Mapping addresses of different types across network layers, e.g. resolution of network layer into physical layer addresses or address resolution protocol [ARP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/58—Caching of addresses or names
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Hardware Redundancy (AREA)
Abstract
本发明实施例涉及科技金融(Fintech)领域,本发明公开一种Redis集群的高可用方法及装置,集群包括至少两个Redis服务器,及与Redis服务器对应配置的监控组件;该方法包括:第一Redis服务器的监控组件通过发起侦测线程侦测各Redis服务器的连接链路;第一Redis服务器的监控组件若确定第二Redis服务器连接链路发生故障,则发起投票;第一Redis服务器的监控组件将投票结果大于或等于半数的从Redis服务器确定为与第二Redis服务器进行切换的从Redis服务器;本发明在实现Redis服务器的故障的VIP漂移的情况下,降低了成本。
Description
技术领域
本发明涉及金融科技(Fintech)的通信技术领域,尤其涉及一种Redis集群的高可用方法及装置。
背景技术
随着计算机技术的发展,越来越多的技术应用在金融领域,传统金融业正在逐步向金融科技(Fintech)转变,Redis集群技术也不例外,但由于金融行业的安全性、实时性要求,也对技术提出的更高的要求。
目前web应用***为了解决高并发带来的性能问题,都会在web应用***与数据库之间采取缓存层,使用最为广泛的就是Redis(Redis本质上是一个键-值类型的内存数据库)。Redis作为软件和传统数据库之间的缓冲层,操作命令简单,在保证了数据有效性的情况下,同时也保证了高性能。
现有技术中,为实现Redis的高可用,减少服务中断时间为目的的服务器,通过保护用户的业务程序对外不间断提供的服务,把因软件/硬件/人为造成的故障对业务的影响降低到最小程度,需要迁移组件进行故障迁移、需要多个监控组件进行服务器的监控,需要的组件过多,维护成本较高。
发明内容
本发明实施例提供一种Redis集群的高可用方法及装置,用以解决现有技术访问Redis数据库的组件过多,维护成本较高的问题。
本发明实施例提供一种Redis集群的高可用方法,所述集群包括至少两个Redis服务器,及与所述Redis服务器对应配置的监控组件;该方法包括:
第一Redis服务器的监控组件通过发起侦测线程侦测各Redis服务器的连接链路;
所述第一Redis服务器的监控组件若确定第二Redis服务器连接链路发生故障,则发起投票;所述第二Redis服务器为主Redis服务器;
所述第一Redis服务器的监控组件若确定投票结果大于或等于半数的从Redis服务器为所述第一Redis服务器,则将所述第一Redis服务器确定为与所述第二Redis服务器进行切换的从Redis服务器;
所述第一Redis服务器的监控组件将所述第一Redis服务器的VIP地址设置为所述Redis集群的VIP地址,以使访问所述Redis集群的客户端根据修改后的VIP地址访问所述第一Redis服务器。
一种可能的实现方式,所述第一Redis服务器的监控组件将所述第一Redis服务器的VIP地址设置为所述Redis集群的VIP地址,包括:
所述第一Redis服务器的监控组件获取所述第二Redis服务器的监控组件在故障切换时传出的参数;
所述第一Redis服务器的监控组件若确定所述参数中的源IP地址为所述第二Redis服务器的IP地址,则发起VIP地址的解绑操作;
所述第一Redis服务器的监控组件若确定所述参数中的目的IP地址为所述第一Redis服务器的IP地址,则检测所述Redis集群的VIP地址是否为连通状态;
所述第一Redis服务器的监控组件若未接收到连通返回消息,则将所述第一Redis服务器的VIP地址绑定至所述Redis集群。
一种可能的实现方式,所述第一Redis服务器的监控组件若未接收到连通返回消息,还包括:
将所述第一Redis服务器的VIP地址更新至ARP缓存,以使所述Redis集群的网关设备确认所述Redis集群的VIP地址对应所述第一Redis服务器。
一种可能的实现方式,所述第一Redis服务器的监控组件通过发起侦测线程侦测各Redis服务器的连接链路,包括:
所述第一Redis服务器的监控组件向各Redis服务器发送心跳检测;
若心跳检测成功,则从心跳检测成功的Redis实例确定可用的连接链路。
本发明实施例提供一种Redis集群的高可用装置,所述集群包括至少两个Redis服务器,及与所述Redis服务器对应配置的监控组件;该装置包括:
监控单元,用于通过发起侦测线程侦测各Redis服务器的连接链路;
处理单元,用于若确定第二Redis服务器连接链路发生故障,则发起投票;所述第二Redis服务器为主Redis服务器;若确定投票结果大于或等于半数的从Redis服务器为所述第一Redis服务器,则将所述第一Redis服务器确定为与所述第二Redis服务器进行切换的从Redis服务器;将所述第一Redis服务器的VIP地址设置为所述Redis集群的VIP地址,以使访问所述Redis集群的客户端根据修改后的VIP地址访问所述第一Redis服务器。
一种可能的实现方式,所述处理单元,具体用于:
获取所述第二Redis服务器的监控组件在故障切换时传出的参数;若确定所述参数中的源IP地址为所述第二Redis服务器的IP地址,则发起VIP地址的解绑操作;若确定所述参数中的目的IP地址为所述第一Redis服务器的IP地址,则检测所述Redis集群的VIP地址是否为连通状态;若未接收到连通返回消息,则将所述第一Redis服务器的VIP地址绑定至所述Redis集群。
一种可能的实现方式,所述处理单元,还用于:将所述第一Redis服务器的VIP地址更新至ARP缓存,以使所述Redis集群的网关设备确认所述Redis集群的VIP地址对应所述第一Redis服务器。
一种可能的实现方式,所述监控单元,具体用于:
向各Redis服务器发送心跳检测;若心跳检测成功,则从心跳检测成功的Redis实例确定可用的连接链路。
本发明实施例通过所述集群包括至少两个Redis服务器,及与所述Redis服务器对应配置的监控组件;减少了现有技术中的监控组件的个数;通过第一Redis服务器的监控组件通过发起侦测线程侦测各Redis服务器的连接链路;所述第一Redis服务器的监控组件若确定第二Redis服务器连接链路发生故障,则发起投票;所述第二Redis服务器为主Redis服务器;所述第一Redis服务器的监控组件将投票结果大于或等于半数的从Redis服务器确定为与所述第二Redis服务器进行切换的从Redis服务器;所述第一Redis服务器的监控组件将所述第一Redis服务器的VIP地址设置为所述Redis集群的VIP地址,以使访问所述Redis集群的客户端根据修改后的VIP地址访问所述第一Redis服务器。在减少监控组件的同时,实现了Redis服务器的故障的VIP漂移,不需要增加额外的监控组件,并且,由于VIP地址的设置是通过监控组件完成的,不需要现有技术中的其他组件完成,进一步减少了组件的设置,降低了维护的成本。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a为本发明实施例提供一种Redis集群架构;
图1b为本发明实施例提供一种Redis集群架构;
图2为本发明实施例提供一种Redis集群的架构示意图;
图3为本发明实施例提供一种Redis集群的高可用方法流程示意图;
图4为本发明实施例提供一种Redis集群的高可用装置的结构示意图;
图5为本发明实施例还提供一种Redis监控组件的结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部份实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
高可用集群:是指以减少服务中断时间为目的的服务器集群技术。它通过保护用户的业务程序对外不间断提供的服务,把因软件/硬件/人为造成的故障对业务的影响降低到最小程度。
Redis服务器:一个使用ANSI C编写的开源的、支持网络、基于内存、可选持久性的键值对存储数据库,通常也用作缓存数据库。
监控组件sentinel:监听redis服务器的可用状态。当用Redis做主Redis服务器-从Redis服务器的高可用方案时,假如主Redis服务器宕机了,Redis本身(包括它的很多客户端)都没有实现自动进行主备切换,通过监控组件sentinel组件,可以监控redis是否按照预期良好地运行;如果发现某个redis节点运行出现故障,能够通知另外一个进程(例如它的客户端),进行自动切换。
Redis-监控组件sentinel本身也是一个独立运行的进程,它能监控多个主Redis服务器-从Redis服务器集群,发现主Redis服务器宕机后能进行自动切换。只使用单个监控组件sentinel进程来监控redis集群是不可靠的,当监控组件sentinel进程运行出错,或者是网络堵塞,那么将无法实现redis集群的主备切换(监控组件sentinel本身也有单点问题,single-point-of-failure)整个集群***将无法按照预期的方式运行。所以有必要将监控组件sentinel集群,即需要设置有多个监控组件sentinel。
当一个主Redis服务器节点不可用时,监控组件能够选举出主Redis服务器的至少一个从Redis服务器中的一个来作为新的主Redis服务器。其它的从Redis服务器节点会将它所追随的主Redis服务器的地址改为被提升为主Redis服务器的从Redis服务器的新地址。如果大多数监控组件sentinel能够互相通信,最终将会有一个被授权去进行故障迁移,保证了Redis的活跃性。
Keepalived:一个负载均衡集群下健康状态检查的组件以及用于保持主备机之间的故障转移组件。
HAProxy:是一个使用C语言编写的自由及开放源代码软件,其提供高可用性、负载均衡,以及基于TCP和HTTP的应用程序代理。
Vip:集群中供外部访问的ip地址,通常只有一个。
在实际应用中,Redis的部署方式有多种结构,本发明实施例中,提供部署方式的示例,如图1a所示,一种部署方式是部署VIP节点,由VIP节点管控多个节点,每个节点管理一个实例组,由VIP节点实现数据分片的功能,即应用程序发送的读写请求通过VIP节点分配至相应节点对应的实例组处理。
若出现故障迁移,针对Redis服务器的主从切换,可以通过Keepalived将从Redis服务器切换为主Redis服务器。Keepalived可以设置于每个Redis服务器中,若监控组件sentinel确定当前的主Redis服务器运行故障,确定需要进行故障迁移,可以通过Keepalived,将故障的主Redis服务器上的进程,迁移至监控组件sentinel确定出的新的主Redis服务器。
针对VIP节点的切换,可以将HAProxy组件设置于每个Redis服务器中,通过HAProxy组件可以对Redis服务器的主从切换实现即时探测,若确定Redis服务器的主从切换完成,则启用新的主Redis服务器的VIP地址,将其设置为当前的Redis集群的VIP地址,具体的设置可以通过VRRP实现VIP地址的切换。
针对VIP地址的切换,可以通过虚拟路由冗余协议(Virtual Router RedundancyProtocol,简称VRRP)实现。VRRP可以将第一Redis服务器的物理路由器设备和第二Redis服务器的物理路由器设备虚拟成一个虚拟路由,这个虚拟路由器通过虚拟IP(VIP)对外提供服务,而在虚拟路由器内部可以包括多个物理路由器协同工作,同一时间只有一台物理路由器对外提供服务,即主路由器,例如,若当前的主Redis服务器为第一Redis服务器,则此时,只通过第一Redis服务器的物理路由器对外提供服务器。其中,主路由器由选举算法产生,它拥有对外服务的虚拟IP,提供各种网络功能,如:ARP请求,ICMP(Internet ControlMessage Protocol,互联网控制消息协议)数据转发等,而且其它的物理路由器不拥有对外的虚拟IP,也不提供对外网络功能,仅仅接收主路由器的VRRP状态通告信息,这些路由器为备份路由器。当主路由器失败时,处于备份路由器将重新进行选举,产生一个新的主路由器进入主路由器,继续提供对外服务,整个切换对客户端来说是完全透明的。
在一个主Redis服务器与一个或多个从Redis服务器的情况下,每个主Redis服务器和从Redis服务器分别配置一个监控组件sentinel组件;另外,由于需要选举出主Redis服务器的多个从Redis服务器中的一个来作为新的主Redis服务器,若主Redis服务器与从Redis服务器的总数为偶数,为保证选举的顺利进行,需要额外设置1个redis服务器的监听组件监控组件sentinel,该问题在大型集群中并不明显,但是在小型集群中,额外设置的组件增加维护的成本。
如图1b所示,本发明实施例提供另一种部署方式,Redis集群中有若干实例组,应用程序与多个实例组直连,即应用程序连接有多组主从配合的服务器,每个主服务器中运行若干负责数据备份的实例。
该方案下,为不基于VIP的集群的部署方案,需要在发生切换时候,主Redis服务器的切换需要通过监控组件sentinel通知客户端,客户端需要重新连到切换后的主Redis服务器上。在具体实施过程中,客户端需要监听监控组件sentinel的事件队列,获取切换后的主Redis服务器的ip端口,并向切换后的主Redis服务器的ip端口发起访问,相比具有VIP节点的部署场景,不利于切换的及时性。
基于相同的理由,由于需要选举出主Redis服务器的多个从Redis服务器中的一个来作为新的主Redis服务器,若主Redis服务器与从Redis服务器的总数为偶数,为保证选举的顺利进行,在一个主Redis服务器和一个从Redis服务器的前提下,需要额外设置1个监控组件sentinel,在小型集群中,额外设置的组件增加维护的成本的问题。
基于上述问题,参见图2所示,所述集群包括至少两个Redis服务器,及与所述Redis服务器对应配置的监控组件;如图3所示,本发明实施例提供一种Redis集群的高可用方法流程示意图,具体地实现方法包括:
步骤301:第一Redis服务器的监控组件sentinel通过发起侦测线程侦测各Redis服务器的连接链路;
一种可能的实现方式,所述第一Redis服务器的监控组件通过发起侦测线程侦测各Redis服务器的连接链路,包括:
所述第一Redis服务器的监控组件向各Redis服务器发送心跳检测;
若心跳检测成功,则从心跳检测成功的Redis实例确定可用的连接链路。
具体的,可以启动单独的线程定期地向每个Redis实例发送检测报文,根据其响应来判断其健康状态。另外,也向外部调用者开放了反馈接口,当调用者读写Redis遇到异常时,可以调用反馈接口,以便及时对Redis实例的健康状态进行更新。
步骤302:第一Redis服务器的监控组件若确定第二Redis服务器连接链路发生故障,则发起投票;所述第二Redis服务器为主Redis服务器;
具体的,监控组件sentinel在监听到主Redis服务器在特定时间连接不上后,确认第二Redis服务器故障,需要触发故障转移。
步骤303:第一Redis服务器的监控组件若确定投票结果大于或等于半数的从Redis服务器为所述第一Redis服务器,则将所述第一Redis服务器确定为与所述第二Redis服务器进行切换的从Redis服务器;
在具体实施过程中,所有监听主Redis服务器的监控组件sentinel都参与投票,选举出一个从Redis服务器切换成主Redis服务器。在只有一个从Redis服务器的架构场景下,并不需要更多的监控组件sentinel参与投票,只需要一半的投票即可,这样既可以在主Redis服务器宕机情况下保证了可以切换成功,并且也节约了监控组件sentinel的资源。对应的,本发明实施例中的投票方式为大于或等于半数,具体的代码可以如下:
监控组件sentinel.c:voters_quorum=voters/2;
从而实现了集群中只有半数的监控组件sentinel就可以完成故障转移的触发。
步骤304:第一Redis服务器的监控组件将所述第一Redis服务器的VIP地址设置为所述Redis集群的VIP地址,以使访问所述Redis集群的客户端根据修改后的VIP地址访问所述第一Redis服务器。
本发明实施例通过所述集群包括至少两个Redis服务器,及与所述Redis服务器对应配置的监控组件;减少了现有技术中的监控组件的个数;通过第一Redis服务器的监控组件通过发起侦测线程侦测各Redis服务器的连接链路;所述第一Redis服务器的监控组件若确定第二Redis服务器连接链路发生故障,则发起投票;所述第二Redis服务器为主Redis服务器;所述第一Redis服务器的监控组件将投票结果大于或等于半数的从Redis服务器确定为与所述第二Redis服务器进行切换的从Redis服务器;所述第一Redis服务器的监控组件将所述第一Redis服务器的VIP地址设置为所述Redis集群的VIP地址,以使访问所述Redis集群的客户端根据修改后的VIP地址访问所述第一Redis服务器。通过投票机制实现Redis集群中Redis服务器的切换,在减少监控组件的同时,实现了Redis服务器的故障的VIP漂移,不需要增加额外的监控组件,并且,由于VIP地址的设置是通过监控组件完成的,不需要现有技术中的其他组件完成,进一步减少了组件的设置,降低了维护的成本。使得银行等金融机构的Redis集群进行Redis服务器切换时,所花费的成本更低,维护成本也降低,具有更加明显的经济效益。
在步骤304中,一种可能的实现方式,包括:
步骤一、第一Redis服务器的监控组件获取所述第二Redis服务器的监控组件在故障切换时传出的参数;
步骤二、第一Redis服务器的监控组件若确定所述参数中的源IP地址为所述第二Redis服务器的IP地址,则发起VIP地址的解绑操作;
步骤三、第一Redis服务器的监控组件若确定所述参数中的目的IP地址为所述第一Redis服务器的IP地址,则检测所述Redis集群的VIP地址是否为连通状态;
步骤四、第一Redis服务器的监控组件若未接收到连通返回消息,则将所述第一Redis服务器的VIP地址绑定至所述Redis集群。
在具体实施过程中,在Redis集群的主Redis服务器故障转移时会触发一个脚本,该脚本可以是shell语言编写。
具体的,该脚本用于判断监控组件从所述第二Redis服务器的监控组件在故障切换时传出的参数。例如,参数from-ip中的IP地址为本机ip,则可以VIP绑定的地址仍为第二Redis服务器,因此,可以通过操作***的ip命令,执行解绑VIP操作。例如,“/bin/ip addrdel{VIP}/24dev eth0”。例如,参数to-ip中的IP地址为本机ip,则可以确定VIP的地址为切换后的主Redis服务器,因此,需要向VIP发送ping消息;若确定可以接收到对应的PONG消息,则可以确定链路正常,则等待相关时间,以启动切换后的VIP。如果无法接收到发送的ping对应的PONG消息,则说明当前的VIP解绑,并未绑定切换后的第一Redis服务器,需要在第一Redis服务器上绑定该VIP。例如,可以通过以下代码实现:“/bin/ip addr add{VIP}/24dev eth0”。
在具有ARP(Address Resolution Protocol,地址解析协议,即ARP)的场景中,一种可能的实现方式,所述第一Redis服务器的监控组件若未接收到连通返回消息,还包括:
将所述第一Redis服务器的VIP地址更新至ARP缓存,以使所述Redis集群的网关设备确认所述Redis集群的VIP地址对应所述第一Redis服务器。
具体的,可以更新局域网内的该VIP的arp缓存。例如,可以通过以下代码实现:/usr/sbin/arping-I eth0-A{VIP}-c 3。
因此,可以使得新的VIP会绑定到第一Redis服务器上,并且更新了arp缓存,使得网关确认该ip对应的mac地址是在第一Redis服务器上,这样在故障时客户端就可以通过VIP访问第一Redis服务器,从而实现了一个可以通过VIP漂移的高可用集群。
本发明实施例提供一种效率更高的Redis集群的高可用方法,相对其他集群来说,减少了维护的组件,免去了学习其他组件的成本;并且,有效减少了监控组件的使用,节约了需消耗的主机资源。Redis主备切换过程相对其他简单,并且客户端是不需要更换访问的ip从而达到访问切换后的主Redis服务器的目的。
基于相同的发明构思,如图4所示,本发明实施例提供一种Redis集群的高可用装置,所述集群包括至少两个Redis服务器,及与所述Redis服务器对应配置的监控组件;该装置包括:
监控单元401,用于通过发起侦测线程侦测各Redis服务器的连接链路;
处理单元402,用于若确定第二Redis服务器连接链路发生故障,则发起投票;所述第二Redis服务器为主Redis服务器;将投票结果大于或等于半数的从Redis服务器确定为与所述第二Redis服务器进行切换的从Redis服务器;将所述第一Redis服务器的VIP地址设置为所述Redis集群的VIP地址,以使访问所述Redis集群的客户端根据修改后的VIP地址访问所述第一Redis服务器。
一种可能的实现方式,所述处理单元402,具体用于:
获取所述第二Redis服务器的监控组件在故障切换时传出的参数;若确定所述参数中的源IP地址为所述第二Redis服务器的IP地址,则发起VIP地址的解绑操作;若确定所述参数中的目的IP地址为所述第一Redis服务器的IP地址,则检测所述Redis集群的VIP地址是否为连通状态;若未接收到连通返回消息,则将所述第一Redis服务器的VIP地址绑定至所述Redis集群。
一种可能的实现方式,所述处理单元402,还用于:将所述第一Redis服务器的VIP地址更新至ARP缓存,以使所述Redis集群的网关设备确认所述Redis集群的VIP地址对应所述第一Redis服务器。
一种可能的实现方式,所述监控单元401,具体用于:
向各Redis服务器发送心跳检测;若心跳检测成功,则从心跳检测成功的Redis实例确定可用的连接链路。
考虑到本发明实施例中的Redis集群获取应用程序发来的读写请求后,可以包括:
根据读写请求中的数据主键值,确定对应的Redis服务器;
根据所述数据主键值进行哈希运算生成的哈希值,确定对应的所述Redis服务器的端口;根据确定的端口确定所述读写请求对应的Redis实例。
例如,对于Redis集群来说,Redis集群收到应用程序发来的读写请求,首先确定本条读写请求对应的哪个VIP节点,当确定好VIP节点之后,Redis集群从对应的连接池中选择一条连接链路,将读写请求传送给VIP节点,VIP节点再根据读写请求中的数据主键值确定本条读写请求对应的哪个Redis服务器,再根据数据主键值进行哈希运算生成的哈希值,确定对应的所述Redis服务器的端口,并根据确定的端口确定所述读写请求对应的Redis实例。当确定好Redis实例之后,Redis集群从该Redis实例对应的连接池中获取一个长连接,这样就可以通过长连接发送该条读写请求。
因此,本发明实施例中的Redis集群不需要跨节点的访问,避免了现有技术中,Redis3.0版本以上大集群,需要至少3个主redis服务器,并且会将key划分为槽的形式,每个主redis分别存不同的槽,导致在客户端访问某一个redis服务器时,如果该key所在槽不在该访问的redis则需要重定向到该key所在的redis上访问,效率比单redis服务器的访问效率低,并且不支持那些需要同时处理多个键的Redis命令,例如,mset/mget等命令不支持跨节点的访问。
基于相同的发明构思,基于上述实施例,参阅图5所示,本发明实施例中,一种计算机设备的结构示意图。
本发明实施例提供了一种计算机设备,该计算机设备可以包括:处理器1001,例如CPU,网络接口1004,用户接口1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图5中示出的结构并不构成对计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
作为一种计算机存储介质的存储器1005中可以包括操作***、网络通信模块、用户接口模块以及信息推荐模型的生成程序。其中,操作***是管理和控制模型参数获取***硬件和软件资源的程序,支持信息推荐模型的生成程序以及其它软件或程序的运行。
用户接口1003主要用于连接、第二服务器和第三服务器等,与各个服务器进行数据通信;网络接口1004主要用于连接后台服务器,与后台服务器进行数据通信;而处理器1001可以用于调用存储器1005中存储的信息推荐模型的生成程序,并执行以下操作:
若确定第二Redis服务器连接链路发生故障,则发起投票;所述第二Redis服务器为主Redis服务器;将投票结果大于或等于半数的从Redis服务器确定为与所述第二Redis服务器进行切换的从Redis服务器;将所述第一Redis服务器的VIP地址设置为所述Redis集群的VIP地址,以使访问所述Redis集群的客户端根据修改后的VIP地址访问所述第一Redis服务器。
一种可能的实现方式,所述处理器1001,具体用于:
获取所述第二Redis服务器的监控组件在故障切换时传出的参数;若确定所述参数中的源IP地址为所述第二Redis服务器的IP地址,则发起VIP地址的解绑操作;若确定所述参数中的目的IP地址为所述第一Redis服务器的IP地址,则检测所述Redis集群的VIP地址是否为连通状态;若未接收到连通返回消息,则将所述第一Redis服务器的VIP地址绑定至所述Redis集群。
一种可能的实现方式,所述处理器1001,还用于:将所述第一Redis服务器的VIP地址更新至ARP缓存,以使所述Redis集群的网关设备确认所述Redis集群的VIP地址对应所述第一Redis服务器。
一种可能的实现方式,所述处理器1001,具体用于:
向各Redis服务器发送心跳检测;若心跳检测成功,则从心跳检测成功的Redis实例确定可用的连接链路。
本发明是参照根据本发明实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.一种Redis集群的高可用方法,其特征在于,所述集群包括至少两个Redis服务器,及与所述Redis服务器对应配置的监控组件;该方法包括:
第一Redis服务器的监控组件通过发起侦测线程侦测各Redis服务器的连接链路;
所述第一Redis服务器的监控组件若确定第二Redis服务器连接链路发生故障,则发起投票;所述第二Redis服务器为主Redis服务器;
所述第一Redis服务器的监控组件若确定投票结果大于或等于半数的从Redis服务器为所述第一Redis服务器,则将所述第一Redis服务器确定为与所述第二Redis服务器进行切换的从Redis服务器;
所述第一Redis服务器的监控组件将所述第一Redis服务器的VIP地址设置为所述Redis集群的VIP地址,以使访问所述Redis集群的客户端根据修改后的VIP地址访问所述第一Redis服务器。
2.如权利要求1所述的方法,其特征在于,所述第一Redis服务器的监控组件将所述第一Redis服务器的VIP地址设置为所述Redis集群的VIP地址,包括:
所述第一Redis服务器的监控组件获取所述第二Redis服务器的监控组件在故障切换时传出的参数;
所述第一Redis服务器的监控组件若确定所述参数中的源IP地址为所述第二Redis服务器的IP地址,则发起VIP地址的解绑操作;
所述第一Redis服务器的监控组件若确定所述参数中的目的IP地址为所述第一Redis服务器的IP地址,则检测所述Redis集群的VIP地址是否为连通状态;
所述第一Redis服务器的监控组件若未接收到连通返回消息,则将所述第一Redis服务器的VIP地址绑定至所述Redis集群。
3.如权利要求2所述的方法,其特征在于,所述第一Redis服务器的监控组件若未接收到连通返回消息,还包括:
将所述第一Redis服务器的VIP地址更新至ARP缓存,以使所述Redis集群的网关设备确认所述Redis集群的VIP地址对应所述第一Redis服务器。
4.如权利要求1-3任一项所述的方法,其特征在于,所述第一Redis服务器的监控组件通过发起侦测线程侦测各Redis服务器的连接链路,包括:
所述第一Redis服务器的监控组件向各Redis服务器发送心跳检测;
若心跳检测成功,则从心跳检测成功的Redis实例确定可用的连接链路。
5.一种Redis集群的高可用装置,其特征在于,所述集群包括至少两个Redis服务器,及与所述Redis服务器对应配置的监控组件;该装置包括:
监控单元,用于通过发起侦测线程侦测各Redis服务器的连接链路;
处理单元,用于若确定第二Redis服务器连接链路发生故障,则发起投票;所述第二Redis服务器为主Redis服务器;若确定投票结果大于或等于半数的从Redis服务器为所述第一Redis服务器,则将所述第一Redis服务器确定为与所述第二Redis服务器进行切换的从Redis服务器;将所述第一Redis服务器的VIP地址设置为所述Redis集群的VIP地址,以使访问所述Redis集群的客户端根据修改后的VIP地址访问所述第一Redis服务器。
6.如权利要求5所述的装置,其特征在于,所述处理单元,具体用于:
获取所述第二Redis服务器的监控组件在故障切换时传出的参数;若确定所述参数中的源IP地址为所述第二Redis服务器的IP地址,则发起VIP地址的解绑操作;若确定所述参数中的目的IP地址为所述第一Redis服务器的IP地址,则检测所述Redis集群的VIP地址是否为连通状态;若未接收到连通返回消息,则将所述第一Redis服务器的VIP地址绑定至所述Redis集群。
7.如权利要求6所述的装置,其特征在于,所述处理单元,还用于:将所述第一Redis服务器的VIP地址更新至ARP缓存,以使所述Redis集群的网关设备确认所述Redis集群的VIP地址对应所述第一Redis服务器。
8.如权利要求5-7任一项所述的装置,其特征在于,所述监控单元,具体用于:
向各Redis服务器发送心跳检测;若心跳检测成功,则从心跳检测成功的Redis实例确定可用的连接链路。
9.一种计算机设备,其特征在于,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-4任一所述的方法。
10.一种非暂态计算机可读存储介质,其特征在于,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行权利要求1~4任一所述方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910540450.2A CN110224871B (zh) | 2019-06-21 | 2019-06-21 | 一种Redis集群的高可用方法及装置 |
PCT/CN2020/095421 WO2020253596A1 (zh) | 2019-06-21 | 2020-06-10 | 一种Redis集群的高可用方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910540450.2A CN110224871B (zh) | 2019-06-21 | 2019-06-21 | 一种Redis集群的高可用方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110224871A true CN110224871A (zh) | 2019-09-10 |
CN110224871B CN110224871B (zh) | 2022-11-08 |
Family
ID=67814194
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910540450.2A Active CN110224871B (zh) | 2019-06-21 | 2019-06-21 | 一种Redis集群的高可用方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN110224871B (zh) |
WO (1) | WO2020253596A1 (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110674192A (zh) * | 2019-10-09 | 2020-01-10 | 浪潮云信息技术有限公司 | 一种Redis高可用VIP漂移方法、终端及存储介质 |
CN111444062A (zh) * | 2020-04-01 | 2020-07-24 | 山东汇贸电子口岸有限公司 | 管理云数据库的主节点和从节点的方法及装置 |
CN112306720A (zh) * | 2020-11-23 | 2021-02-02 | 迈普通信技术股份有限公司 | 业务***集群管理方法 |
CN113079192A (zh) * | 2021-02-08 | 2021-07-06 | 马上消费金融股份有限公司 | 信息处理方法、装置、设备和可读存储介质 |
CN113535126A (zh) * | 2020-04-14 | 2021-10-22 | 天津科技大学 | 一种基于ssm的房屋租赁平台 |
CN114363156A (zh) * | 2022-01-25 | 2022-04-15 | 南瑞集团有限公司 | 一种基于集群技术的水电站计算机监控***部署方法 |
CN114785713A (zh) * | 2022-03-31 | 2022-07-22 | 度小满科技(北京)有限公司 | 一种用于实现Redis集群高可用的方法和代理中间件 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11917001B2 (en) * | 2020-02-04 | 2024-02-27 | Nutanix, Inc. | Efficient virtual IP address management for service clusters |
CN112860485A (zh) * | 2021-02-03 | 2021-05-28 | 北京北信源信息安全技术有限公司 | 基于keepalived的双机热备***的控制方法 |
CN113806181A (zh) * | 2021-09-24 | 2021-12-17 | 重庆富民银行股份有限公司 | 一种Redis多集群自动监控方法及*** |
CN114598711B (zh) * | 2022-03-29 | 2024-04-16 | 百果园技术(新加坡)有限公司 | 一种数据迁移方法、装置、设备及介质 |
CN115037785B (zh) * | 2022-08-12 | 2022-11-01 | 深圳市星卡软件技术开发有限公司 | 即时通讯***及方法 |
CN115484267A (zh) * | 2022-09-15 | 2022-12-16 | 中国联合网络通信集团有限公司 | 多集群部署处理方法、装置、电子设备和存储介质 |
CN116546092B (zh) * | 2023-07-04 | 2023-10-13 | 深圳市亲邻科技有限公司 | 一种基于Redis的物模型存储*** |
CN117251341A (zh) * | 2023-09-27 | 2023-12-19 | 中国科学院空天信息创新研究院 | 缓存服务集群实时监控方法、装置、电子设备及介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105933407A (zh) * | 2016-04-20 | 2016-09-07 | ***股份有限公司 | 一种实现Redis集群高可用的方法及*** |
CN106210151A (zh) * | 2016-09-27 | 2016-12-07 | 深圳市彬讯科技有限公司 | 一种zedis分布式缓存及服务器集群监控方法 |
US20180121304A1 (en) * | 2016-10-27 | 2018-05-03 | Machine Zone, Inc. | System and method for managing a cluster of cache servers (trask) |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106534328B (zh) * | 2016-11-28 | 2020-01-31 | 网宿科技股份有限公司 | 节点连接方法及分布式计算*** |
CN108206843B (zh) * | 2016-12-16 | 2021-06-04 | 北京金山云网络技术有限公司 | 一种集群访问方法及装置 |
-
2019
- 2019-06-21 CN CN201910540450.2A patent/CN110224871B/zh active Active
-
2020
- 2020-06-10 WO PCT/CN2020/095421 patent/WO2020253596A1/zh active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105933407A (zh) * | 2016-04-20 | 2016-09-07 | ***股份有限公司 | 一种实现Redis集群高可用的方法及*** |
CN106210151A (zh) * | 2016-09-27 | 2016-12-07 | 深圳市彬讯科技有限公司 | 一种zedis分布式缓存及服务器集群监控方法 |
US20180121304A1 (en) * | 2016-10-27 | 2018-05-03 | Machine Zone, Inc. | System and method for managing a cluster of cache servers (trask) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110674192A (zh) * | 2019-10-09 | 2020-01-10 | 浪潮云信息技术有限公司 | 一种Redis高可用VIP漂移方法、终端及存储介质 |
CN111444062A (zh) * | 2020-04-01 | 2020-07-24 | 山东汇贸电子口岸有限公司 | 管理云数据库的主节点和从节点的方法及装置 |
CN111444062B (zh) * | 2020-04-01 | 2023-09-19 | 山东汇贸电子口岸有限公司 | 管理云数据库的主节点和从节点的方法及装置 |
CN113535126A (zh) * | 2020-04-14 | 2021-10-22 | 天津科技大学 | 一种基于ssm的房屋租赁平台 |
CN112306720A (zh) * | 2020-11-23 | 2021-02-02 | 迈普通信技术股份有限公司 | 业务***集群管理方法 |
CN112306720B (zh) * | 2020-11-23 | 2022-06-21 | 迈普通信技术股份有限公司 | 业务***集群管理方法 |
CN113079192A (zh) * | 2021-02-08 | 2021-07-06 | 马上消费金融股份有限公司 | 信息处理方法、装置、设备和可读存储介质 |
CN113079192B (zh) * | 2021-02-08 | 2021-12-31 | 马上消费金融股份有限公司 | 信息处理方法、装置、设备和可读存储介质 |
CN114363156A (zh) * | 2022-01-25 | 2022-04-15 | 南瑞集团有限公司 | 一种基于集群技术的水电站计算机监控***部署方法 |
CN114785713A (zh) * | 2022-03-31 | 2022-07-22 | 度小满科技(北京)有限公司 | 一种用于实现Redis集群高可用的方法和代理中间件 |
CN114785713B (zh) * | 2022-03-31 | 2024-02-23 | 度小满科技(北京)有限公司 | 一种用于实现Redis集群高可用的方法和代理中间件 |
Also Published As
Publication number | Publication date |
---|---|
WO2020253596A1 (zh) | 2020-12-24 |
CN110224871B (zh) | 2022-11-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110224871A (zh) | 一种Redis集群的高可用方法及装置 | |
US11445019B2 (en) | Methods, systems, and media for providing distributed database access during a network split | |
US10713135B2 (en) | Data disaster recovery method, device and system | |
US20220303234A1 (en) | Method and system for providing resiliency in interaction servicing across data centers | |
US8676760B2 (en) | Maintaining data integrity in data servers across data centers | |
US7225356B2 (en) | System for managing operational failure occurrences in processing devices | |
KR100711396B1 (ko) | 서버의 이중화 방법 및 이중화 서버시스템 | |
JP2019219954A (ja) | クラスタストレージシステム、データ管理制御方法、データ管理制御プログラム | |
CN114787781A (zh) | 用于启用高可用性受管理故障转移服务的***和方法 | |
CN103647668A (zh) | 一种高可用集群内主机群体决策***及切换方法 | |
CN111130835A (zh) | 数据中心双活***、切换方法、装置、设备及介质 | |
WO2012145963A1 (zh) | 数据管理***及方法 | |
US10826812B2 (en) | Multiple quorum witness | |
CN108369544A (zh) | 计算***中延期的服务器恢复 | |
CN110727709A (zh) | 一种集群数据库*** | |
CN113489691B (zh) | 网络访问方法、装置、计算机可读介质及电子设备 | |
CN105069152B (zh) | 数据处理方法及装置 | |
CN105874433B (zh) | 用于支持分布式数据网格中的异步调用的***和方法 | |
CN104753987B (zh) | 一种分布式会话管理方法及*** | |
CN107357800A (zh) | 一种数据库高可用零丢失解决方法 | |
CN113849136B (zh) | 一种基于国产平台的自动化fc块存储处理方法和*** | |
CN113326100B (zh) | 一种集群管理方法、装置、设备及计算机存储介质 | |
US20190124145A1 (en) | Method and apparatus for availability management | |
JP4856949B2 (ja) | フェイルオーバ方法、フェイルオーバプログラム、および、クラスタシステム | |
CN110266795A (zh) | 一种基于Openstack平台控制方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |