本发明属于软件应用技术领域,具体涉及一种提高数据库可用性的集群、方法、系统及存储介质。
背景技术:
信息时代数据量爆炸式的增长背景下,传统的单点数据库提供的数据存储量和吞吐量在面对增长迅速的业务,恐难提供长期稳定的服务。与此同时,单点数据库也面临着当出现故障之后,服务完全不可用的情况,虽然目前有一些开源的故障转移解决方案,但都或多或少的存在问题。基于此背景,我们最初采用的是开源负载均衡软件lvs与keepalived组件与开源数据库tidb,我们利用lvs keepalived对应用提供透明的,高可用的服务,同时吞吐量易扩展的特点;再利用tidb的分布式存储能力进行有效的存储扩容而不影响应用的正常访问。
相关技术中,随着并发量越来越高,我们需要越来越多的tidbserver来提供计算处理能力,原来的负载均衡架构只能支持一台tidbserver物理机代理一个实例节点,不能同时支持一台tidbserver物理机代理多个实例节点,造成了资源上面的浪费与整体成本上面的上升,除此之外,数据库可用性较低,在部分数据库节点出现故障的情况下,不能实现快速的故障转移并恢复。
技术实现要素:
有鉴于此,本发明的目的在于克服现有技术的不足,提供一种提高数据库可用性的集群、方法、系统及存储介质,以解决现有技术中数据库可用性较低以及不能实现快速的故障转移并恢复的问题。
为实现以上目的,本发明采用如下技术方案:一种提高数据库可用性的集群,包括:
haproxy服务器和数据库;
所述haproxy服务器包括:多个haproxy服务器节点和keepalived节点;所述haproxy服务器节点通过所述keepalived节点接收客户端请求;
所述数据库包括:tidb集群,所述tidb集群包括多个tidb节点;
所述haproxy服务器用于接收客户端的请求并发送至数据库;
所述数据库用于接收所述haproxy服务器发送的请求,并将所述请求分发到多个tidb节点进行执行。
进一步的,多个所述haproxy服务器节点,包括:
haproxy主节点、haproxy从节点。
进一步的,多个所述tidb节点,包括:
tidb计算节点、tidb存储节点、tidb管理节点。
本申请提供一种提高数据库可用性的方法,应用于上述任一实施例提供的提高数据库可用性的集群,包括:
在多个所述haproxy服务器节点构建haproxy服务;
在所述keepalived节点构建keepalived服务;
keepalived服务接收客户端发送的请求通过haproxy服务器节点传送至数据库进行执行。
进一步的,所述keepalived节点设有虚拟ip地址,用于向客户端提供服务。
进一步的,所述keepalived节点设有一主服务器和多台备份服务器;。
当所述主服务器出现故障时,所述虚拟ip地址移动到备份服务器。
进一步的,通过keepalived节点对haproxy服务器节点进行监测,当监测到当前haproxy服务器节点出现故障时,重新选择haproxy服务器节点。
本申请实施例提供一种提高数据库可用性的系统,应用于上述任一实施例提供的提高数据库可用性的集群,包括:
第一构建模块,用于在多个所述haproxy服务器节点构建haproxy服务;
第二构建模块,用于在所述keepalived节点构建keepalived服务;
执行模块,用于keepalived服务接收客户端发送的请求通过haproxy服务器节点传送至数据库进行执行。
进一步的,还包括:
监测模块,用于通过keepalived节点对haproxy服务器节点进行监测,当监测到当前haproxy服务器节点出现故障时,重新选择haproxy服务器节点。
本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任一实施例提供的提高数据库可用性的方法。
本发明采用以上技术方案,能够达到的有益效果包括:
本发明提供一种提高数据库可用性的集群、方法、系统及存储介质,本发明提供的是基于数据库领域与负载均衡领域结合使用来提供数据库高可用的一种解决方案。应用端(例如jdbcclient等)请求通过负载均衡开源软件haproxy提供的代理能力,将应用端请求可以分散到后端多个节点数据库,从而达到数据库层的负载均衡,并且为数据库提供高可用服务,在部分数据库节点出现故障的情况下,能实现快速的故障转移并恢复。
除此之外,本申请通过采用haproxy keepalived的负载架构能代理一台tidbserver物理机上面的多个实例节点,并能对外提供统一的服务出去。二是haproxy能提供有效的图形化负载均衡使用情况,方便用户清晰明了知悉使用情况。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提高数据库可用性的集群的结构示意图;
图2为本发明提高数据库可用性的方法的流程示意图;
图3为本发明提高数据库可用性的系统的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将对本发明的技术方案进行详细的描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所得到的所有其它实施方式,都属于本发明所保护的范围。
下面结合附图介绍本申请实施例中提供的一个具体的提高数据库可用性的方法。
如图1所示,本申请实施例中提供的提高数据库可用性的集群,包括:haproxy服务器200和数据库300;
所述haproxy服务器200包括:多个haproxy服务器节点和keepalived节点;所述haproxy服务器节点通过所述keepalived节点接收客户端100请求;
所述数据库300包括:tidb集群,所述tidb集群包括多个tidb节点;
所述haproxy服务器200用于接收客户端100的请求并发送至数据库;
所述数据库300用于接收所述haproxy服务器200发送的请求,并将所述请求分发到多个tidb节点进行执行。
优选的,多个所述haproxy服务器节点,包括:
haproxy主节点、haproxy从节点。
优选的,多个所述tidb节点,包括:
tidb计算节点、tidb存储节点、tidb管理节点。
具体的,基于所述haproxy主节点和从节点构建haproxy服务。haproxy是由c语言编写的自由开放源码的软件,为基于tcp和http协议的应用程序提供高可用性、负载均衡和代理服务。在高可用性方面:haproxy提供优雅关闭服务和无缝切换的高可用功能;在负载均衡方面:l4(tcp)和l7(http)两种负载均衡模式,至少9类均衡算法,比如roundrobin,leastconn,random等;
健康检方面查:对haproxy配置的http或者tcp模式状态进行检查;会话保持方面:在应用程序没有提供会话保持功能的情况下,haproxy可以提供该项功能;同时还提供监控与统计:通过web页面可以实时监控服务状态以及具体的流量信息等功能。
可以理解的是,基于所述tidb集群包含tidbserver,tikvserver,pdserver3个基础组件组成数据库服务。tidb是一款开源分布式htap数据库,结合了传统的rdbms和nosql的最佳特性。tidb支持无限的水平扩展,具备强一致性和高可用性。其中tidbserver负责接收sql请求,处理sql相关的逻辑,并通过pd找到存储计算所需数据的tikv地址,tidb计算节点(tidbserver)是无状态的,其本身并不存储数据,只负责计算,可以无限水平扩展,可以通过负载均衡组件对外提供统一的接入地址。tidb管理节点(pdserver)是整个集群的管理模块,主要工作是:存储集群的元信息与调度和负载均衡。tidb存储节点(tikvserver)负责存储数据。
如图2所示,本申请实施例中提供的提高数据库可用性的方法,应用于上述任一实施例提供的提高数据库可用性的集群,包括:
s101,在多个所述haproxy服务器节点构建haproxy服务;
s102,在所述keepalived节点构建keepalived服务;
s103,keepalived服务接收客户端发送的请求通过haproxy服务器节点传送至数据库进行执行。
提高数据库可用性的方法的工作原理为:参见图2,所述haproxy主节点和从节点构建haproxy服务;基于所述keepalived节点构建keepalived服务;基于所述tidb集群包含tidb计算节点、tidb存储节点、tidb管理节点等3个基础组件组成数据库服务。步负载均衡代理软件haproxy接受来自应用端的请求,根据设定好路由策略将请求继续往后端数据库进行分发。数据库接受到来自负载均衡代理haproxy的请求,将请求分发到不同的tidbserver上面进行最终执行。
一些实施例中,所述keepalived节点设有虚拟ip地址,用于向客户端提供服务。
可以理解的是,应用端服务访问通过keepalived提供的虚拟ip进行访问。
优选的,所述keepalived节点设有一主服务器和多台备份服务器;。
当所述主服务器出现故障时,所述虚拟ip地址移动到备份服务器。
基于所述keepalived主节点和从节点构建keepalived服务。keepalived是基于vrrp协议的一款高可用软件。keepailived有一台主服务器和多台备份服务器,在主服务器和备份服务器上面部署相同的服务配置,使用一个虚拟ip地址对外提供服务,当主服务器出现故障时,虚拟ip地址会自动漂移到备份服务器。
优选的,还包括:
通过keepalived节点对haproxy服务器节点进行监测,当监测到当前haproxy服务器节点出现故障时,重新选择haproxy服务器节点。
本发明涉及的是基于数据库领域与负载均衡领域结合使用来提供数据库高可用的方法,应用端(例如jdbcclient等)请求通过负载均衡开源软件haproxy提供的代理能力,将应用端请求可以分散到后端多个节点数据库,从而达到数据库层的负载均衡,并且为数据库提供高可用服务,在部分数据库节点出现故障的情况下,能实现快速的故障转移并恢复。
如图3所示,本申请提供一种提高数据库可用性的系统,应用于上述任一实施例提供的提高数据库可用性的集群,包括:
第一构建模块301,用于在多个所述haproxy服务器节点构建haproxy服务;
第二构建模块302,用于在所述keepalived节点构建keepalived服务;
执行模块303,用于keepalived服务接收客户端发送的请求通过haproxy服务器节点传送至数据库进行执行。
本申请提供的提高数据库可用性的系统的工作原理是,第一构建模块301在多个所述haproxy服务器节点构建haproxy服务;第二构建模块302在所述keepalived节点构建keepalived服务;执行模块303keepalived服务接收客户端发送的请求通过haproxy服务器节点传送至数据库进行执行。
一些实施例中,还包括:监测模块,用于通过keepalived节点对haproxy服务器节点进行监测,当监测到当前haproxy服务器节点出现故障时,重新选择haproxy服务器节点。
本申请实施例提供一种计算机设备,包括处理器,以及与处理器连接的存储器;
存储器用于存储计算机程序,计算机程序用于执行上述任一实施例提供的提高数据库可用性的方法;
处理器用于调用并执行存储器中的计算机程序。
本申请提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现步骤:
在多个所述haproxy服务器节点构建haproxy服务;
在所述keepalived节点构建keepalived服务;
keepalived服务接收客户端发送的请求通过haproxy服务器节点传送至数据库进行执行。
综上所述,本发明提供一种提高数据库可用性的集群、方法、系统及存储介质,包括haproxy服务器和数据库;haproxy服务器包括:多个haproxy服务器节点和keepalived节点;haproxy服务器节点通过keepalived节点接收客户端请求;数据库包括:tidb集群,tidb集群包括多个tidb节点;haproxy服务器用于接收客户端的请求并发送至数据库;数据库用于接收haproxy服务器发送的请求,并将请求分发到多个tidb节点进行执行。本发明中应用端请求通过负载均衡开源软件haproxy提供的代理能力,将应用端请求可以分散到后端多个节点数据库,从而达到数据库层的负载均衡,并且为数据库提供高可用服务,在部分数据库节点出现故障的情况下,能实现快速的故障转移并恢复。除此之外,本申请通过采用haproxy keepalived的负载架构能代理一台tidbserver物理机上面的多个实例节点,并能对外提供统一的服务出去。二是haproxy能提供有效的图形化负载均衡使用情况,方便用户清晰明了知悉使用情况。
可以理解的是,上述提供的方法实施例与上述的装置实施例对应,相应的具体内容可以相互参考,在此不再赘述。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令方法的制造品,该指令方法实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
1.一种提高数据库可用性的集群,其特征在于,包括:haproxy服务器和数据库;
所述haproxy服务器包括:多个haproxy服务器节点和keepalived节点;所述haproxy服务器节点通过所述keepalived节点接收客户端请求;
所述数据库包括:tidb集群,所述tidb集群包括多个tidb节点;
所述haproxy服务器用于接收客户端的请求并发送至数据库;
所述数据库用于接收所述haproxy服务器发送的请求,并将所述请求分发到多个tidb节点进行执行。
2.根据权利要求1所述的方法,其特征在于,多个所述haproxy服务器节点,包括:
haproxy主节点、haproxy从节点。
3.根据权利要求1或2所述的方法,其特征在于,多个所述tidb节点,包括:
tidb计算节点、tidb存储节点、tidb管理节点。
4.一种提高数据库可用性的方法,其特征在于,应用于如权利要求1至3任一项所述的提高数据库可用性的集群,包括:
在多个所述haproxy服务器节点构建haproxy服务;
在所述keepalived节点构建keepalived服务;
keepalived服务接收客户端发送的请求通过haproxy服务器节点传送至数据库进行执行。
5.根据权利要求4所述的方法,其特征在于,
所述keepalived节点设有虚拟ip地址,用于向客户端提供服务。
6.根据权利要求5所述的方法,其特征在于,所述keepalived节点设有一主服务器和多台备份服务器;
当所述主服务器出现故障时,所述虚拟ip地址移动到备份服务器。
7.根据权利要求6所述的方法,其特征在于,还包括:
通过keepalived节点对haproxy服务器节点进行监测,当监测到当前haproxy服务器节点出现故障时,重新选择haproxy服务器节点。
8.一种提高数据库可用性的系统,其特征在于,应用于如权利要求1至3任一项所述的提高数据库可用性的集群,包括:
第一构建模块,用于在多个所述haproxy服务器节点构建haproxy服务;
第二构建模块,用于在所述keepalived节点构建keepalived服务;
执行模块,用于keepalived服务接收客户端发送的请求通过haproxy服务器节点传送至数据库进行执行。
9.根据权利要求8所述的系统,其特征在于,还包括:
监测模块,用于通过keepalived节点对haproxy服务器节点进行监测,当监测到当前haproxy服务器节点出现故障时,重新选择haproxy服务器节点。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求4-7任一项所述的提高数据库可用性的方法。
技术总结