阿里巴巴 Sigma 调度和集群管理系统架构详解

阿里巴巴 Sigma 调度和集群管理系统架构详解

划重点

阿里巴巴 9 年双 11 经历下来,交易额增长了 280 倍、交易峰值增长 800 多倍、系统数呈现爆发式增长。系统在支撑双 11 过程中的复杂度和支撑难度以指数级形式上升。双 11 峰值的本质是用有限的成本最大化提升用户体验和集群吞吐能力,用合理的代价解决峰值。
本文将从阿里巴巴统一调度体系、混部架构、云化架构三个方面详解阿里是如何支撑如此庞大的系统。


统一调度体系

始于 2011 年建设的 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 HT 资源隔离上,做了 Noise Clean 内核特性,解决在 / 离线超线程资源争抢问题。
  • 在 CPU 调度隔离上,CFS 基础上增加 Task Preempt 特性,提高在线任务调度优先级。
  • 在 CPU 缓存隔离上,通过 CAT,实现在、离线三级缓存 (LLC) 通道隔离 (Broadwell 及以上)。
  • 在内存隔离上,拥有 CGroup 隔离 /OOM 优先级;Bandwidth Control 减少离线配额实现带宽隔离。
  • 在内存弹性上,在内存不增加的情况下,提高混部效果,在线闲置时离线突破 memcg limit;需要内存时,离线及时释放。
  • 在网络 QoS 隔离上,管控打标为金牌、在线打标为银牌、离线打标为铜牌,分级保障带宽。

在线集群管理上的关键技术

  • 对应用的内存、CPU、网络、磁盘和网络 I/O 容量进行画像,知道它的特征、资源规格需求,不同的时间对资源真实使用情况,然后对整体规格和时间进行相关性分析,进行整体调度优化。
  • 亲和互斥和任务优先级的分配,哪种应用放在一起使整体计算能力比较少、吞吐能力比较高,这是存在一定亲和性。
  • 不同的场景有不同的策略,双 11 的策略是稳定优先,稳定性优先代表采用平铺策略,把所有的资源用尽,让资源层全部达到最低水位。日常场景需要利用率优先,“利用率优先” 指让已经用掉的资源达到最高水位,空出大量完整资源做规模化的计算。
  • 应用做到自动收缩、垂直伸缩、分时复用。
  • 整个站点的快速扩容缩容,弹性内存技术等。

混合部署指将计算任务引入在线服务集群以提升日常资源效率。把离线任务引入后,CPU 平均利用率从 10% 上升到 40% 以上,同时时延敏感类服务的延迟影响小于 5%,属于完全可接受范围。目前我们整个混部集群已达到数千台的规模,经过了交易核心链路双 11 大促的验证。这项优化可以为日常节省超过 30% 的服务器。今年会扩大 10 倍的部署规模,取得规模化收益。

通过分时复用,达到进一步提升资源效率的效果。上图中的曲线是我们某个应用的流量曲线。它是非常有规律的 , 左边代表晚上波谷期,右边代表白天处于波峰期。正常的混部指占用图中蓝色阴影部分的资源把利用率提高到 40%,弹性分时复用技术是指对应用画像找到应用流量波谷期,对应用缩容,大量释放内存和 CPU,调度更多计算任务。通过这项技术,把平均 CPU 利用率提升到 60% 以上。

PouchContainer 容器和容器化的进展

全面容器化是提升运维能力、统一调度的关键技术。首先介绍一下阿里巴巴内部容器产品 PouchContainre。它从 2011 年开始建设和上线,基于 LXC,在 2015 年初开始吸收 Docker 镜像功能和并兼容容器标准。阿里巴巴的容器非常有特点,它结合了阿里内核,大幅度提高了安全隔离性,目前以百万级规模部署于阿里集团内部。

再来了解一下 PouchContainer 的发展路线。以前用的是虚拟机的虚拟化技术,虚拟化技术过渡到容器技术面临着很多运维体系的挑战。运维体系的迁移有很大的技术成本。我们做到了阿里内部运维和应用视角无缝迁移,有独立 IP,能够 ssh 登录,有独立的文件系统和资源隔离使用量可见性。2015 年以后,阿里巴巴引入容器标准,形成了新的一套容器 PouchContainer 并集成到整个运维体系。

