后羿射日般的精准 - 阿里云ECS调度是如何炼成的

摘要: 弹性计算服务ECS(Elastic Compute Service)是阿里云营收的中流砥柱和流量担当。作为各行业客户新业务和技术创新的发动机和使能者,ECS不仅能在10分钟内交付出一个中等体量互联网公司所需的全部计算力,更能承载阿里集团双十一极大的峰值弹性需求以及互联网巨头客户业务高峰所需的计算力,帮助所有用户打破计算力边界的限制。

1.引子

弹性计算服务ECS(Elastic Compute Service)是阿里云营收的中流砥柱和流量担当。作为各行业客户新业务和技术创新的发动机和使能者,ECS不仅能在10分钟内交付出一个中等体量互联网公司所需的全部计算力,更能承载阿里集团双十一极大的峰值弹性需求以及互联网巨头客户业务高峰所需的计算力,帮助所有用户打破计算力边界的限制。而默默工作在舞台背后的正是ECS的调度系统,那个传说中的“后羿”。作为一个创建交付了不计其数的虚拟机的资源调度系统,后羿带来的感觉就像蒙娜丽莎的微笑,神秘而好奇。今天就让我们扒一扒“后羿”的前世与今生。

2.上古起源:后羿诞生

时光机回到2009年,那时全球的科技公司都在布局着云计算,演绎的精彩绝伦、百家争鸣,一如当下风口上的区块链、人工智能和新零售。也就在这一年,阿里云初试莺啼,在云计算领域开天辟地,自主研发了盘古、女娲、神农、夸父和伏羲。这些上古大神共同组成了阿里云的云计算基础系统平台--飞天Apsara系统。后羿的诞生也就水到渠成,它基于飞天将计算(Host)、网络(IP)和存储(Pangu块存储)等资源统一调度并通过虚拟化技术生产出一台台可交付给用户使用的虚拟服务器。2010年5月,第一个ECS集群在北京上线了。此时的后羿还是一个单纯的小朋友,干的活就是虚拟机生产线的流程控制,头脑(调度策略)也相对比较简单,因为一个集群内都是同等机型、同一网络Pod、同一个Pangu存储,所以基本都是按静态资源分配的方式进行调度选择。

3.工业革命:野蛮生长

唯快不破!是,就是这么快进入“工业革命”了!虽然后羿还没来得及懵懂几下,但因为ECS上线之后,业务量发展非常迅猛,妥妥地成为阿里云增长最快的业务,没有之一。ECS很快用事实证明以虚拟机的方式出售计算力是云计算商业化最合适的路径,它好比工业时代的蒸汽机,推动着阿里云进入了野蛮生长的时代。

ECS的规模很快达到了近百个飞天集群,而且每周都在继续部署新的集群,加上每周至少发布一个新版本,这样的节奏让我们原来维护和升级后羿系统的同学不堪重负。哇,那些年一起使出洪荒之力的同学,还记得苦苦挣扎的模样吗?伴随着规模的增长,后羿面对的简单小世界一下子变成了星辰大海,调度面临的复杂度与日俱增,需要突破网络Pod,需要突破机房。成长的烦恼不可避免,新的系统架构设计目标,大Region级别的资源管理调度能力,快速迭×××发……

好在借力集团的技术支撑,后羿采用了分布式服务的技术逐步重构演进。这期间最大的挑战是业务在发展,不可能停下来给我们几个月的时间去完成这个任务。我们使用先搭框架、再小步迁移的方案,在不影响业务发展的前提下,把一个一个功能模块,从功能迁移到数据迁移,逐步完成系统升级切换,用时髦的话讲这是给飞行中的飞机换引擎。换了引擎的后羿,从原来的单集群管控系统,升级到了基于分布式服务架构实现的大Region多机房管控系统;调度策略由原来的集群内简单的资源分配模型升级到目前经典的过滤器+权重因子评分模型;管理规模也由一套管控对应最大数百台物理机的集群变成了目前的一套管控可以管理数万物理机规模的集群。经过工业革命的锤炼,我们的后羿小伙子长大成人了。

这个时期ECS逐步完善的上层业务系统,主要提供了几大能力:
标准化的ECS Open API接口,对接官网售卖和API用户;
售卖约束,接入阿里云计费系统,实现了ECS特有的计费模式(包年包月、按量付费等);
在集群粒度配置业务属性和售卖规格,按用户的需求调度集群;
基本的库存服务和水位控制。

4.信息时代:渐入佳境

如果说工业革命时代是规模这个单维度纵向量的高速发展,那么信息时代则是个性化、多元化的多维度发展。一方面,ECS吸引了越来越丰富的客户群体,需求越来越多样化,包括不同的价格需求、稳定性需求、地域需求等等,这就需要ECS包装出不同特点的产品满足不同的客户场景。另一方面,ECS相关的技术爆炸也带来了“百家争鸣”的盛况:虚拟网络团队重点推出了用户可以定制的VPC网络;块存储团队推出高性能的SSD云盘和高性价比的混合SSD云盘,而ESSD云盘则实现了性价比和高性能的雌雄同体;虚拟化团队从最初的Xen全面迁移到KVM,同时推出了异构计算GPU、FPGA虚拟化技术,并开始自研新一代的弹性裸金属云服务器(神龙)。如此多的新产品和新特性对接的是底层几十种物理机型、多种网卡和网络架构、多种虚拟化方案和虚拟存储以及多种版本的虚拟网络。实现产品到资源的精准调度,并最大化资源使用效率,这,就是信息时代下的后羿系统需要提供的基本能力。

在野蛮生长期,集群级的调度由上层业务层负责、集群内的调度由后羿负责,因为当时每个集群部署一种业务,团队的设置也是按这样分两层。但现在为了支撑丰富的产品形态和优化库存效率,同一集群内的每个物理机都可能售卖不同的产品规格,原来那种分层的调度显然已经不合时宜了。我们进行了一次合体手术,重新定义了上下系统的职责分工,上层业务系统负责业务功能,下层后羿系统负责所有的调度相关逻辑。统一了调度逻辑,不仅仅大大提高了后羿的调度能力,同时可以让调度技术驱动产生了更多丰富的产品形态。列举下这个时期调度技术主要支撑的系统功能和产品:

弹无虚发-的精准调度

后羿基于Tag标签对资源进行分组和筛选,可在AZ大范围内实现精细的产品规格调度。丰富的权重因子,让后羿可以在多个目标下权衡出最优的调度决策,最佳配比装箱(最少碎片)那是最低要求,其他的随便举几个例子:
Deployment Set:满足用户自定义的部署位置要求,例如物理机粒度打散几个VM
资源消费打散:保障性能SLA,提升用户体验
客户VM打散
机架功耗平衡
……

神机妙算的库存精细管理

其实VM调度只是后羿的业务爱好,库存管理才是后羿的本职工作。由于产品形态的多样性,同一个地域同一个产品规格按不同付费类型、不同的付费时间计算出来的库存数据都是不同的!很多人知道电商的必杀技之一就是库存和供应链管理,后羿其实就是一个在网上卖VM的掌柜而已啦。他在背后可是耍了很多小聪明的:
库存水位控制:保障每个可用区的每个产品的在接近断供时可以保障刚需弹性扩容和升级需求;
库存共享:应付多种产品的不时之需;
库存预测:预测销售并相应地进行库存调配

卖跳楼价的竞价实例

1折的跳楼价后羿掌柜也敢卖?!是的,他已经卖好久了。这是一种叫竞价实例的游戏,而在游戏中坐庄的正是后羿。说白了,他就是把那些暂时空在那里的资源拿出来临时卖一下。为什么是”临时“?因为后羿在库存充裕时才卖竞价实例,库存紧张时就要收回去。但是回收实例也是有讲究的,不是随便回收的,比如要保证至少运行1小时,要提前5分钟通知,如此等等。那为什么要竞价?在资源紧张的地区多卖点钱?其实更重要的是跟库存的联动,是一种价格杠杆,让客户主动去选择价格便宜库存充足的地区和规格。这其实就是调度客户,背后的道道其实真不少。

火中取栗的性能突发实例

竞价实例虽价格便宜,量又足, 无奈的是因为它会被随时中止释放,所以适合的业务场景有限或者需要技术能力架构适配才能愉快使用。 有没有价格便宜,又不用担心被释放的高性价比实例类型呢?价格便宜、服务有保障的性能突发实例了解一下。这是后羿掌柜和ECS强大的虚拟化团队的一次高水平运作,可谓火中取栗。但在强大的技术保障下,后羿把一个物理线程掰成小片片拿出来卖,而且还能保障SLA。计算力在空闲时积攒人品(Credit),在需要突发计算力时来消费人品(Credit),未来还能拿钱来买Credit。

  1. 智能未来:演绎神话
    未来的大门已然开启,智能的时代已经到来。在经历了野蛮生长和丰富功能的阶段后,后羿步入了深水区,需要更多的智慧和更广阔的视野来精耕细作。云计算的核心竞争力之一就是性价比,后羿未来要做的就是数据驱动的全链路、精细化的库存调配和调度一体化的大闭环,并在各个环节上挖掘使用更智能的方法带来的红利,从数据的可视化、到运营的自动化到最后实现综合的智能化。

后羿的故事还在继续。伴随着ECS业务的发展,风风雨雨的路上,我们眼里一路奇峰异景,执着前进!块存储、虚拟化、虚拟化网络、ECS管控,一群有情有义的兄弟姐妹,一个凝聚力彪悍的团队。当然,后羿是站在了巨人的肩膀上,他的成长离不开飞天云计算平台强大的核心技术和阿里云各个产品的All-In支持!很庆幸在阿里集团,兄弟团队无私的合作和帮助,能让后羿未来真正可以成为一个业界的神话。

原文链接

原文地址:http://blog.51cto.com/13679539/2114069

时间: 2024-10-15 15:45:04

后羿射日般的精准 - 阿里云ECS调度是如何炼成的的相关文章

阿里云ECS搭建Kubernetes集群踩坑记

阿里云ECS搭建Kubernetes集群踩坑记 [TOC] 1. 现有环境.资源 资源 数量 规格 EIP 1 5M带宽 ECS 3 2 vCPU 16 GB内存 100G硬盘 ECS 3 2 vCPU 16 GB内存 150G硬盘 SLB 2 私网slb.s1.small 2. 规划 坑: 上网问题,因为只有一个EIP,所有其它节点只能通过代理上网; 负载均衡问题,因为阿里不支持LVS,负载均衡TCP方式后端又不支持访问负载均衡,HTTP和HTTPS方式,只支持后端协议为HTTP; 为了避免上

阿里云ECS和RDS部分操作

最近外网想部署一个java web项目,因此购买了阿里云ECS 1核1G,linux centos系统.ecs只够安装jdk,tomcat.so数据库先用了免费的RDS试用期. 1.使用RDS刚开始时,发现用数据库连接在本地客户端连接不上,后来发现是需要RDS设置白名单设置对应ip才能连接成功. 2.tomcat部署项目时,在config/service.xml中配置了对应项目的配置以方便访问.在Host之间配置以下一行配置,项目放在tomcat/webapps/下,以下context中path

Highcharts纯js图表库,以后可以跟客户说,你跟阿里云ECS用的图表库是同款

Highcharts是一款纯javascript编写的图表库,能够很简便的在Web网站或Web应用中添加交互性的图表,Highcharts目前支持直线图.曲线图.面积图.柱状图.饼图.散点图等多达18种不同类型的图表,可以满足常用的Web图表需求 ! 近来维护我的阿里云服务器,进入后台偶然发现阿里云管理后台数据图表用的也是Highcharts,刚好正需要WEB端展示数据的东西,研究哈… Highcharts官网:http://www.highcharts.com Highcharts中文站:ht

用阿里云ECS搭建WordPress环境

看着新鲜出炉的阿里云ECS,心中不免有些小激动,下来就是用阿里云配置Web环境了.(系统环境:Ubuntu 14.06 64位) 一.在Ubuntu中安装Apache2(其他linux系统类似) 在安装Apache2之前,我们首先更新系统:apt-get update(解决apt-get找不到软件包的问题 ) 更新完系统之后,我们就可以开始安装Apache2了: 首先在终端输入:apt-get install apache2不要以为安装完成就结束了,这仅仅只是一个开始,然后输入以下代码: apt

阿里云ECS安全防护小记

注册开通阿里云没几天,就有20多次SSH密码破解攻击,基本都被云盾拦截了.SSH密码一定要设复杂些,常用或太简单的密码很容易被攻陷. 下面是密码破解企图的IP记录: 以被拦截8次的123.57.253.27 IP为例,百度下: 如上,可以看到中国科大记录的该IP ssh_password_scan 扫描ssh密码企图. 查了下有两种常用暴力密码破解工具:Hydra.Medusa.可以参考如下三篇文章(仅作技术研究用,请勿作恶): http://blog.csdn.net/jesse__zhong

阿里云ECS的一次简单试用

这是我第一次申请使用云主机,感觉已经落后了一个时代.因为可以试用半年,看起来比Azure的一元钱用一个月和腾讯的15天免费便宜不少,所以图便宜申请了阿里云ECS.Elastic的意思我想大概是强调伸缩性吧,资源紧张的时候直接花钱多买些,回头再研究具体要如何优化. 首先注册有些小麻烦,需要支付宝实名认证,为此我还跑了次银行,开通了快捷支付.但是申请就很快,从提交申请到主机创建快的吓人.比腾讯那个15天试用好多了,那个每天就100台,我连申请都递交不上去. 主机创建后是这个样子. 境外的数据中心只有

关于阿里云ECS Centos 5/6/7 Linux Glibc库严重安全漏洞修复方法

日前Linux GNU glibc标准库的 gethostbyname函数爆出缓冲区溢出漏洞,漏洞编号为CVE-2015-0235.黑客可以通过gethostbyname系列函数实现远程代码执行,获取服务器的控制权及Shell权限,此漏洞触发途径多,影响范围大,请大家关注和及时临时修复.关于阿里云ECS Linux Glibc库严重安全漏洞修复方法.Centos 5/6/7:连接终端,或者putty登录首先检测目前的版本输入命令: rpm -qa | grep glibc 我的显示:glibc-

阿里云ECS安装好宝塔 但访问不了面板的解决办法

阿里云ECS安装好面板后,访问不了宝塔面板的情况,这种错误一般都是阿里云的安全组没有放行8888端口导致的,因为宝塔面板默认是以IP:8888的形式访问的.所以我们要进入到阿里云控制台 放行8888端口,最终才能打开面板. 登陆控制台-安全组-选择你ECS实例使用的安全组策略并配置规则 选择公网入方向-新建规则.注意:如果没有内网公网选择 直接在入方向放行8888端口. 放行8888端口 并开放所有ip访问 点击确定. 要完整使用宝塔面板的所有功能,根据需要放行20 21 30000-40000

阿里云ecs安装docker

1.安装docker  官方文档 https://help.aliyun.com/knowledge_detail/42851.html 这里以Ubuntu下安装Docker为例介绍如何安装Docker. Docker要求Ubuntu操作系统为64位,并且Lunix内核版本至少是3.10.您需要先确认操作系统位数和内核版本符合要求. 如果您的系统符合要求,则可以接着进行操作. 首先,进入Ubuntu系统打开Terminal,更新包管理器,安装程序包. $ sudo apt-get update