统一调度体系始于 2011 年建设的 Sigma 是服务阿里巴巴在线业务的调度系统,围绕 Sigma 有一整套以调度为中心的集群管理体系。 集群管理和调度系统 Sigma 架构图 Sigma 有 Alikenel、SigmaSlave、SigmaMaster 三层大脑联动协作,Alikenel 部署在每一台物理机上,对内核进行增强,在资源分配、时间片分配上进行灵活的按优先级和策略调整,对任务的时延,任务时间片的抢占、不合理抢占的驱逐都能通过上层的规则配置自行决策。SigmaSlave 可以在本机进行容器 CPU 分配、应急场景处理等。通过本机 Slave 对时延敏感任务的干扰快速做出决策和响应,避免因全局决策处理时间长带来的业务损失。SigmaMaster 是一个最强的中心大脑,可以统揽全局,为大量物理机的容器部署进行资源调度分配和算法优化决策。 整个架构是面向终态的设计理念,收到请求后把数据存储到持久化存储层,调度器识别调度需求分配资源位置,Slave识别状态变化推进本地分配部署。系统整体的协调性和最终一致性非常好。我们在 2011 年开始做调度系统,2016 年用 Go 语言重写,2017 年兼容了 kubernetes API,希望结合生态的力量,共同建设和发展。 混部架构阿里巴巴在 2014 年开始推动混部架构,目前已在阿里巴巴内部大规模部署。在线服务属于长生命周期、规则策略复杂性高、时延敏感类任务。而计算任务生命周期短、调度要求大并发高吞吐、任务有不同的优先级、对时延不敏感。基于这两种调度的本质诉求的不同,我们在混合部署的架构上把两种调度并行处理,即一台物理机上可以既有 Sigma 调度又有 Fuxi 调度,实现基础环境统一。Sigma 调度是通过 SigmaAgent 启动 PouchContainer 容器。Fuxi 也在这台物理机上抢占资源,启动自己的计算任务。所有在线任务都在 PouchContainer 容器上,它负责把服务器资源进行分配并运行在线任务,离线任务填入其空白区,保证物理机资源利用达到饱和,这样就完成了两种任务的混合部署。 阿里巴巴混合部署架构图 混部的关键技术内核资源隔离上的关键技术
在线集群管理上的关键技术
混合部署指将计算任务引入在线服务集群以提升日常资源效率。把离线任务引入后,CPU 平均利用率从 10% 上升到 40% 以上,同时时延敏感类服务的延迟影响小于 5%,属于完全可接受范围。目前我们整个混部集群已达到数千台的规模,经过了交易核心链路双 11 大促的验证。这项优化可以为日常节省超过 30% 的服务器。今年会扩大 10 倍的部署规模,取得规模化收益。 混合部署-分时复用进一步提升资源效率 通过分时复用,达到进一步提升资源效率的效果。上图中的曲线是我们某个应用的流量曲线。它是非常有规律的 , 左边代表晚上波谷期,右边代表白天处于波峰期。正常的混部指占用图中蓝色阴影部分的资源把利用率提高到 40%,弹性分时复用技术是指对应用画像找到应用流量波谷期,对应用缩容,大量释放内存和 CPU,调度更多计算任务。通过这项技术,把平均 CPU 利用率提升到 60% 以上。 PouchContainer 容器和容器化的进展全面容器化是提升运维能力、统一调度的关键技术。首先介绍一下阿里巴巴内部容器产品 PouchContainre。它从 2011 年开始建设和上线,基于 LXC,在 2015 年初开始吸收 Docker 镜像功能和并兼容容器标准。阿里巴巴的容器非常有特点,它结合了阿里内核,大幅度提高了安全隔离性,目前以百万级规模部署于阿里集团内部。 再来了解一下 PouchContainer 的发展路线。以前用的是虚拟机的虚拟化技术,虚拟化技术过渡到容器技术面临着很多运维体系的挑战。运维体系的迁移有很大的技术成本。我们做到了阿里内部运维和应用视角无缝迁移,有独立 IP,能够 ssh 登录,有独立的文件系统和资源隔离使用量可见性。2015 年以后,阿里巴巴引入容器标准,形成了新的一套容器 PouchContainer 并集成到整个运维体系。 PouchContainer 定位 PouchContainer 的隔离性非常好,是富容器,可以登录,看到容器内进程自己占的资源量,有多少进程,进程挂了容器是不会挂的,可以运行很多的进程。兼容性很好, 旧版本内核也支持,对利旧很有帮助。同时经过了百万级容器部署的规模化验证,我们研发了一套 P2P 镜像分发机制,大幅度提升分发效率。同时兼容了业界更多标准,推动标准的建设,支持 RunC 、RunV 、RunLXC 等,经过百万级容器规模的考验,稳定高效,是企业全面容器化的最佳选择。 PouchContainer 架构图 PouchContainer 的结构是比较清晰的,Pouchd 如何跟 kubelet、swarm、Sigma 交互。在存储上跟业界一起建设了 CSI 标准。支持分布式存储如 ceph、pangu。在网络上使用 lxcfs 增强隔离性,支持多种标准。 目前 PouchContainer 化覆盖了阿里的大部分 BU,2017 年达到百万级部署,在线业务达到 100% 容器化,计算任务也开始容器化,它拉平了异构平台的运维成本。覆盖运行模式,多种编程语言,DevOps 体系。PouchContainer 覆盖了阿里几乎所有业务板块如蚂蚁、交易、中间件等等。 PouchContainer 于 2017 年 10 月 10 号宣布开源,11 月 19 日正式开源,计划在 2018 年 03 月发布第一个大版本。我们希望通过 PouchContainer 的开源推动容器领域的发展和标准的成熟,给业界提供差异化有竞争力的技术选择。不仅方便传统 IT 企业利旧,老的基础设施也同样能够享受云源生技术带来的好处和优势,而且方便新的 IT 企业享受规模化稳定性和多标准兼容性带来的优势。 本文作者:调度系统负责人叔同(丁宇) |
|