本系统的目的:
一种基于k8s的故障自愈系统,通过监测系统的关键参数、状态,可及时发现系统的异常和故障,并快速启用预设的自愈方案,精准的进行系统问题修复,最终实现故障自动化恢复的目的。
详细说明:
故障自愈系统架构和模块
故障自愈系统是一个用于监测、检测和自动处理系统故障的关键组件。它的架构包括多个模块,每个模块具有特定的职责和功能。
1. 故障指标
故障指标是用于判断系统是否发生故障的标志。这些指标可以包括采集自监测工具(例如Prometheus)产生的异常指标、Kubernetes事件(Events)是否包含特定事件、以及Kubernetes节点是否处于异常状态(NodeCondition)等。此外,系统还允许用户提供自定义检测脚本,以产生新的故障指标,这些指标将供故障自愈系统使用。
2. 故障来源
故障来源是指数据指标的收集源。它可以包括普罗米修斯(Prometheus)、Kubernetes等数据源,这些源提供了用于故障检测的数据。
3. 故障定义
故障定义是通过将故障来源和故障指标结合,详细描述了一个故障的信息。这个定义包括了故障的类型、触发条件和其他相关信息,以帮助系统准确识别和处理故障。
4. 自愈动作
自愈动作是指系统在发生故障后采取的自动化处理措施。这些措施可以包括重启Kubernetes中的Pod、重启宿主机上的进程、将故障节点上的虚拟机迁移到其他节点,以及执行自定义自愈脚本等。
5. 动作预案
动作预案是自愈动作的组合,包括了一系列自愈动作的执行顺序。这确保了故障自愈系统按照正确的顺序采取行动以处理故障。
6. 自愈方案
自愈方案将故障定义和动作预案组合在一起,形成了从故障发生到故障处理的完整处理流程。
系统模块职责
系统各模块在故障自愈系统中扮演不同的角色和职责:
1. 中心控制服务(Center Controller):
中心控制服务是整个系统的核心,负责配置管理和自愈处理结果的汇总。它存储了故障自愈所需的关键控制信息,如自愈方案、故障定义、动作预案和检测脚本。中心控制服务还能够精确控制自愈方案的分发,以便每个边缘集群执行其特定的自愈方案,实现各边缘集群的隔离管理。此外,中心控制服务收集各边缘集群的自愈状态和结果,以便在中心监测各边缘集群的自愈情况。
2. 边缘控制服务(Edge Controller):
边缘控制服务负责将自愈方案、故障定义、动作预案和检测脚本从中心同步到边缘。它还提供检测脚本给故障检测服务,并处理故障检测服务返回的异常信号。一旦检测到异常,边缘控制服务将启动自愈任务,并将其传递给自愈执行服务。最终,它会收集自愈执行的结果并上报给中心控制服务。
3. 故障检测服务(Trouble Check Controller):
故障检测服务接收边缘控制服务提供的检测脚本,并按计划执行这些脚本,实时监测系统的状态。它还通过接口提供自身的检测指标。
4. 指标采集服务(Indicator Collect Controller):
指标采集服务负责从故障检测服务的指标接口中采集数据,并将其保存在系统中。这使得边缘控制服务能够感知系统是否发生异常,并决定是否触发自愈任务。
5. 自愈执行服务(Edge Executor Controller):
自愈执行服务接收边缘控制服务发起的自愈任务。一旦接收到任务,它会执行特定的自愈处理,根据任务的内容进行相应的操作。完成自愈处理后,它将结果返回给边缘控制服务,再由边缘控制服务上报给中心控制服务。
自愈系统:
检测指标:
自愈方案执行: