一种InfluxDB高可用集群实现系统及方法与流程

文档序号:29075881发布日期:2022-03-01 22:44阅读:872来源:国知局
一种InfluxDB高可用集群实现系统及方法与流程
一种influxdb高可用集群实现系统及方法
技术领域
1.本发明涉及大数据存储技术领域,具体提供一种influxdb高可用集群实现系统及方法。


背景技术:

2.当前,从influxdbv0.9版本以后,用户就无法从开源免费版本创建出influxdb高可用集群。目前只有商业版可以用influxdb enterprise来实现。这样为influxdb使用者带来诸多不便,尤其是在专业设置中的使用,使用者认为是influxdb背后的公司-influxdata试图挤占oss解决方案来获取利润。
3.这种状况对influxdata公司也是无可厚非的,但是商业版的influxdb的费用对不少使用者来说确实是不小的负担。对那些严重依赖influxdb的企业或者组织来说,这都是很高的成本。
4.虽然后来influxdata发行了influx relay这一解决方案,但是因为有诸多未解决的问题,而未被广泛接受。所以需要一个能真正实现高可用架构、解决市场存在的问题的方案。


技术实现要素:

5.本发明的技术任务是针对上述存在的问题,提供一种将指标写入任意数量的influxdb节点,并在所有节点之间分配查询的高可用性的服务的influxdb高可用集群实现系统及方法。
6.为实现上述目的,本发明提供了如下技术方案:
7.一种influxdb高可用集群实现系统,包括bufferson单元、健康状态检查单元和反向代理单元;
8.bufferson单元用于内部缓冲的异步http代理;
9.健康状态检查单元用于监控各节点简况状态,恢复数据时自动遍历删除influxdb节点;
10.反向代理单元由nginx支持,以限制客户端在单位时间内可以发出的http请求数量。
11.作为优选,所述bufferson单元使用队列提供临时性的高可用性存储,为异步缓冲的http处理提供简单的代理功能。
12.作为优选,所述bufferson单元包括replay-组件和recover-组件,replay-组件将http请求直接转发到每个上游节点,将失败的请求放入缓冲区,recover-组件持续处理队列并尝试传递缓冲请求。
13.作为优选,当请求发送到bufferson单元时,通过负载均衡机制,健康状态检查单元转发到influxdb实例。
14.influxdb支持/ping,这可以方便验证服务是否正在运行,但是实际上还需要确保
当节点从临时故障中恢复并且缓存数据仍在刷新时,它不会处理任何查询。因此不能完全依赖调用/ping接口来验证结点是否健康。本地运行健康状态检查,负载均衡器用于将节点置于on/off的状态进行查询。
15.作为优选,在每个influxdb实例上运行一个本地守护程序,influxdb实例执行检查调用influxdb的/ping节点和bufferson判定节点未恢复数据两次检查,两次检查均成功后返回成功。
16.作为优选,反向代理单元中,通过将所有的流量通过nginx和nginx http limit req module实现合理的负载分配。
17.一些客户端的访问模式比较极端,我们希望确保合理的负载分配来避免集群产生问题。通过将所有的流量都通过nginx和nginx http limit req module来实现。因此可以实现更大程度的保证极端访问模式下集群的稳定性。
18.将指标写入任意数量的influxdb节点并在所有节点之间分配查询,以提供高可用性的服务。如果可以构建一个工具来在单个节点上运行可靠的运行状况检查,那么标准负载均衡器就足以解决后者。对于前者,我们必须建立一种机制来转发写入或复制数据。
19.用于向influxdb添加高可用性和故障恢复的技术包括:
20.1、利用重复写入多个独立结点的指标来解决写入高可用性问题;
21.2、利用缓存区有效负载来解决临时故障;
22.3、利用备份还原+缓存区有效负载来解决永久故障问题;
23.4、利用全局和单个数据库速率限制来解决流量峰值问题。
24.添加了bufferson单元、健康状态检查单元和反向代理单元来说明了由influxdb支持的监视堆栈存储层。
25.一种influxdb高可用集群实现方法,该方法通过本发明所述influxdb高可用集群实现系统来实现,将指标写入任意数量的influxdb节点,并在所有节点间分配查询,bufferson单元用于内部缓冲的异步http代理,健康状态检查单元用于监控各节点简况状态,恢复数据时自动遍历删除influxdb节点,反向代理单元由nginx支持,以限制客户端在单位时间内可以发出的http请求数量。
26.作为优选,运行定时任务时,使用rsync定时备份数据,出现临时性故障,bufferson-recovery不断从该缓冲区提取数据,并在节点再次可用时交付运行,启动实例,添加到bufferson,还原备份,启动influxdb,bufferson开始传递缓冲区中的恢复备份的请求。
27.与现有技术相比,本发明的influxdb高可用集群实现方法具有以下突出的有益效果:所述influxdb高可用集群实现方法实现influxdb高可用集群,增加了稳定性和安全性,具有良好的推广应用价值。
附图说明
28.图1是本发明所述influxdb高可用集群实现系统的拓扑图。
具体实施方式
29.下面将结合附图和实施例,对本发明的influxdb高可用集群实现系统及方法作进
一步详细说明。
30.实施例
31.如图1所示,本发明的influxdb高可用集群实现系统,包括bufferson单元、健康状态检查单元和反向代理单元。
32.bufferson单元用于内部缓冲的异步http代理。
33.bufferson单元包括replay-组件和recover-组件,replay-组件将http请求直接转发到每个上游节点,将失败的请求放入缓冲区,recover-组件持续处理队列并尝试传递缓冲请求。bufferson单元使用队列提供临时性的高可用性存储,为异步缓冲的http处理提供简单的代理功能。
34.健康状态检查单元用于监控各节点简况状态,恢复数据时自动遍历删除influxdb节点。
35.当请求发送到bufferson单元时,通过负载均衡机制,健康状态检查单元转发到influxdb实例。
36.influxdb支持/ping,这可以方便验证服务是否正在运行,但是实际上还需要确保当节点从临时故障中恢复并且缓存数据仍在刷新时,它不会处理任何查询。因此不能完全依赖调用/ping接口来验证结点是否健康。本地运行健康状态检查,负载均衡器用于将节点置于on/off的状态进行查询。在每个influxdb实例上运行一个本地守护程序,influxdb实例执行检查调用influxdb的/ping节点和bufferson判定节点未恢复数据两次检查,两次检查均成功后返回成功。
37.反向代理单元由nginx支持,以限制客户端在单位时间内可以发出的http请求数量。
38.反向代理单元中,通过将所有的流量通过nginx和nginx http limit req module实现合理的负载分配。
39.一些客户端的访问模式比较极端,我们希望确保合理的负载分配来避免集群产生问题。通过将所有的流量都通过nginx和nginx http limit req module来实现。因此可以实现更大程度的保证极端访问模式下集群的稳定性。
40.将指标写入任意数量的influxdb节点并在所有节点之间分配查询,以提供高可用性的服务。如果可以构建一个工具来在单个节点上运行可靠的运行状况检查,那么标准负载均衡器就足以解决后者。对于前者,我们必须建立一种机制来转发写入或复制数据。
41.其中用于向influxdb添加高可用性和故障恢复的技术包括:
42.1、利用重复写入多个独立结点的指标来解决写入高可用性问题;
43.2、利用缓存区有效负载来解决临时故障;
44.3、利用备份还原+缓存区有效负载来解决永久故障问题;
45.4、利用全局和单个数据库速率限制来解决流量峰值问题。
46.添加了bufferson单元、健康状态检查单元和反向代理单元来说明了由influxdb支持的监视堆栈存储层。
47.本发明的influxdb高可用集群实现方法,通过所述influxdb高可用集群实现系统来实现。将指标写入任意数量的influxdb节点,并在所有节点间分配查询,bufferson单元用于内部缓冲的异步http代理,健康状态检查单元用于监控各节点简况状态,恢复数据时
自动遍历删除influxdb节点,反向代理单元由nginx支持,以限制客户端在单位时间内可以发出的http请求数量。
48.运行定时任务时,使用rsync定时备份数据,出现临时性故障,bufferson-recovery不断从该缓冲区提取数据,并在节点再次可用时交付运行,启动实例,添加到bufferson,还原备份,启动influxdb,bufferson开始传递缓冲区中的恢复备份的请求。
49.以上所述的实施例,只是本发明较优选的具体实施方式,本领域的技术人员在本发明技术方案范围内进行的通常变化和替换都应包含在本发明的保护范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1