• 1
  • 2
  • 3
  • 4
  • 5
阿里云主机ECS 首 页  »  帮助中心  »  云服务器  »  阿里云主机ECS
Mesos企业级运用
发布日期:2016-3-7 21:3:51

  Mesos企业级运用

  

  嘉宾介绍

  谢乐(le)冰,数人科技的COO。

  照片如下图所示:

  

  主要负责订盒饭和收快递 (~ ̄▽ ̄)~*,肩负起了维系公司文化关键性使命。

  他之前在德国读书工作了多年,主要做运营商基于IP的核心网有关业务。做了若干年电信的中间件,硕士论文就是SIP信令的J2EE服务器,参加过JSR 289的编写,主要是给一帮BEA的大拿打下手。回国之后在惠普工作,也是做运营商的项目。当时惠普软件的利润基本都被Oracle数据库拿走了,吃够了没有核心技术的苦。

  插播广告:目前的数人云是一个在公有云和私有云集群上的任务管理平台,帮助企业应对高并发和后台压力快速增长,实现运维团队不动情况下业务规模扩大十倍,永不当机。总之目标是降低高并发业务的门槛,将业务规模和基础架构运维复杂度解耦,解决企业增长的各种瓶颈。

  快来找我: www.shurenyun.com

  主题分享

  1、去IOE,革命不是请客吃饭

  2、聊聊云操作系统

  精彩内容

  1、去IOE,革命不是请客吃饭

  现在很多BP之中都把去IOE当做市场大好机会,包括我们开始的时候,也非常仔细地和之前的集成商朋友研究过场景。后来慢慢体会到我们这个时代的根本动力是消费互联网,社会信息化的提高、互联网普及是根本动力。是2C人民大众决定了云计算和开源两大趋势,原因在此:

  1. 2C不可预期的爆发性增长,所以需要云主机这种资源层的弹性。

  2. 2C业务更替频繁,需求一天三边。互联网公司不得不采用开源技术,主要是方便定制来满足自己特殊需求。

  所以归根到底互联网使用云计算和开源软件并非是仅仅是钱的问题,还是处于自身快速增长的需要。

  回过头来如果传统企业的的核心业务不是这么快速增长,那么IOE好好地干嘛不用?如果运维成本不是下降个几倍,也完全不值得折腾。企业服务最终是看他的客户情况,客户牛的2B企业也牛,客户完蛋了2B企业也完蛋。传统银行啥只是刚刚开始下坡路,IOE的垄断性反而会提高,甚至短期利润会大大增加。

  所以服务人民大众的是真革命,否则是假革命咯。判断一个项目是否是真云计算需求,不是看是不是国企私企,而是看这个业务是不是会爆发性增长。

  所以互联网像土八路、游击队,拿地是大刀长矛,走的是农村包围城市的道路。IOE体系是国民政府,都是海归高知,美国的军火。过去30年社会信息化程度非常低,企业服务基本上都是国企出钱、IOE出枪、集成商搬砖。互联网兴起之后才是劳苦大众开始信息化,BAT带头打土豪分田地。总之中间件和互联网大家不要互相瞧不起,大家服务的对象就完全不同,不具可比性。

  IOE本身还是代表着计算机科学的最高水平。(最近阿里技术宣传声音这么大,多半还是西溪中(市)宣(场)部的行为)

  2、聊聊云操作系统

  互联网技术一个特点是分布式,核心意思是如何用廉价硬件搭建一个高可用性平台。任何单点都可能失效、任何网络都可能断、任何单点的性能也不保证。

  所以普通的中间件应用不能直接搬到云上,因为他们是强烈依靠本地IO(高端存储)和网络。企业上云这么难,说到底是软件架构。云端软件架构特点就是要适应底层的不靠谱,外国有个Heroku有12条规则。其中有几点比较有特点:

  1. 尽量无状态,share nothing

  2. 任何部分没有单点,集群化

  3. 接口尽量异步化等等

  分布式类似市场经济,假设每个人都是自私不靠谱的,所以搞出了各种法律规约大家。搞好了创新力大大的,比如美国,当然搞不好也可能成印度。传统单体架构类似计划经济,每个部件都是集中控制,严重依赖专用硬件。小范围内性能很好,但长期扩展很难。

  所以经常有人问我不改代码能不能上XXX啊,我就只能说摸着石头过河吧兄弟。所以云计算和分布式软件架构(也可以说cloud native架构)是息息相关。IOE的统治地位根本是上层软件严重依赖他们,而互联网特点是分布式软件架构+开源软件+廉价通用硬件,绝对是上层建筑决定了经济基础。所以:

  1. 互联网架构(云端机构)可以直接上

  2. 传统架构可以把数据持久化部分不动,把需要弹性的web放到云上,实现伸缩

  3. 完全传统的业务(强事物),还是不要动了。

  总之云解决的是资源弹性,所以这里就把需要弹性的先搬上来。

  说起分布式,在上个月拜访了platformcomputing的老板周松年,他就是大名鼎鼎的bind的作者,他的博士论文也是后来各种分布式系统基础之一。

  第一代分布式主要是用工作站+以太网实现并行计算,对象都是发动机、芯片制造、制药企业,和互联网没啥关系。之后大家都知道是Google、BAT这些巨头在内部以分布式架构处理海量互联网数据,和云计算关系也不那么大。真正推进云计算的还是消费互联网的崛起,大量的App产生了大量数据和计算计算的热点。还是能够回到云计算的本质。

  IOE本身还是代表着计算机科学的最高水平。(最近阿里技术宣传声音这么大,多半还是西溪中(市)宣(场)部的行为)

  现在大家看一下下面这张图

  

  图的右边是咱们熟悉的传统IT,服务器老大HPDELL,上面是操作系统,然后是系统软件Oracle数据库之类,最上面是应用软件。IOE经过多年都是垂直集成,提供端到端的方案。软件都是闭源,商业模式是卖拷贝+咨询集成服务。钱从国家来,集成商搬砖,IOE出技术。 到了云计算时代。公有云和私有云会从品牌上“代替”服务器厂商。公有云就是aws这些,私有云可能是vmware。SaaS会代替传统企业软件,如salesforce。中间的PaaS,其实还分成两层。一个是应用PaaS,例如七牛、环信,对应的原来的Oracle和赛门铁克这些,提供功能组件。此外还有一层是系统paas,对应的是原来操作系统层面,例如微软和红帽,就是所谓的云操作系统。

  和单机操作系统一样,云操作系统向下管资源,不过不是一台物理机,而是一堆主机,而且分布在不同的地方,有公有云主机、私有云,还有IDC里面的物理机。向上承载各种应用,当然也不限于单机内跑的应用,而是各种分布式、集群化的应用。集群化应用包括hadoop、kafka,mongoDB甚至MySQL集群。普通应用最好是按照上面说的云端架构编写的程序。云操作系统就为这些软件提供了一个非常理想的runtime,代替了之前大家手动部署各种hadoop、spark之类。没有这一层云操作系统,应用必须直面底层异构的云端环境。就像30年前大家买了一台没有linux和windows的电脑,一切要自己手动。手动既是运维展示各种少林拳的场所,也是扩展的噩梦。而且云操作系统实现了对底层异构云端环境的屏蔽,就像linux windows屏蔽了底层硬件差别一样,实现了可移植性。这样可以用同样的方法来管理不同地方的集群。

  下面这张图是云操作系统的图,核心是Mesos,就像Linux的Kernel一样。里面的图例只是意思意思,并不限于这些云。

  

  操作系统向下和各个云对接,管理虚拟机、网络等等资源。就像各种硬件驱动,这样大家就不用手动操作云的API了。

  向上提供应用部署和管理接口,一个应用下来,自动生成一堆实例,部署到相应集群中。功能无非是部署、生命周期管理、删除、监控等等。想想未来一个命令 apt-get install mysql-cluster 啥感觉

  操作系统本身围绕Kernel还要做出一堆组件,就像linux的crontable、socket、top、apt-get甚至Gnome、KDE等等。

  云操作系统核心三个功能:

  1. 应用部署和管理自动化

  2. 资源细粒度池化

  3. 一定程度自动化运维,例如自动的failover、auto scaling 自动扩展

  运维同事可以理解,无非是把大家日常90%的重复性工作标准化、自动化和接口化了。其实Openstack Vmware这些是将物理层给接口化、标准化和自动化。或者用通俗的话说,就是把原来CMDB和各种puppet脚本之类给用一个主流开源产品替代了。

  说起好处,对于运维的同事就是可以把力量花在那些无法标准化的部分,这也是运维经验和知识的体现。例如向上贴近优化用户体验,这样离业务可以更近。向上走一步,对于业务的同事来说,实际上就是把业务的增长和底层基础架构复杂度解耦。公司从1台主机到1000台主机,用户量从1万到1千万,同一个IT基础架构可以支撑企业持续增长。

  公有云虽然提供了资源池弹性,但是各种App照样该挂就挂,为啥呢?还是因为应用运维还是传统一个萝卜一个坑方式,把线下物理机那一套搬到云端。只有引用运维和底层运维结合,整个系统才有弹性。这也是大家多年标准化和自动化所追求的。

  现在满大街都是找CTO的,其实他们找的是一个知道啥时候采用什么技术架构的人,很多企业都因为还来不及重构就已经挂掉。公有云和云操作系统的组合,就可以给企业提供一个可以持续增长的基础架构。软件重构要平滑很多,不会伤筋动骨一切推倒重来。

  底层硬件LInux环境因为不变,所以基本不需要维护。

  互联网企业另外一个增长是突然性爆发,就像是一个秒杀场景,云操作系统+公有云提供了真正的auto scaling。

  

  这是我们做的一个实际场景,上图一到高峰期就挂。下面我们使用mesos来把云主机资源池化,到高峰期就自动增加实例,资源池光了就自动掉云接口开主机。新主机也不用装代码,加入资源池就好了,这样彻底将底层服务器编程提供计算资源的铁盒子。

  以前是先开发软件,然后再提出硬件需求,硬件适应软件。但是以后会变成用通用硬件做资源池,一次大量采购同类型的硬件,软件运行环境和运行资源完全分离。底层硬件LInux环境因为不变,所以基本不需要维护。

  按腾讯游戏云的说法,他们所有游戏跑在一个类似mesos的平台(盖亚),资源利用率从5%提升到60-90%。例如美国verizon,利用mesos来虚拟化数据中心,资源利用率从15%提升到60%。

  还有就是廉价的HPC方案,超算。小生物、制药等等公司,互联网金融等等。利用mesos可以快速搭建各种spark、hadoop、kafka集群。还有就是混合云和跨云管理,例如传统用户上云,一般先搞个私有云。如果使用云操作系统来管理,将来上到公有云的时候非常平滑,几乎无感。

  另外一个场景就是灾备,例如top3的票务公司的一个部门就分享过他们的灾备预演。他们利用Mesos来承载他们的生产环境,然后可以8分钟内可以快速在其他云或者IDC复制一个生产环境。平时同步好数据,通过mesos的可以非常容易维护几个灾备环境,原来一帮人就搞定了。

  要部署和运维各种互联网技术,刚搞明白hadoop又有了spark现在又有啥flin等等。所以利用云操作系统,未来基本上不需要对这些组件有啥深入理解。

  总之,数人云的目标是降低高并发业务的门槛,将业务规模和基础架构运维复杂度解耦,解决企业增长的各种瓶颈,谢谢大家。

  问:传统应用如何能够上容器云?

  答:一般步骤如下所示:

  1. 容器化,把大象塞进冰箱

  2. 配置和应用分离

  3. 无状态改造

  然后

  1. 互联网架构(云端机构)可以直接上

  2. 传统架构可以把数据持久化部分不动,把需要弹性的web放到云上,实现伸缩

  3. 完全传统的业务(强事物),还是不要动了。

  总之云解决的是资源弹性,所以首先就把需要弹性的先搬上来。