PouchContainer 的隔离性非常好,是富容器,可以登录,看到容器内进程自己占的资源量,有多少进程,进程挂了容器是不会挂的,可以运行很多的进程。兼容性很好, 旧版本内核也支持,对利旧很有帮助。同时经过了百万级容器部署的规模化验证,我们研发了一套 P2P 镜像分发机制,大幅度提升分发效率。同时兼容了业界更多标准,推动标准的建设,支持 RunC 、RunV 、RunLXC 等,经过百万级容器规模的考验,稳定高效,是企业全面容器化的最佳选择。

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 企业享受规模化稳定性和多标准兼容性带来的优势。

PouchContainer 开源地址:https://github.com/alibaba/pouch

云化架构

云化架构运维体系

将集群分为在线任务集群、计算任务集群和 ECS 集群。资源管理,单机运维、状况管理,命令通道、监控报警这类基础运维体系已经打通。在双 11 场景中,我们会在云上划出一个独立的区域与其他场景互通。在互通区域,Sigma 调度可以到计算集群服务器里申请资源,生产 Pouch 容器,也可以到 cloud open API 去申请 ECS,生产出容器的资源。在日常的场景中 Fuxi 可以到 sigma 里申请资源,创建需要的容器。

在双 11 场景中,利用规模化运维系统在容器上构建大量在线服务,包括业务层的混合部署,每个集群都有 online service 和有状态服务及大数据分析。阿里云的独占集群也部署了在线服务和有状态的数据服务,做到了 datacenter as a computer,多个数据中心像一台计算机一样来管理,实现跨多个不同的平台来调度业务的发展所需要的资源。构建了混合云用极低的成本拿到服务器,解决有没有的问题。

先有服务器规模,再通过分时复用和混合部署来大幅度提升资源利用率。真正实现了弹性资源平滑复用任务灵活混合部署,用最少的服务器最短的时间和用最优效率完成业务容量目标。通过这一套云化架构,我们在双 11 实现了新增 IT 成本降低 50%,使日常 IT 成本下降 30%,带来了集群管理和调度领域的技术价值爆发,也说明容器、编排调度技术的流行是一种必然。

阿里调度系统团队,致力于打造全球效率最优的调度和集群管理系统,通过企业级容器和容器平台建设最优云化解决方案。期待和业界同仁一起努力,降低整个行业的IT成本,加速企业的创新发展。



叔同(丁宇),阿里巴巴资深技术专家,8 次参与双 11 作战,阿里高可用架构、双 11 稳定性负责人,阿里容器、调度、集群管理、运维技术负责人。

阿里巴巴调度系统团队为阿里巴巴经济体提供调度、容器和集群管理基础设施,推动阿里巴巴全面云化效率成本最优,为阿里经济体和云业务提供充足的技术竞争力。致力于打造全球领先、效率最优的调度集群管理系统和高效稳定的企业级富容器引擎。

Pouch 容器团队为阿里巴巴经济体提供基础设施领域的容器技术,帮助阿里巴巴全面实现业务容器化,打好集团“云化”战略坚实的基础。团队致力于打造全球领先、高效稳定的企业级富容器引擎。

一个优秀的团队永远都在渴望人才的加入,如果你希望进入技术核心挑战计算机的极限,请加入我们;如果你希望和专注、优秀的人共事,请加入我们;如果你有一颗对优雅代码「执着」的内心,请加入我们!

以下岗位永久开放:Golang 工程师、Java 工程师、调度架构师、容器架构师、混部架构师、集群资源管理研发专家、容器 PaaS 平台技术专家、企业容器平台解决方案架构师等......

内推通道:[email protected]

原文地址:http://blog.51cto.com/13778063/2155360

时间: 2024-10-24 11:57:45

阿里巴巴 Sigma 调度和集群管理系统架构详解的相关文章

t持久化与集群部署开发详解

Quartz.net持久化与集群部署开发详解 序言 我前边有几篇文章有介绍过quartz的基本使用语法与类库.但是他的执行计划都是被写在本地的xml文件中.无法做集群部署,我让它看起来脆弱不堪,那是我的罪过. 但是quart.net是经过许多大项目的锤炼,走到啦今天,支持集群高可用的开发方案那是一定的,今天我就给小结下我的quartz.net开发升级过程. Quartz.net的数据库表结构 如果支持集群与持久化,单靠本机的内存和xml来保存计算任务调度的各种状态值,可想而知,是困难的.所以支持

Nginx搭建集群服务器过程详解

