数人云工程师手记 | 下一代数据中心操作系统定义与实践

今天这一篇是来自数人云架构师文权在“中生代技术十月十城联动--上海站”的演讲实录。

大家好,我是来自数人云的李文权,之前从事开发工作,今年加入数人云。今天介绍的主题是下一代的数据中心操作系统,主要讲三个方面:第一,数据中心操作系统的发展历程;第二,下一代数据中心操作系统的定义;第三,下一个数据中心操作系统的实践。

数据中心操作系统的发展历程

传统的数据中心和操作系统是两个独立的概念。传统的数据中心其实是一个服务器的农场,里面包含了很多物理的组件,有一个比较专业的数据中心的管理系统做物理硬件的健康检查,并且有一批专业的人士做相关维护。

操作系统大家接触就比较多了,Windows、IOS、安卓等,主要是给用户提供一个使用应用的平台,包括开发应用的平台。数据中心操作系统和数据中心管理系统的区别是什么?前者不单单像管理系统一样是连接物理层和逻辑层的桥梁,它还监控整个物理层和非物理层所有系统运行的状态。

传统数据中心主要是管理一些物理的组件包括服务器、冷却系统,保障整个物理层面的正常运行,包括分配海量资源,储存海量数据。传统行业里面包括金融行业、运营商都会自建一套数据中心,在信息互联网里面包括谷歌、Facebook 等都有占地很大的数据中心。据说谷歌在选数据中心时对地址也有要求,第一,希望靠近湖泊,因为数据中心在冷却时需要大量的水资源;第二,靠近周边有大量的廉价地理如绿色资源;第三,它会考虑与其他数据中心的距离问题,保证多个数据中心间的连接速度;第四,也是最重要的,广泛的用地面积,包括当地一个税收的情况。

现在的数据中心是什么样子的?想象一下我们的笔记本,把它想像成数据中心,当你在使用Chrome或者Sublimetext这样的应用的时候,如果你需要手动的分配CPU、内存、缓存,这个工作对用户来说是非常复杂和麻烦的,还好我们的笔记本都有操作系统,它可以帮我们屏蔽掉这些手动管理的复杂度,那么只要在上面跑应用,就可以去享受生活了。现代的数据中心也需要这样一个操作系统,目前主要是围绕着高效性、多租户和可恢复性,把整个的数据中心抽象并纳管起来。

现在的数据中心操作系统面临一些挑战,我列出三点:第一,安全需求,不单单指会发生危险的网络攻击,也包含了保障整个业务连续性的能力;第二,强大的扩展能力,现在数据中心承载的业务与日俱增,它的扩展能力决定了未来服务的质量;第三,云计算,从今年开始我国在各行各业开始推行云化、上云,说明云计算对整个的IT基础设施架构的提升是非常大的。

下一代数据中心操作系统的定义

现代数据中心操作系统解决的是面向下层的物理资源的管理、提升资源的抽象,并统一进行纳管。作为下一代数据中心操作系统,解决的是面向上层应用快速迭代、快速发布、高扩展性、可维护性的需求。这里有一个非常重要的概念,物理节点不应该是真正应用的隔离抽象,因为在下一代的数据中心我们更多使用的分布式应用,分布式应用如果使用固定IP、比如Machine-specific的本地储存,那么在分布式架构上做一个应用的迁移扩展是非常复杂的。

所以要给出一个明确的定义之前要搞清楚下一代数据中心操作系统在处理什么样的问题:第一,海量的用户,具有高并发的需求;第二,如何去部署分布式的应用;第三,大数据分析,我们身处数字时代,每天每分每秒都会产生大量的数据,要利用这些数据需要做一个数据建模,做一个分析;第四,快速迭代,基于刚才提到每天都要产生数据,如果要获取实时数据的分析结果,就要对业务模型进行的快速迭代,产生更加精确的数据。

分布式应用架构

我简单介绍几个分布式框架。像谷歌、Facebook 这些具有海量用户的公司,它们很早就意识到传统单体应用基于物理机的部署很难满足与日俱增的扩充需求,它们花大量的人力去研究所谓的超大规模的部署框架。听的最多的是Cloud Native,它主要是通过分布式的系统、常规服务的架构提供更好的服务扩展性和可维护性,从而加快了软件迭代的速度。

应用改造的困难

