作为微软首席执行官,萨蒂亚·纳德拉可能还是位初来乍到的新人,但他对于该公司的关键性内部工具以及与Amazon及谷歌开展竞争的方案早已非常熟稔:这正是名为Autopilot的一款复杂度极高的软件系统。
Autopilot是一款帮助微软将数百万台服务器以及上万PB海量数据融合成一整套庞大强劲计算及存储资源池的工具。如果没有Autopilot,纳德拉之前所领导的服务器与工具、在线服务、搜索与广告乃至云与企业部门都将变得一塌糊涂、完全没有可靠性可言。
谈到使用Autopilot的感受,Windows Azure业务总经理Mike Neil在接受我们采访时表示,就像手握着“一辆价值数十亿美元的超级豪车的钥匙。”
微软很少在公开场合谈论Autopilot,而且迄今为止也只在两份官方文件中谈到过这款工具:一份发布于2007年、如今早已过时的文章,题为《Autopilot:自动化数据中心管理》;另一个则是2013年发布的网页,其中解释了Autopilot的开发团队如何凭借在这套系统研发工作中的不懈努力赢得“杰出技术成就”奖。
Autopilot之所以一直保持笼罩着神秘的面纱,部分原因在于直到现在、微软营销部门仍宣称它用于运行云环境的全部组件都能为公众所直接购买。
对于熟悉分布式系统的行家们来说,大型IT设施的特殊性质以及复杂的相关要求绝不是轻易就能搞定的,因此微软的这种说辞始终难以令人信服。不过如今我们终于揭开了正确答案:没错,微软确实在内部使用了大量自有商用软件来运行云环境,但“绝大多数”运行在微软数据中心内的应用程序最终都要以Autopilot系统为基础。
“Autopilot软件现在已经彻底实现了整个服务器运行周期的自动化目标,从启动、操作系统安装到故障检测与修复,再到反复启动与供应商不良产品退返,”微软方面解释道,“Autopilot技术小组已经可以顺利谢幕,因为他们打造的方案正通过悄无声息的运转给微软在互联网规模服务的转型带来深远影响与有力支持。”
它同时也有助于为应用程序分配资源、在作业运行时设定进程规划、从数百万台计算设备中收集信息并在最多一分钟之内给出经过优化的可利用信息,而且也成为了其它更为神秘的先进技术的组成部分——例如艾字节级别COSMOS数据分析引擎,我们所熟知的Bing、Xbox Live以及Windows Azure都建立在这套引擎的基础之上。
最后,Autopilot已经与经过重新设计的微软数据中心硬件紧密契合在一起,这标志着微软已经不再从传统供应商手中购买高端设备、转而自行设计商用型廉价服务器——这些计算设备的构成方式已经随着今年一月微软加入Facebook开放计算项目而公诸天下。
换句话来说,如果微软的服务器是提线木偶,那么Autopilot就是幕后那只看不见的操纵之手以及构建木偶表演舞台的关键性角色。
Neil将Autopilot比作了波音747客机:“它庞大、复杂而且轰隆作响”。根据他的解释,这套系统的设计目的在于“将工作负载从飞行员(也就是数据中心系统管理员)肩上卸下来,从而让这些优秀人才能把精力集中在其它更重要的事情身上。”
Autopilot的关键性任务之一就是处理底层基础设施的配置工作。
当微软希望为其遍布全球的“十到一百”家数据中心添加容量资源时,他们通常会在一个集装箱里塞进约上万个计算节点——用微软方面的说法这叫作“ITPAC”。一旦这些设备与数据中心的电网接驳完毕,Autopilot就开始检查所有新服务器是否经过正确配置、相关网络是否工作良好,同时帮助将它们与系统中的其它部分进行对接。
“Autopilot不仅为主机部署并管理操作系统镜像,同时也负责管理已经部署完成的应用程序,”Neil解释称,“这套代理机制与操作系统镜像如影随行,而且也是我们SDN解决方案的组成部分。SDN解决方案同时管理着东西与南北流量,我们的拓朴结构则带来了相当充裕的网络带宽以及路径冗余。”
就算这些服务器已经被纳入微软遍布全球的“超过百万台服务器”网络,Autopilot仍然能够出力辅助对其进行管理。
如果某台服务器发生故障,Autopilot所具备的“自我修复”功能可以预防集群规模下的批量瘫痪,他指出,“设备故障状况时有发生——Autopilot能够采取整治行动,从而帮我们解决这些疑难杂症。这套系统拥有大量自动修复操作规程,我们根本不用操心那些没啥技术含量的鸡毛小事。”
Autopilot还拥有一套极为精巧的调度组件,再用航空领域的例子来打比方,它能像空中交通管制员那样打理微软全球计算设备池内不计其数、大大小小的各类工作负载。
杂技、木偶、转盘演员与监督者
调度工作意味着系统必须以杂质般的精准手法处理不同类型的应用程序,这样才能为第一层应用程序提供可靠的性能保证——例如面向付费客户的Azure工作负载——同时“压缩”低优先级工作负载(例如面向微软内部项目的批处理作业)所占用的资源容量。
“如果大家把操作系统看成是一台计算机的话,那就相当于选择了抢占式调度方案——即在环境中同时运行多个应用程序以及时间片,”Neil解释道,“在这方面,我们正在努力搞定装箱问题——这是个非常经典的难题,要找到最佳答案可不简单、而且对网络处理器来说负担也很重。”
Neil无法就Autopilot调度机制的具体特点提供进一步信息,不过最近由微软研究院发布的一篇学术论文指出,该公司正计划以自动方式进一步提升工作负载压缩流程、从而有效实现作业安排。(另有证据表明,微软内部规模达数EB级别的‘COSMOS’存储采用的是一种名为‘SCOPE’的脚本语言,旨在处理特定的分析类调度任务。)
这种调度组件的存在意味着Autopilot除了扮演木偶操纵者之外,同时也身兼转盘演员角色。
集装箱中的服务器们在被运抵微软数据中心之后,最先遇见的软件就将是Autopilot。
而且与谷歌(即Borg及其继任者Omega)以及Twitter(Mesos)所使用的系统类似,Autopilot的复杂程度使其更像是一位技术娴熟但却不善沟通的同事、而不仅仅是套实用的管理系统。
“我们必须学会习惯的是,要适应放弃对这套系统的全面控制并允许它作出正确的判断与操作,一定得信任它——它可能会采取一些我们自己并不了解的处理步骤,”Neil指出,“这些系统规模如此庞大,以至于没人能对其进行全面追踪。而这也正是该系统的设计目的——处理一切细节事务。”
Autopilot还会收集大量数据,从而帮助微软对自己的基础设施加以分析并由此定位问题。
“我们掌握着全部与处理器负载以及内存负载有关的信息,”Neil解释称,“人们往往容易忽略这样一种普遍状况,即我们所拥有的物理设备是存在容量极限的,第一时间掌握资源剩余情况非常非常重要。可能大家使用的某款应用程序会导致内存耗尽,及时发现这种情况有助于我们对关键性组件进行优化。”
尽管该服务中包含关于CPU、内存、网络以及磁盘使用情况等多种指标,但Neil表示“我们通过实践经验了解到,通过不间断监控所获得的终端到终端测试结果往往更加有效。举例来说,我们可以发出一条搜索查询、验证能否得到有效结果,并比对结果的实际返回时间与我们的预期范围是否相符。我们把这样的工作内容称为监督者。不同的结果能够触发自动修复或者让我们回滚到原先曾经部署过的早期版本。”
从这个角度来说,Autopilot拥有了与谷歌系统截然不同的特性。相比之下,后者利用一项名为CPI2的先进技术收集更多细节指标,并借此帮助谷歌定位运行在单一处理器上的单一任务所遭遇的性能问题,并有选择性地加以解决。
Autopilot的强大实力为微软带来了显著收益,因为它有效提高了该公司在驾驭其价值数十亿美元的计算设备时所表现出的工作效率。随着微软公司在云计算大师纳德拉的带领下逐步向“设备与服务”企业转型,Autopilot的重要性只会随着时间的推移外加微软冲击广阔数字化世界而愈发得到凸显。有了Autopilot,Neil认为微软相当于拥有了“足以应对这个全新云世界的操作系统。”
可以肯定,纳德拉也抱有同样的期望。
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国