基于OpenStack异构混合云实践

日前, 2016中国云计算技术大会(CCTC)在北京盛大开幕。北京天云融创软件技术有限公司研发总监&首席架构师贾琨参加了本次大会并接受CSDN记者的专访。他介绍了自己对云计算的认识、基于OpenStack异构混合云的实践以及面临的挑战。

他认为云归根结底就是IT资源供给技术,而IT系统必经的过程有云平台建设阶段、业务扩展及支撑阶段、云平台运维服务阶段、资源优化&精细化管理阶段。他也指出在经过几年的实践过程中,他们把做混合云或异构混合云分成几种可能方式:第一种方式是基于VPN的网络联通;第二种,统一用户、统一资源管理视图;第三种,业务的弹性规则管理。在谈到资源调度时,他介绍依据资源使用和业务特性信息,会从两个维度优化资源调度,一个是基于资源负载调度,另一个则是基于业务特性调度。

以下为采访实录:

CSDN:贾老师你好,欢迎你来到我们2016年中国云计算大会CSDN专访间接受我们的采访。关于云计算OpenStack、 容器技术落地的一些问题。请你先介绍你目前的工作和你现在比较关注那些技术?

贾琨:我做云计算相关的时间比较早,最早可以追溯2006年。现在做OpenStack、容器和kubernetes相关技术。我们公司的技术基因是从资源管理、调度来出发来支撑用户的业务。就像我今天分享中讲的,上承载业务,下管理资源。我们的平台是承上启下的作用,这也就是我一直关注的领域,我们公司的产品就是这样演进的。关注的技术点有OpenStack,也包括早期的CloudStack,另外docker、mesos、yarn、kubernetes还有swarm这些东西都会有所涉及。

CSDN:CloudStack现在量比较小,你对目前的这个实际有什么样的意见?

贾琨:国内做CloudStack比较早的有一个天云趋势,是跟我们关系密切的公司,所以我们从2011年开始到2014年一直在用CloudStack。前几年国内有厂商也在用CloudStack来做私有云,甚至有公有云,像天翼云,电信私有云也大量用了CloudStack。大家现在面临的问题是它的演进不够快,功能一直局限于最初始的虚拟化相关服务,没有扩展出像存储服务和上层的部署服务等服务。但从需求的角度来说,大家期待的更多。用户的需求大于它能提供的,所以CloudStack使用量变少很正常。但CloudStack从工程性的角度,从商业的角度做的特别好,甚至在2013年、2014年的时候,它的网络服务是最好,这是大家公认的,所以还有不少公司在用。昨天我们在本次峰会上还看到有公司用CloudStack加上docker 做一些商业化平台的服务,可见CloudStack的生命力还是很强的。总的来看,现在是CloudStack有限使用或者作为公司的内部IT支撑系统,商业产品交付上很少见了。

CSDN:那从天云这边实际的角度,我们会把CloudStack换成OpenStack吗?

贾琨:我们认为技术都有更新换代的方面问题,一个新技术不会突然地就从石头缝风蹦出来,也不会发展的特别好突然地彻底死掉, 有一个更新换代过程。我们会平稳地从CloudStack迁移到OpenStack,让客户继续使用CloudStack但不再发展。同时我们研发一些技术工具,把CloudStack里面比较优秀的基因,比如说VMware管理相关的逐步添加到OpenStack中。在国外,红帽的CloudForms就有类似的功能,能管理物理机、VMware虚拟机及基于OpenStack的KVM,当然未来也可以管公有云。我们是演进的思路,让CloudStack慢慢从主流视野退到幕后,直到承载的业务没有了。其实有一天容器或者OpenStack可能也面临着这个问题,只是进度或者时间会很长。现在还有ZStack这样的技术,它从CloudStack继承了很多很多优秀基因。从这点讲,CloudStack真的死了吗?我觉得这就是一个技术演进的过程。

CSDN:从刚才说,CloudStack使用少主要是源于用户的期望。从你的角度来说,现在对这个云计算技术的期望能概括一下吗?