Nginx+Apache+PHP+MySQL搭建集群服务器过程详解 概念介绍在本文未能提及,请自助上网科普,直接进入过程详解: 集群架构图大致如下: 一.软件下载 序号 软件名称 软件版本 下载地址 1 操作系统 Windows Server 2008 Enterprise 64bit 2 Php php-5.6.19-Win32-VC11-x64 Thread Safe(由于HTTP服务器用的apache) http://windows.php.net/downloads/releases/p

高可用,多路冗余GFS2集群文件系统搭建详解

2014.06 标签:GFS2 multipath 集群文件系统 cmirror 实验拓扑图: 实验原理: 实验目的:通过RHCS集群套件搭建GFS2集群文件系统,保证不同节点能够同时对GFS2集群文件系统进行读取和写入,其次通过multipath实现node和FC,FC和Share Storage之间的多路冗余,最后实现存储的mirror复制达到高可用. GFS2:全局文件系统第二版,GFS2是应用最广泛的集群文件系统.它是由红帽公司开发出来的,允许所有集群节点并行访问.元数据通常会保存在共享

Kafka单机、集群模式安装详解(二)

本文环境如下: 操作系统:CentOS 6 32位 JDK版本:1.8.0_77 32位 Kafka版本:0.9.0.1(Scala 2.11) 接上篇 Kafka单机.集群模式安装详解(一) 6. 单节点多Broker模式 Kafka使用可以有多种模式,包括单节点单Broker,单节点多Broker,多节点多Broker. 这里我们简单区分一下: 单节点单Broker:在单台机子上,启动了一个Kafka实例(上一篇就是这种模式). 单节点多Broker:在同一台机子上开启多个Kafka(类似H

linux高可用集群(HA)原理详解

高可用集群 一.什么是高可用集群 高可用集群就是当某一个节点或服务器发生故障时,另一个节点能够自动且立即向外提供服务,即将有故障节点上的资源转移到另一个节点上去,这样另一个节点有了资源既可以向外提供服务.高可用集群是用于单个节点发生故障时,能够自动将资源.服务进行切换,这样可以保证服务一直在线.在这个过程中,对于客户端来说是透明的. 二.高可用集群的衡量标准 高可用集群一般是通过系统的可靠性(reliability)和系统的可维护性(maintainability)来衡量的.通常用平均无故障时间

LVS负载均衡集群服务搭建详解(二)

lvs-nat模型构建 1.lvs-nat模型示意图 本次构建的lvs-nat模型的示意图如下,其中所有的服务器和测试客户端均使用VMware虚拟机模拟,所使用的CentOS 7 VS内核都支持ipvs功能,且安装ipvsadm控制书写lvs规则工具. RS端两台服务器为httpd服务器做请求的负载均衡. 注意: 1) 客户端可以使用Windows上的浏览器,会后缓存影响结果,所以采用CentOS上的curl命令请求http协议显示更加直观 2) DIP上不能配置iptables规则 2.VS网

LVS负载均衡集群服务搭建详解(一)

LVS概述 1.LVS:Linux Virtual Server 四层交换(路由):根据请求报文的目标IP和目标PORT将其转发至后端主机集群中的某台服务器(根据调度算法): 不能够实现应用层的负载均衡 lvs(又称ipvs)是基于内核中的防火墙netfilter实现 2.lvs集群术语: vs:Virtual Server 虚拟服务,可称为Director.Dispatcher分发器.Balancer负载均衡器 rs:Real Server 真实服务器 CIP:Client IP 客户端IP

linux高可用集群(HA)原理详解(转载)

一.什么是高可用集群 高可用集群就是当某一个节点或服务器发生故障时,另一个 节点能够自动且立即向外提供服务,即将有故障节点上的资源转移到另一个节点上去,这样另一个节点有了资源既可以向外提供服务.高可用集群是用于单个节点发 生故障时,能够自动将资源.服务进行切换,这样可以保证服务一直在线.在这个过程中,对于客户端来说是透明的. 二.高可用集群的衡量标准 高可用集群一般是通过系统的可靠性(reliability)和系统 的可维护性(maintainability)来衡量的.通常用平均无故障时间(MT

LVS负载均衡集群服务搭建详解

一.LVS概述 1.LVS:Linux Virtual Server 四层交换(路由):根据请求报文的目标IP和目标PORT将其转发至后端主机集群中的某台服务器(根据调度算法): 不能够实现应用层的负载均衡 lvs(又称ipvs),基于内核中的netfilter实现: PREROUTING--> INPUT OUTPUT--> POSTROUTING PREROUTING--> FORWARD --> POSTROUTING 2.lvs集群术语: vs:Virtual  Serve