以Mesos和Docker为核心的云操作系统
11月18日,北京数人云COO谢乐冰老师在DBA+社群中间件用户组进行了一次主题为“以Mesos和Docker为核心的云操作系统”的线上分享。小编特别整理出其中精华内容,供大家学习交流。
北京数人云COO
毕业于柏林工业大学计算机系,回国就职于中国惠普,多年服务于电信行业
目前专注于Mesos和容器技术在企业生产环境特定场景的应用,实现业务规模和运维复杂度的逐步解耦,让IT基础架构推进企业在互联网时代持续发展
以Mesos和Dcoker为核心的云操作系统的基本概念,介绍容器和管理平台如何解决互联网中小企业增长问题,包括社交,互联网金融的几个小案例。此外,还会讲述个人对于去IOE的一些看法。
各位好,我叫谢乐(lè)冰,是数人科技的COO,主要负责订盒饭和收快递,肩负起了维系公司文化关键性使命。
我之前在德国读书工作了很多年,主要是做运营商基于IP的核心网有关业务。搞了若干年电信的中间件,硕士论文就是SIP信令的J2EE服务器。还参加过JSR 289的编写,主要是给一帮BEA的大拿打下手。
回国之后在惠普工作,也是做运营商的项目。当时惠普软件的利润基本都被Oracle数据库拿走了,吃够了没有核心技术的苦,总之对于IOE那是羡慕妒忌恨地牙痒痒的诶~~
去IOE,革命不是请客吃饭
想先说两句去IOE。现在很多BP之中都把去IOE当做市场大好机会,包括我们开始的时候,也非常仔细地和之前的集成商朋友研究过场景。
后来慢慢体会到我们这个时代的根本动力是消费互联网,社会信息化的提高、互联网普及是根本动力。是2C人民大众决定了云计算和开源两大趋势:
因为2C不可预期的爆发性增长,所以需要云主机这种资源层的弹性
因为2C业务更替频繁,需求一天三边。互联网公司不得不采用开源技术,主要是方便定制来满足自己特殊需求。
所以归根到底互联网使用云计算和开源软件并非是仅仅是钱的问题,还是处于自身快速增长的需要。
回过头来如果传统企业的的核心业务不是这么快速增长,那么IOE好好地干嘛不用?如果运维成本不是下降个几倍,也完全不值得折腾。
企业服务最终是看他的客户情况,客户牛的2B企业也牛,客户完蛋了2B企业也完蛋。传统银行啥只是刚刚开始下坡路,IOE的垄断性反而会提高,甚至短期利润会大大增加。
所以服务人民大众的是真革命,否则是假革命咯。判断一个项目是否是真云计算需求,不是看是不是国企私企,而是看这个业务是不是会爆发性增长。
所以互联网像土八路、游击队,拿地是大刀长矛,走地是农村包围城市的道路。IOE体系是国民政府,都是海归高知,美国的军火。过去30年社会信息化程度非常低,企业服务基本上都是国企出钱、IOE出枪、集成商搬砖。互联网兴起之后才是劳苦大众开始信息化,BAT带头打土豪分田地。
总之中间件和互联网大家不要互相瞧不起,大家服务的对象就完全不同,不具可比性。
互联网技术一个特点是分布式,核心意思是如何用廉价硬件搭建一个高可用性平台。任何单点都可能失效、任何网络都可能断、任何单点的性能也不保证。
所以普通的中间件应用不能直接搬到云上,因为他们是强烈依靠本地IO(高端存储)和网络。企业上云这么难,说到底是软件架构。
云端软件架构特点就是要适应底层的不靠谱,外国有个Heroku有12条规则。其中有几点比较有特点:
任何部分没有单点,集群化
尽量无状态,share nothing
接口尽量异步化等等
分布式类似市场经济,假设每个人都是自私不靠谱,所以搞出了各种法律规约大家。搞好了创新力大大的,如美国,当然搞不好也可能成印度。传统单体架构类似计划经济,每个部件都是集中控制,严重依赖专用硬件。小范围内性能很好,但长期扩展很难。
所以经常有人问我不改代码能不能上XXX啊,我只能说摸着石头过河吧兄弟。所以云计算和分布式软件架构(也可以说cloud native架构)是息息相关。IOE的统治地位根本是上层软件严重依赖他们,而互联网特点是分布式软件架构+开源软件+廉价通用硬件,绝对是上层建筑决定了经济基础。
说起分布式
上个月拜访了platformcomputing的老板周松年,他就是大名鼎鼎的bind的作者,他的博士论文也是后来各种分布式系统基础之一。
第一代分布式主要是用工作站+以太网实现并行计算,对象都是发动机、芯片制造、制药企业,和互联网没毛关系。
之后大家都知道是Google、BAT这些巨头在内部以分布式架构处理海量互联网数据,和云计算关系也不那么大。
真正推进云计算的还是消费互联网的崛起,大量的App产生了大量数据和计算计算的热点。还是能够回到云计算本质。
云操作系统
大家看一下这张图:
右边是咱们熟悉的传统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等等。
云操作系统核心三个功能:
资源细粒度池化
应用部署和管理自动化
一定程度自动化运维,例如自动的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等等。所以利用云操作系统,未来基本上不需要对这些组件有啥深入理解。
Q1:Mesos是apache的一个开源产品,你们跟apache有什么区别?
A:我们可以粗略比喻为CDH。Mesos就像linux的kernel,需要很多周边组件才能支持业务,我们就是开源软件商业化,做这些周边组件。大家都知道中国软件没法卖钱,服务要靠关系,这是大家熟知的套路。所以我们还要做一些行业解决方案,当然,是针对互联网+云计算场景,紧紧一个中心和两个基本点:以云计算为中小,坚持互联网业务,坚持开源商业化。核心的Mesos我们没有改源代码,如果有问题和需求就向upstream来贡献。
Q2:将相关数据库部署在Mesos上性能会有多少的下降?
A:好问题,Mesos负责资源调度。所以数据库本身还是跑在宿主机的Linux之上。如果底层是挂了分布式存储,那么取决于存储性能,而且数据种类不同。总体上说来,严重依赖数据库性能的架构是要认真考虑如何上云的。有个解决办法是把需要快速变化的部分布到Mesos上,例如web,或者计算逻辑,数据库可以分离用传统方法部署。云计算的核心还是弹性,所以一个项目里面也可以把需要弹性的部分布上去,数据库缓存这些相对固定的部分先不动,需要弹性的,经常更新的,需要灰度发布和持续集成部分。
Q3:就像你说的,Mesos还是有一些坑要填的,那使用这个开源的产品做“不可变基础架构”,是核心了,Mesos本身的技术问题怎么解决?谁来解决?
A:Mesos本身技术问题就是不断踩坑,然后贡献回upstream。当然支撑业务的坑远远不至于mesos本身,对于云操作系统,Mesos是核心,但重要的是上面的API,和下面和各个基础架构的对接。例如不用linux可以用freebds,bsd。mesos并不是不可替换的,但是用户使用习惯和软件架构是不好乱变的,我觉得这个才是关键,分布式技术存在三四十年了,需求和应用场景才是根本性变化,不是技术本身,我们也是在很多项目中汇总经验,不断填坑,而且还有SaaS形式的服务,叫数人云。我们也有SaaS类型的服务,只要有互联网的地方,都可以远程管理集群。此外,会有越来越多类似我们的技术型公司和技术型云计算集成商出现的,这也是需求决定的。
Q4:踩坑,不像互联网企业有强大的技术支撑团队,比如你们,我是否可以认为其实传统企业现在还不适合去用这个呢?
A:传统企业可以考虑新的互联网业务使用,因为有实际需求,我觉得最终取决于业务需求。传统企业有需求执行力还是很强的,按我服务多年运营商的经验,就怕是伪需求。
“DBA+社群”将陆续在各大城市群进行线上专题分享活动,以后每周一、周三晚上为【DBA+专业群】的固定时间,每周二、周四晚上为【DBA+各城市群】的固定时间,每周五晚上为【DAMS架构师精英群】的固定时间,欢迎大家积极加入我们。无论是内容还是形式,有好的建议我们都会积极采纳。
未入群的小伙伴们可先关注DBA+社群微信公众号:dbaplus,回复“我要入群”获得各城市群二维码,再加入你所在的城市微群。
小编精心为大家挑选了近日最受欢迎的几篇热文,回复001,看丁俊的《【重磅干货】看了此文,Oracle SQL优化文章不必再看!》;
回复002,看《灾备故障上了红头文件,容灾技术到底哪家强?》;
回复003,看吕海波的《去不去O,谁说了算?》;
回复004,看胡怡文《PG,一道横跨oltp到olap的梦想之桥》;
回复005,看付新《达梦专家解读:国产数据库也疯狂》。
DBA+社群,是一个以连接全中国DBA为使命的公益性组织,致力于成为DBA界的UBER,充分利用DBA的业余时间,为广大DBA搭建一个学习交流、价值实现、人脉搭建、跨界合作的平台。目前,DBA+社群已于北上广深等全国15大城市成立DBA+城市群,100+业界专家成为联合发起人,6000+跨界DBA加入队伍,每周4次线上技术分享活动同步直播。
扫码关注
DBAplus社群
超越DBA圈子,连接的不仅仅是DBA