贾琨:我认为云是提供资源的,它要把资源管理地更好,资源的生命周期都管理起来,管一个虚拟机从生到死。未来用新的技术更新换代,让这个过程平稳一些。不要说只能支持OpenStack,让用户需要有一个比较平稳的演进的路线。厂商或者从业的技术人应该考虑这个问题,这样云才能落地变成真实的生产力。不要让大家都像eBay那样投入很多人把业务迁上去,要让OpenStack用起来简单点。我希望每家公司能够有所专长、分工协作,有竞争有合作。

CSDN:那从你刚才一直强调是要有一个平稳的这个路线,如果要做到这个平稳的演进的话,你觉得挑战在哪些方面?eBay投入很多人力,那么天云这边投入什么样人力来做,做到哪个程度,最后我们哪些是社区来做,哪些是我们自己来做?

贾琨:我认为技术演进的阻力技术上有、管理上有、人的思维上也有。就国内来说,云这样的新兴 IT技术应用在行业是参差不齐的,甚至有的行业还是在用一台物理机搞定所有业务的局面。虚拟化还在普及阶段。国内主要还是管理员思维,云计算则是自助服务甚至共享经济。这个思维需要厂商跟企业合作,教育客户完成思维转变。技术上因为其实新技术特别多,天云的重点是在私有云/公有云管理、资源调度以及应用。我们跟Mirantis(UMCloud)、刻通云在合作,也跟华为在项目上有合作。我们有100个人左右,社区上主要想在容器上做一些事情,将我们的经验贡献出去。OpenStack这点希望跟各个厂商一起做好落地用户,我们提供有特色的云管理,包括业务监控和业务支撑方面产品。同时OpenStack我们会给合作厂商的一些建议,希望能共享到社区中。在容器上,它是一个更面向应用的技术,我们会重点以应用支撑、应用改造、应用迁移为特点,深入到某个行业中。从一个行业得到的一些经验固化成模式,再去复制到另外一个行业。我们的观点是“让云成为生产力”,而不是一个只提供虚拟机的东西,将提供虚拟机或者资源和应用来结合,让你的业务技术上升级换代。

CSDN:刚才谈到OpenStack飞速发展很重要的一个原因,我们在OpenStack技术峰会召开前,也对李明宇老师有采访。他说OpenStack最成功的地方就是社区,从你的角度来看,除了社区以外,OpenStack其他成功的地方还有哪些,包括目前受到其他的这个技术的挑战在哪些方面?

贾琨:除了社区以外,我认为要看OpenStack初始定的目标。它的目标是满足大家的需求的。我认为如果你做的事不满足这个行业的需要,这个技术是没有人给你买单的。OpenStack的目标是对的,它一开始提出的是克隆亚马逊。亚马逊真的是一个很成功的平台,大家认为它不仅在互联网业务支撑做的成功,是对企业应用支持也做的很成功,比如像CloudWatch、AutoScaling这样的设计真的是满足企业的需求。第二个是它能满足用户的需要,这个用户其实是指技术提供厂商。一个升级换代的时代,他们要进入云这个领域以免被淘汰。2011-2012年我还在华为的时候,讨论华为要不要加入OpenStack 的社区,我们写了一堆PPT,做了一堆报告,持续很长时间。我的观点简单说就是“需求在哪里,你的朋友在哪里,你的敌人在哪里,未来的战场在哪里,你就一定要在哪里”。这是大多数公司的诉求:必须要进入云技术这个领域,这个领域代表新的战场和新的需求,代表新的商业机会。简单说,很多的人、公司都要进入云领域。对技术的需求在哪里,这个技术当时恰逢其时,像Cloudstack等都是以虚拟化为核心,别的服务不涉及,不满足需求。其次是技术方向的,它采用SOA设计,分拆了各种服务并不断在增加;最后当然是社区成就的。这是我认为OpenStack之所以能够蓬勃发展的一个很大的内在原因。

CSDN:刚才你提到了,最新出现的ZStack继承了CloudStack的优秀基因,你觉得它未来要发展,从你的需要来说,你觉得它还有哪些方面要考虑的?

