本申请涉及负载均衡调度,具体涉及一种基于dns和ctdb的分布式负载均衡调度方法及装置。
背景技术:
1、随着互联网应用的不断发展,集中式处理任务渐渐的无法应对高负载、高并发的场景。采用分布式处理任务,可以将任务分解为多个并行执行的小任务并交给多台计算节点并行完成,从而大幅度提高处理效率。
2、分布式处理任务的基础在于负载均衡的调度问题。调度是指在给定一系列任务和多台可以执行这些任务的计算节点的情况下,通过特定策略有效地将这些任务分配给各个节点进行处理。而负载均衡是在调度过程中必须要注意到的问题。若负载均衡处理不当,会导致部分节点压力过高的同时又有部分节点较为空闲,从而浪费性能资源并加大时间开支。
3、目前,常用的负载均衡模式有集中式负载均衡和进程内负载均衡两种。
4、集中式负载均衡(即服务端负载均衡),其负载均衡器设置在一台单独的主机上,通过使用对应功能的软件实现负载均衡(例如nginx、apache等),也可以使用专门的负载均衡设备(例如f5)实现负载均衡,集中式负载均衡的原理如图1所示。集中式负载均衡可以充分利用负载均衡器性能,根据不同的负载均衡策略将对应任务分发至计算节点上。但是,由于所有的任务都需要通过负载均衡器,所以一旦负载均衡器本身出现问题便会导致计算节点无法接收到任务,进而导致整个系统停止工作。此外,由于所有任务均由负载均衡器分配,在高负载场景下会有一定的性能损失。
5、进程内负载均衡(即客户端负载均衡)是针对集中式负载均衡做了改进,其原理如图2所示,进程内负载均衡中,服务端的每个计算节点注册自己的地址到注册中心,而客户端从服务中心获取地址后,按照自己的负载均衡策略调用对应的节点。进程内负载均衡相比于集中式负载均衡,解决了负载均衡器的单点问题,使对应的负载能力落在每一个客户端上,即使某一个计算节点出现问题,客户端也可重新获取其他的节点地址。但是,由于每个客户端都需要自行实现负载能力,所以若客户端的技术栈不同,则开发及维护成本会明显提高,技术难度较大。
技术实现思路
1、为此,本申请提供一种基于dns和ctdb的分布式负载均衡调度方法及装置,以解决现有技术存在的负载均衡方法可靠性低、成本高的问题。
2、为了实现上述目的,本申请提供如下技术方案:
3、第一方面,一种基于dns和ctdb的分布式负载均衡调度方法,所述方法应用于服务提供方,所述服务提供方在dns解析服务上为ctdb集群中的所有计算节点注册了同一域名下相同名称的ip地址记录,所述方法包括:
4、步骤1:接收客户端通过web发送的域名访问请求;
5、步骤2:通过所述dns解析服务解析所述域名访问请求,并接收所述dns解析服务根据策略返回的可用ip地址;
6、步骤3:将所述域名访问请求通过所述ip地址发送至对应的计算节点;所述计算节点接收到所述域名访问请求后进行处理,并返回处理结果,同时将所述处理结果保存至所述计算节点的ctdb数据库。
7、作为优选,所述dns解析服务为阿里云或cloudflare。
8、作为优选,所述步骤2中,所述策略为循环、随机或加权轮询。
9、作为优选,所述步骤3中,将所述处理结果保存至所述计算节点的ctdb数据库时是与所述计算节点本地的守护进程进行交互。
10、作为优选,所述步骤3中,所述ctdb数据库接收到保存指令后锁定整个ctdb数据库,然后再执行写入操作。
11、作为优选,所述步骤3中,将所述处理结果保存至所述计算节点的ctdb数据库后还包括:所述计算节点根据自身调度策略,异步将所述处理结果保存至其他计算节点。
12、作为优选,若所述ctdb集群中的计算节点出现故障,则将所述计算节点标记为故障节点,若故障节点接收到域名访问请求,则将域名访问请求重新分配至其他非故障节点,同时,对故障节点进行恢复处理,若故障节点恢复正常,则取消故障标记,并重新标为可用。
13、第二方面,一种基于dns和ctdb的分布式负载均衡调度装置,所述装置设置在服务提供方,所述服务提供方在dns解析服务上为ctdb集群中的所有计算节点注册了同一域名下相同名称的ip地址记录,所述装置包括:
14、访问请求接收模块,用于接收客户端通过web发送的域名访问请求;
15、域名解析结果接收模块,用于通过所述dns解析服务解析所述域名访问请求,并接收所述dns解析服务根据策略返回的可用ip地址;
16、访问请求发送模块,用于将所述域名访问请求通过所述ip地址发送至对应的计算节点;所述计算节点接收到所述域名访问请求后进行处理,并返回处理结果,同时将所述处理结果保存至所述计算节点的ctdb数据库。
17、第三方面,一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现基于dns和ctdb的分布式负载均衡调度方法的步骤。
18、第四方面,一种计算机程序产品,包括计算机程序或指令,该计算机程序或指令被处理器执行时实现基于dns和ctdb的分布式负载均衡调度方法的步骤。
19、相比现有技术,本申请至少具有以下有益效果:
20、本申请提供了一种基于dns和ctdb的分布式负载均衡调度方法及装置,方法应用于服务提供方,服务提供方在dns解析服务上为ctdb集群中的所有计算节点注册了同一域名下相同名称的ip地址记录,方法包括:接收客户端通过web发送的域名访问请求;通过dns解析服务解析域名访问请求,并接收dns解析服务根据策略返回的可用ip地址;将域名访问请求通过ip地址发送至对应的计算节点;计算节点接收到域名访问请求后进行处理,并返回处理结果,同时将处理结果保存至计算节点的ctdb数据库。本申请提供的基于dns和ctdb的分布式负载均衡调度方法及装置可靠性高、成本低。
1.一种基于dns和ctdb的分布式负载均衡调度方法,其特征在于,所述方法应用于服务提供方,所述服务提供方在dns解析服务上为ctdb集群中的所有计算节点注册了同一域名下相同名称的ip地址记录,所述方法包括:
2.根据权利要求1所述的基于dns和ctdb的分布式负载均衡调度方法,其特征在于,所述dns解析服务为阿里云或cloudflare。
3.根据权利要求1所述的基于dns和ctdb的分布式负载均衡调度方法,其特征在于,所述步骤2中,所述策略为循环、随机或加权轮询。
4.根据权利要求1所述的基于dns和ctdb的分布式负载均衡调度方法,其特征在于,所述步骤3中,将所述处理结果保存至所述计算节点的ctdb数据库时是与所述计算节点本地的守护进程进行交互。
5.根据权利要求1所述的基于dns和ctdb的分布式负载均衡调度方法,其特征在于,所述步骤3中,所述ctdb数据库接收到保存指令后锁定整个ctdb数据库,然后再执行写入操作。
6.根据权利要求1所述的基于dns和ctdb的分布式负载均衡调度方法,其特征在于,所述步骤3中,将所述处理结果保存至所述计算节点的ctdb数据库后还包括:所述计算节点根据自身调度策略,异步将所述处理结果保存至其他计算节点。
7.根据权利要求1所述的基于dns和ctdb的分布式负载均衡调度方法,其特征在于,若所述ctdb集群中的计算节点出现故障,则将所述计算节点标记为故障节点,若故障节点接收到域名访问请求,则将域名访问请求重新分配至其他非故障节点,同时,对故障节点进行恢复处理,若故障节点恢复正常,则取消故障标记,并重新标为可用。
8.一种基于dns和ctdb的分布式负载均衡调度装置,其特征在于,所述装置设置在服务提供方,所述服务提供方在dns解析服务上为ctdb集群中的所有计算节点注册了同一域名下相同名称的ip地址记录,所述装置包括:
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
10.一种计算机程序产品,包括计算机程序或指令,其特征在于,该计算机程序或指令被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。