高效的分布式应用的改造主要有如下几个困难点:第一,部署的复杂性,包括划分利用的复杂性。原来在虚拟机上部署单体应用,1-2个管理员就可以做一个启动、监控。在分布式框架下可能需要应用到微服务架构,对原来的单体应用需要做一个拆分,做一个应用边界的划分,会导致在部署、启动和监控上投入更多精力。第三点,当使用微服务架构时,它会帮你解决一些服务之间的耦合性,同时也降低了服务内在的复杂性,把微服务跑在基础设施的时候很可能造成低使用率、物理设施的资源浪费。下面两点包括保持高可用性和多套配置的管理,就不再多说。

Hyperscale VS IaaS Operating Models

比较一下Hyperscale 和原来的IaaS层面的模型。原来单行应用部署在一个虚拟机的基础架构上已经不再需要,因为这样的部署架构已经无法满足现代的应用对扩展的需求。如果把微服务架构应用部署在虚拟机的基础框架上,那么虚拟机的个数增加量是非常大的,消耗了很多数据中心的资源。当部署多套分布式框架应用时,虚拟机单一的资源分配无法满足各种不一样的应用的资源分配和调度策略。

下一代数据中心操作系统的实践

下一代数据中心操作系统主要有以下几个特性:第一,针对于分布式应用的弹性扩充;第二,针对服务的一个高可用性;第三,针对服务的可恢复性、容错性。

传统的资源管理有静态分配和动态分配,这张图里可以看到,每一个不同的服务都分配一个独立的资源空间,一定会造成资源的浪费。在下一代操作系统的管理系统里面,会用一套共享的资源去动态地分配给每一个服务去做资源共享。

应用调度,这里是Mesos的一个框架,它主要有两个组件,一个是MesosMaster,另一个是Mesos Slave。由于所谓的政治正确,Mesos Slave改叫Mesos Agent,Mesos世界里面最著名的就是二级调度。所谓的二级调度就是说Mesos Agent会不停给Mesos Master进行资源的汇报,一旦有任务请求过来,Mesos Master会做一个资源的匹配,一旦匹配合适就把这个任务请求发送给Mesos Agent,然后把这个任务执行权交给任务的本身,所以这种调配的策略下Mesos Master承载的压力是非常轻的,不是性能的瓶颈。

介绍一下现在市场上应用比较多的技术组件和容器,主要有Docker、Rocket、Mesos。这里的Mesos是指Mesos Container,它很早就已经存在,甚至早于Docker。现在Mesos发布了1.0,Mesos Container已经完全可以独立于Docker去执行,直接进入到Docker Image,它有自己的一套持久化的管理和网络的管理。

数据分析的组件,用得比较多的是Spark、Hadoop、Storm,以及与它一起使用的消息队列组件,包括Kafka、RabbitMQ、数据存储,在分布式存储方面常用的有Cassandra、ElasticSearch、MySQL,File System包括NFS、HDFS,NFS在共享存储使用较多,HDFS在分布式大数据情况下做文件存储支持。

企业架构

除了在技术上的革新,企业内部也要做一个文化包括流程的改革。第一developer agility,希望提高code to production的速度,而不是让开发把编码的速度加快。在企业内部需要把原来在虚拟机层面部署的单体应用做一个拆分,可能需要拥抱一些新的技术,比如容器、大数据。第二点data agility,在企业内部不单收集数据,而且要把数据反映的结果到应用里面,与云业务应用做一个集成,这个层面使数据带来更多的实践性。

实现企业转型的最关键因素,总结三点如下:第一,正确的技术选型。第二,一个合适的执行模型,包括CICD框架。第三点最重要,也是21世纪最贵的,就是人才。

数人云操作系统

这张图是我们数人云操作系统的一个逻辑框架。数人云操作系统是下一代数据中心操作系统的先行实践,它可以从纵向和横向两个方向去看。纵向有三层,最下面一层是基础架构资源,所谓资源管理的抽象。上面对接的是数人云平台,数人云平台实现一个PaaS的功能,包括弹性扩充、日志收集、应用监控。通过这个PaaS功能我们会提供一个应用调度来支持不一样的业务应用,包括Cloud Native的应用、Java和Weblogic应用,包括大数据的Hadoop、RabbitMQ。从横向来看通过数人云的API可以对接客户原有的一些系统,我们称之为外围平台,不改变客户原有的流程就能够使用到数人云操作系统,也可以通过它实现DevOps的实践、持续集成、持续发布。

我的分享就到这里,谢谢大家。