贾琨:在国外,一个技术特别优秀基本就可以,使用者把它作为一个工具的,自己一个工具一个工具连接起来来构成一个比较好的方案。但国内一个很大不同是,客户要的是一整体的方案,所以ZStack或者他们自己、或者合作的公司帮他把周边需求解决掉,它要解决这个问题。OpenStack这方面社区做好,ZStack要找到自己的朋友,同时找到自己的客户。

CSDN:你刚才说天云既有OpenStack,也有docker等各个层面不同的技术,我们技术是以什么样的形式来结合成的,为用户提供服务的?

贾琨:这些技术包括了很多层面的需求,有资源管理层面的,也有应用管理层面的。OpenStack主要是资源管理,各种资源服务支持应用,那么docker是面向应用管理,管理应用资源、管理生命周期,包括配置和运行等一系列的东西。这两个技术原则上是相互独立、分离使用的,docker不是必须配合OpenStack,类似的技术都可以。但是这两个蓬勃发展的社区其实都需要对方,而且是要有效地整合。这个也是OpenStack社区当前的一个观点,可以拿OpenStack作为引擎或者说管理核心来构建一个东西,让两个技术更高效、紧密的结合来满足用户,这是我们努力的方向。

CSDN:那如果是从docker的需求,或者kubernetes这个社区来说,一定是需要OpenStack来做一个结合吗?

贾琨:我觉得是一定要有一个很好的组合。既然这两个社区最活跃,参与人数最多,那么这两个社区从生存的角度就需要彼此,当然是有竞争的合作。

CSDN:那你能介绍一下,像docker在天云的实际应用情况是什么样的?

贾琨:我们是从2014年开始跟进容器技术的,去年一年我们只是先把自己容器化了。我们的观点是,如果你做某项技术尤其是做平台的,你自己不用的话就很难让别人放心的去用。所以我们做的第一件事是把我们的产品SkyForm中的所有模块放到容器上来。先从单机版满足开发来做,然后就是测试,最后就是生产。我先把自己向容器上放,然后得到一些经验积累,拿这些经验去找一个行业来改造应用,跟他们一起来往前走,在这个过程中,再去识别一些需求和解决方法。

CSDN:目前我们的进度是什么样的,生产是否完全能用或者有计划吗?

贾琨:生产环境还没有,但是我们计划所有的演示环境还有未来的生产环境全部会用。在国内专门做容器的DockOne社区,我们的工程师专门分享了我们如何做容器化的经验和思路。分享后发出去受到很多人关注,有人找我们说能否我们出一个方案,让他们也能用上容器这个技术。这种经验是很重要的,我们也愿意分享。

CSDN:能不能结合一些核心的原则分享一下。

贾琨:原则我觉要根据需求来,我碰到的需求有这样几类:一类是类似于秒杀类,我们很少做,因为是互联网公司的需求,大家交流交流技术还好,我们一般不碰它;第二类是传统行业,我们是做运营商领域的,这里有很多传统技术,比如说早期还没有大数据技术时处理大量数据就发展出一套技术体系,有很多天生的限制,比如不会用HDFS这样的分布式系统,至少是在核心方面很少用。但是现在面临着一个要上容器的技术潮流,我们一直在沟通,针对这些早期的业务应该如何做。直观的,大家觉得先要把数据和程序分开,所以我们就会关注数据持久化技术,还有自动扩缩技术。比如我们先用存储共享的思路来改造它的应用,不要再沿用单机上做应用的思路,因为以前都是面向小型机的架构。我们现在的思路能不能把存储、持久化的东西抽出来。然后在应用接入上进行改造,屏蔽底层的实现差异,让内部服务慢慢的演进,在底层、上层做文章。上层就是经典的外观模式在体系架构上的使用,先屏蔽内部细节和差异然后慢慢前行;把数据抽离出来,容器数据持久化的技术就是要处理这个问题的技术;另一个会面临是网络问题,我们会在网络上有很多要求。最近我们一直是在考虑,能不能引入一家做容器网络相关的公司跟我们一起来做一些需求。更具体的思路或原则还是微服务化的12原则之类,这个大家都谈的比较多。大体的思路是这样的。

CSDN:那容器网络这一块,我们的核心挑战,还有我们希望能够实现的是什么样的情况?

