基于本地存储的有状态应用热迁移方法及相关装置与流程

本技术涉及计算机,尤其涉及一种基于本地存储的有状态应用热迁移方法及相关装置。
背景技术:
1、随着云计算技术的飞速发展,云原生架构逐渐成为企业数字化转型的重要基石。在云原生环境中,应用被设计为可弹性伸缩、高度自动化且具备自我修复能力的微服务形式,这极大地提升了应用的灵活性和可靠性。然而,对于有状态应用而言,如何在保持高性能的同时实现数据的持久化,成为了云原生架构中亟待解决的问题。
2、当前,有状态应用的数据持久化主要面临两大选择:本地存储与分布式存储。本地存储以其低延迟、高吞吐量的特点,为应用提供了卓越的存储性能。通过直接利用宿主机上的存储资源,本地存储能够最大限度地减少数据访问的网络开销,从而显著提升应用的响应速度和吞吐量。
3、然而,现有的基于本地存储的解决方案大多仅停留在数据备份的层面,无法支持应用的热迁移,即在不中断服务的情况下将应用及其数据从一个节点迁移到另一个节点。这一局限性限制了本地存储在云原生环境中更广泛的应用。
技术实现思路
1、鉴于上述问题,本技术提供了一种基于本地存储的有状态应用热迁移方法及相关装置,以达到不仅充分利用本地存储的高性能优势,还通过数据同步和pod迁移技术解决本地存储在云原生环境中应用受限的问题,使得本地存储能够在云原生架构中得到更广泛的应用和部署的目的。具体方案如下:
2、本技术第一方面提供一种基于本地存储的有状态应用热迁移方法,包括:
3、kubernetes集群中主副本节点响应于针对有状态应用的应用pod的卷创建请求,在所述主副本节点上创建本地卷,并建立所述本地卷和所述应用pod的关联关系;
4、所述主副本节点在所述应用pod运行期间,将所述应用pod的持久化数据存储至所述本地卷,同时将所述持久化数据同步到至少一个从副本节点中各从副本节点的数据卷中;
5、所述主副本节点响应于对所述应用pod的迁移请求,根据所述迁移请求,确定目的节点,所述目的节点来自于为所述至少一个从副本节点;
6、所述主副本节点将所述应用pod在所述主副本节点上的临时数据同步至所述目的节点,以完成所述应用pod的迁移。
7、在一种可能的实现中,在所述主副本节点上创建本地卷,并建立所述本地卷和所述应用pod的关联关系之后,还包括:
8、所述主副本节点接收元数据信息;所述元数据信息包括:所述主副本节点的地址和状态;及各从副本节点的地址和状态;
9、所述主副本节点基于所述元数据信息,将所述卷创建请求发送给对应的从副本节点,以使得所述从副本节点创建数据卷。
10、在一种可能的实现中,所述主副本节点在所述应用pod运行期间,将所述应用pod的持久化数据存储至所述本地卷,同时将所述持久化数据同步到至少一个从副本节点中各从副本节点的数据卷中,包括:
11、所述主副本节点在所述应用pod运行期间,接收io写入请求,并基于所述主副本节点本地的元数据信息,将所述io写入请求同步给至少一个从副本节点;
12、所述主副本节点响应于所述io写入请求,将所述io写入请求中的持久化数据存储至所述本地卷;
13、所述主副本节点记录所述io写入请求的同步日志;所述同步日志包括:所述io写入请求的编号、所述持久化数据在所述本地卷中的起始位置、占用的偏移量以及至少一个从副本完成标记;所述从副本完成标记用于指示从副本节点是否已完成对应所述io写入请求的处理;
14、所述主副本节点在接收到所述至少一个从副本节点中从副本节点的完成消息之后,更新所述同步日志中对应的从副本完成标记;
15、其中,所述至少一个从副本节点中各从副本节点在接收到所述io写入请求之后,将所述io写入请求中的持久化数据存储至各自的数据卷,并返回完成消息。
16、在一种可能的实现中,所述方法还包括:
17、基于所述至少一个从副本完成标记,确定已完成同步的从副本节点的数量;
18、如果所述主副本节点已完成对所述持久化数据的存储,所述主副本节点将所述已完成同步的从副本节点的数量加上自身,以确定总共已完成存储的副本数量;
19、如果所述总共已完成存储的副本数量达到设定数量阈值,返回io写入成功消息。
20、在一种可能的实现中,所述方法还包括:
21、在所述主副本节点重新启动后,重新加载所述元数据信息和所述同步日志;
22、所述主副本节点根据所述同步日志的完成标记,确定所述至少一个从副本节点中未完成同步的从副本节点;
23、基于所述元数据信息,重新将所述io写入请求中的持久化数据同步给所述未完成同步的从副本节点。
24、在一种可能的实现中,所述方法还包括:
25、所述主副本节点如果收到新主副本节点的同步请求,将所述主副本节点上的同步日志及未完成同步的所述io写入请求中的持久化数据同步给所述新主副本节点,以使得所述新主副本节点代替所述主副本节点,作为数据同步的源头;
26、所述主副本节点降级为从副本节点,并更新其本地的元数据信息。
27、在本技术的另一方面提供一种基于本地存储的有状态应用热迁移装置,包括:
28、创建模块,用于响应于针对有状态应用的应用pod的卷创建请求,在所述主副本节点上创建本地卷,并建立所述本地卷和所述应用pod的关联关系;
29、第一同步模块,用于在所述应用pod运行期间,将所述应用pod的持久化数据存储至所述本地卷,同时将所述持久化数据同步到至少一个从副本节点中各从副本节点的数据卷中;
30、确定模块,用于响应于对所述应用pod的迁移请求,根据所述迁移请求,确定目的节点,所述目的节点来自于为所述至少一个从副本节点;
31、第二同步模块,用于将所述应用pod在所述主副本节点上的临时数据同步至所述目的节点,以完成所述应用pod的迁移。
32、在本技术的第三方面提供一种主副本节点,包括:处理器和与所述处理器连接的存储器,其中:
33、所述存储器用于存储计算机程序;
34、所述处理器用于执行所述计算机程序,以使所述主副本节点能够实现以下步骤:
35、响应于针对有状态应用的应用pod的卷创建请求,在所述主副本节点上创建本地卷,并建立所述本地卷和所述应用pod的关联关系;
36、在所述应用pod运行期间,将所述应用pod的持久化数据存储至所述本地卷,同时将所述持久化数据同步到至少一个从副本节点中各从副本节点的数据卷中;
37、响应于对所述应用pod的迁移请求,根据所述迁移请求,确定目的节点,所述目的节点来自于为所述至少一个从副本节点;
38、将所述应用pod在所述主副本节点上的临时数据同步至所述目的节点,以完成所述应用pod的迁移。
39、在本技术的第四方面提供一种基于本地存储的有状态应用热迁移系统,包括:
40、kubernetes集群中主副本节点和至少一个从副本节点;
41、所述主副本节点,用于:
42、响应于针对有状态应用的应用pod的卷创建请求,在所述主副本节点上创建本地卷,并建立所述本地卷和所述应用pod的关联关系;
43、在所述应用pod运行期间,将所述应用pod的持久化数据存储至所述本地卷,同时将所述持久化数据同步到至少一个从副本节点中各从副本节点的数据卷中;
44、响应于对所述应用pod的迁移请求,根据所述迁移请求,确定目的节点,所述目的节点来自于为所述至少一个从副本节点;
45、将所述应用pod在所述主副本节点上的临时数据同步至所述目的节点,以完成所述应用pod的迁移。
46、在本技术的第五方面提供一种计算机存储介质,所述存储介质承载有一个或多个计算机程序,当所述一个或多个计算机程序被主副本节点执行时,能够使所述主副本节点实现以下步骤:
47、响应于针对有状态应用的应用pod的卷创建请求,在所述主副本节点上创建本地卷,并建立所述本地卷和所述应用pod的关联关系;
48、在所述应用pod运行期间,将所述应用pod的持久化数据存储至所述本地卷,同时将所述持久化数据同步到至少一个从副本节点中各从副本节点的数据卷中;
49、响应于对所述应用pod的迁移请求,根据所述迁移请求,确定目的节点,所述目的节点来自于为所述至少一个从副本节点;
50、将所述应用pod在所述主副本节点上的临时数据同步至所述目的节点,以完成所述应用pod的迁移。
51、在本技术中,kubernetes集群中主副本节点响应于针对有状态应用的应用pod的卷创建请求,在所述主副本节点上创建本地卷,并建立所述本地卷和所述应用pod的关联关系,所述主副本节点在所述应用pod运行期间,将所述应用pod的持久化数据存储至所述本地卷,同时将所述持久化数据同步到至少一个从副本节点中各从副本节点的数据卷中,以此实现对应用pod的持久化数据的实时同步,这种同步机制可以保证即使主副本节点发生故障,应用pod的数据也能从从副本节点中恢复,从而保障了数据的持续可用性和业务连续性。在此基础上,所述主副本节点响应于对所述应用pod的迁移请求,根据所述迁移请求,确定目的节点,所述目的节点来自于为所述至少一个从副本节点,所述主副本节点将所述应用pod在所述主副本节点上的临时数据同步至所述目的节点,这一过程实现了应用pod的平滑迁移,而无需中断服务,从而保证了业务的连续性和用户的无缝体验。
52、通过上述机制,kubernetes集群不仅充分利用了本地存储的高性能优势,还通过数据同步和pod迁移技术解决了本地存储在云原生环境中应用受限的问题,使得本地存储能够在云原生架构中得到更广泛的应用和部署。
技术研发人员:滕杰,苏祥
技术所有人:亚信科技(中国)有限公司
备 注:该技术已申请专利,仅供学习研究,如用于商业用途,请联系技术所有人。
声 明 :此信息收集于网络,如果你是此专利的发明人不想本网站收录此信息请联系我们,我们会在第一时间删除
