System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及计算机,尤其涉及一种针对大规模分布式服务的故障排查方法。
技术介绍
1、k8s(kubernetes)是一个开源的容器集群编排系统,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。
2、在ai智算大背景下,为了训练更大模型,运行更复杂的服务,通常需要多机多卡动态组网联合训练,在动态组网过程中衍生出了很多架构,例如,master-worker架构、rendezvous架构、parameter server架构和scheduler-worker架构,每种架构都是一种分布式服务的具体实现,随之而来的是分布式服务遇到问题时该如何快速解决。
3、一方面,由于分布式服务本身内在的复杂性,导致出现故障时难定位,需要检查每一个节点的工作状态、运行日志,测试p2p通信是否正常,这个过程耗时费力,并且随着节点数量的增加,定位故障的难度也指数级增加。
4、另外一方面,kubernetes原生的spdy(或者websocket)等debug工具只能针对单个容器进行访问,无法对多个容器同时进行访问,也就无法对整个分布式服务间的故障进行有效的整合。
5、更重要的是这种分布式服务是有状态的,并且worker服务数量巨多(10+/100+/),需要同时排查每个服务的链接状态、运行日志,综合考虑才能找到根因,这对故障解决带来了很大的挑战。
技术实现思路
1、本申请示出了一种针对大规模分布式服务的故障排查方法。
2、第一方面,本申请示出了一种
3、对目标服务进行解析;
4、基于kubernetes应用软件自定义资源定义扩展机制的控制方法,所述控制方法采用主从架构,所述主从架构包括管理节点和多个从属节点,所述管理节点用于协调所述从属节点的工作状态,在每个所述从属节点中注入组网信息环境变量,运行所述控制方法;
5、基于进程间消息传递工具,所述管理节点下发命令,并收集、聚合所有所述从属节点返回的结果,以便将对多个所述目标服务的操作减少成对一个所述目标服务的操作;
6、基于所述kubernetes应用软件和所述进程间消息传递工具,构建全网状链路;
7、基于nsenter机制,链接到所述目标服务;
8、基于控制组群机制的冻结能力,冻结所述目标服务的运行状态,以便对所述目标服务的故障进行排查;
9、故障排查完成后,解冻、恢复所述目标服务的运行状态;
10、删除所述控制方法。
11、根据本申请第一方面的方法,所述对目标服务进行解析,解析出的信息包括架构类型、容器副本数量、目标节点名称、容器名称和容器id。
12、根据本申请第一方面的方法,在每个所述从属节点中注入组网的环境变量包括目标服务容器id、进程id、所述管理节点的服务名称和端口号。
13、根据本申请第一方面的方法,基于所述主从架构,运行管理容器和所述从属容器,所述从属容器与所述目标服务运行在相同的节点上,并且副本数量相同。
14、根据本申请第一方面的方法,所述管理节点下发命令,并收集、聚合所有所述从属节点返回的结果,包括:
15、把所述kubernetes应用软件中目标容器的日志信息、进程信息、网络信息、cpu和内存信息、rdma网卡,以及gpu状态和npu状态转存出来。
16、根据本申请第一方面的方法,所述基于所述kubernetes应用软件和所述进程间消息传递工具,构建全网状链路,包括:
17、基于所述kubernetes应用软件的服务发现能力和所述进程间消息传递工具的分布式能力,每次遍历过程中,选择一个所述从属节点作为服务端,其他所述从属节点作为客户端;
18、直到遍历到最后一个所述从属节点才结束。
19、根据本申请第一方面的方法,所述基于nsenter机制,链接目标服务,包括:
20、给予所述从属容器运行时的特权为真,网络特权均为真;
21、直接链接到目标程序所在命名空间中;
22、将上述方法作为entrypoint命令,方便远程访问时,直接链接到目标容器内部。
23、根据本申请第一方面的方法,所述控制组群机制的冻结能力,冻结所述目标服务的运行状态,包括:
24、将所述目标服务的目标进程的freezer.state设置成frozen,便于观察所述目标服务内部进程的运行状态。
25、根据本申请第一方面的方法,所述故障排查完成后,解冻、恢复所述目标服务的运行状态,包括:
26、把所述目标进程的freezer.state设置成thawed。
27、根据本申请第一方面的方法,所述网络特权包括hostpid、hostipc和hostnetwork。
28、本申请提供的技术方案可以包括以下有益效果:
29、本申请解决了在多机多卡有状态分布式训练场景下故障难定位问题:通过优化命令的下发和收集步骤,减少了人工访问次数,实现把多个目标的操作减少成一个目标的操作。可在管理容器中无缝的访问所有从属容器,无需切换视图,提高了访问效率。同时利用kubernetes应用软件服务发现能力和进程间消息传递工具分布式能力来构建整个全网状通信链路健康检查。进一步把从属容器配置成特权容器,利用nsenter机制,直接链接到目标程序所在命名空间中,并把该方法作为entrypoint命令,方便远程访问时,直接链接到目标容器内部。最后当遇到疑难问题或者异常容器,就需要暂停目标容器的运行状态,有利于对目标服务的问题排查,这对容器来说也是一种非常有效的方法。通过这些步骤,可以加快在多机多卡有状态分布式训练场景下排查问题速度。
本文档来自技高网...【技术保护点】
1.一种针对大规模分布式服务的故障排查方法,其特征在于,所述方法包括:
2.根据权利要求1所述的针对大规模分布式服务的故障排查方法,其特征在于,所述对目标服务进行解析,解析出的信息包括架构类型、容器副本数量、目标节点名称、容器名称和容器ID。
3.根据权利要求1所述的针对大规模分布式服务的故障排查方法,其特征在于,在每个所述从属节点中注入组网的环境变量包括目标服务容器ID、进程ID、所述管理节点的服务名称和端口号。
4.根据权利要求3所述的针对大规模分布式服务的故障排查方法,其特征在于,基于所述主从架构,运行管理容器和所述从属容器,所述从属容器与所述目标服务运行在相同的节点上,并且副本数量相同。
5.根据权利要求1所述的针对大规模分布式服务的故障排查方法,其特征在于,所述管理节点下发命令,并收集、聚合所有所述从属节点返回的结果,包括:
6.根据权利要求1所述的针对大规模分布式服务的故障排查方法,其特征在于,所述基于所述kubernetes应用软件和所述进程间消息传递工具,构建全网状链路,包括:
7.根据权利要
8.根据权利要求1所述的针对大规模分布式服务的故障排查方法,其特征在于,所述控制组群机制的冻结能力,冻结所述目标服务的运行状态,包括:
9.根据权利要求8所述的针对大规模分布式服务的故障排查方法,其特征在于,所述故障排查完成后,解冻、恢复所述目标服务的运行状态,包括:
10.根据权利要求7所述的针对大规模分布式服务的故障排查方法,其特征在于,所述网络特权包括hostPID、hostIPC和hostNetwork。
...【技术特征摘要】
1.一种针对大规模分布式服务的故障排查方法,其特征在于,所述方法包括:
2.根据权利要求1所述的针对大规模分布式服务的故障排查方法,其特征在于,所述对目标服务进行解析,解析出的信息包括架构类型、容器副本数量、目标节点名称、容器名称和容器id。
3.根据权利要求1所述的针对大规模分布式服务的故障排查方法,其特征在于,在每个所述从属节点中注入组网的环境变量包括目标服务容器id、进程id、所述管理节点的服务名称和端口号。
4.根据权利要求3所述的针对大规模分布式服务的故障排查方法,其特征在于,基于所述主从架构,运行管理容器和所述从属容器,所述从属容器与所述目标服务运行在相同的节点上,并且副本数量相同。
5.根据权利要求1所述的针对大规模分布式服务的故障排查方法,其特征在于,所述管理节点下发命令,并收集、聚合所有所述从属节点返回...
【专利技术属性】
技术研发人员:王静,洪瀚思,区锦荣,曹志文,
申请(专利权)人:天翼云科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。