贾琨:容器网络有好几种技术了,比如说kubernetes原生有一套技术,采用Flannel,现在还有Calico这样的东西,还有open vswitch的技术。从我们的角度来说,我们面临的客户希望网络管理能跟虚拟机的管理思路更接近一些,所以我们向open vswitch靠近。网络这一块大的方向是open vswitch。但是初期会以Calico为主,这就是我们现在的容器网络技术。

CSDN:你刚才特别强调了天云的长处是资源调度方面,做的比较多的、比较好,可以用资源调度的思路来做很多的事情,那么能解释一下资源调度在docker技术方面发挥什么样的作用?

贾琨:资源调度有两个问题,一个是资源供给方的调度,比如说一个资源池内部的调度,大家可能听说过青云经常讲的p2p机器人社区就要处理资源调度的问题,其实他讲的就是资源供给侧的问题,资源供给方应该如何优化服务。

简单把我们资源管理以前的经验总结一下,资源需要建立一个稳定的模型,需要有一个很丰富的表达方式和能力,要把资源和资源的关系也要建模。我们认为资源可以抽象出来实体概念,实体应该有很多的属性,实体-属性这种抽象可以有非常丰富的表达能力。这种抽象跟传统的配置管理思维很像。DMTF(分布式管理技术论坛)这个管理组织,他们提出CIM的这个模型,在网络管理、存储管理和机器管理(或者说计算管理)领域已经大量使用。我们用这种抽象模型是可以跟传统IT领域有效结合的。我们先从看待问题的角度和方法能跟以前这个领域的东西或技术结合起来,比如BMC、CA这样的公司的技术结合,当然这个中间也会有gap。他们把资源抽象做好但还是比较简单的,但更多是针对单个资源如何表达。 缺乏一个集合资源,资源的层级关系或者关联的表达,我们就曾引入这样的东西让它具备更丰富的应用场景。比如我们可以把存储的相关信息用这个模型来表达,可以作为一个调度因子;网络更多要用关联关系来作为调度,但是只在一些非常特殊场景需求需求时来做,一般不做,一般都会考虑拓扑,这是私有云特殊场景用的,一般用平板结构就好。

再给一个供给侧应用就是把如何让资源利用率、负载增大。我们做过一件事,用VMware让一台机器稳定地跑150个虚拟机,这个时候就有资源超卖和调度的问题。

这些都是我们(在docker技术方面)的一个方向,解决供给侧的问题。

在使用侧,就是应用如何动态地获取资源、获取合理的资源。比如说想要高性能的资源,如何获得它?如果我想要未来用,如何获得它?这个还可以是周期性。我们是把亚马逊AutoScaling的这个引擎做了,类似于OpenStack senlin的技术,使用它来做使用侧。再一个就是以上两个点能不能有机的结合,这是我们的出发点。

还有我们要做一些数据统计分析,资源Capacity,预测未来资源使用。还有一种思路,就是特殊、稀缺资源的管理方式,比如GPU,可能你用了我不能用,我们用预约的模式。什么时间你可以用,什么时间我可以用,就像我们定会议室一样,你定的时候我在后面排队就可以了,这个也是我们的一种方式。

所以我们会从各个点上来做一些事,但是它们可能有的只是解决方案,有的是一些架构思路,有的是产品,分别处于不同的阶段。 但是思路呢,就是从两个角度,供给侧和使用侧方面来的。

CSDN:那我们现在整个体系,在这个实际的应用中使用在哪些地方?

贾琨:现在我们做的案例,供给侧的资源调度,有基于负载的,还有基于SLA的,就是把你的期待描述出来,我保证你的期待。你对资源有特别要求,或者说对位置有要求,或者对别的有要求,我给你满足,这个在做异构资源池、混合云的时候已经做了;第二个应用侧我们实现了个引擎,可以做周期性的事,比如说早上开一批机器,到晚上再开另外一批机器,然后早上再关掉它。 这个功能我们在用户环境运行了一年左右了。当然并不不是每个客户都使用这些功能,有的系统部署规模比较大,2000台主机,这个时候更多是用基础功能。

CSDN:以上就是我的全部问题,感谢你接受我的采访。

你可能感兴趣的:(云管理平台,容器)