2020年,机器上线需要在八个服务间反复横跳,而且全程手动操作。伴随滴滴业务规模上云,弹性云新增大量物理机,上线操作至少有百次,这时暴露了一个问题:如果按这个速度上线机器,需要大量人力投入到上机器中。因此,弹性云急需一个平台来管理宿主的上下线。

从无到有
DevOps,标准先行
在 DevOps 实践中,标准化是非常重要的一环。弹性云的所有机器都是围绕服务树管理的。由于之前是由人工管理,弹性云机器在服务树上的挂载情况非常混乱。因此,为了机器管理更标准,弹性云首先定义了服务树节点标准和规范,将宿主机生命周期与服务树节点进行关联。具体而言:
机器上线:机器由 backup 节点挂载到 kube-node-init 节点初始化,然后挂载到线上 kube-node 节点进行报警关联;
机器维修:线上机器挂载到 maintain 节点进行维修,维修完成挂载 kube-node-init 节点进行上线;
机器下线:容器漂移后,线上机器挂载到 pre-offline.backup 节点进行关机退换。

流程拆解,需求分析
标准定义好后,就是对平台需求进行分析,我们首先将宿主机上线、下线和维修的流程进行拆解,如下图所示:

通过分析拆解后的流程,我们得出机器管理平台至少需要具备以下功能:
整个流程耗时较长且为流式任务,所以任务需要异步执行。
平台依赖许多第三方服务,需要支持跳过、重试、暂停等功能,以灵活应对下游异常场景。
各流程之间有重复的步骤,步骤需要能被自由组合,以提升程序的灵活性。
按照 double-check 原则,任务需要以工单形式展现。
架构设计,代码开发
在软件开发中,程序分层是一种常见的软件架构模式,它可以使软件系统更模块化、可扩展和易于维护。需求明确后就可以进入开发流程,从平台的产品形态来看,平台将来的使用流程是:用户创建工单,审批通过后用户执行工单,程序感知到执行动作,执行任务,程序实时反馈任务进度,任务异常时通知用户,用户介入处理,任

文章讲述了弹性云在面对大规模机器上线需求时,通过DevOps标准化和工单管理,开发了mmachine平台,实现了机器上线和下线的自动化,优化了流程,缩短了时间,降低了成本。该平台的成功案例和后续的持续优化展示了云原生环境下的资源管理策略。
最低0.47元/天 解锁文章
522

被折叠的 条评论
为什么被折叠?



