专栏名称: InfoQ
有内容的技术社区媒体。
目录
相关文章推荐
新浪科技  ·  【#DeepSeek辟谣R2即将发布#】此前 ... ·  昨天  
新浪科技  ·  【#特斯拉暴跌同时X遭大规模网络攻击# ... ·  2 天前  
InfoQ  ·  Manus ... ·  3 天前  
新浪科技  ·  【#苹果研发内置摄像头AirPods##苹果 ... ·  3 天前  
51好读  ›  专栏  ›  InfoQ

一个云管理平台的架构与功能设计经验谈

InfoQ  · 公众号  · 科技媒体  · 2017-02-01 09:04

正文

作者|牛继宾
编辑|Bella
云计算最终的目标是提供服务,将资源进行管理并变现为服务,进而支撑应用。本次内容主要介绍云计算服务与技术交付的关键一环——云管理平台的架构与功能设计,通过演讲者在云计算行业的多年实践,从需求、实践、应用支撑等角度对云管理平台的定义、功能规划、架构设计与发展、微服务化改造等进行全面的阐述,涉及的技术层次包括IaaS、PaaS、SaaS等。
1 云管理平台的定义、需求、功能与架构设计

云管理平台的定义是Gartner提出来的,总结起来就是两块,第一是管理,管理公有云、私有云,形成混合云。第二是自服务,镜像划分,计量与计费,负载优化。云管理平台最终的目标是应用在云平台上运行时取得最优化的效果。大家熟悉的公有云有上云服务,能最大限度的保证应用的可靠性,我们自己设计一个云管理平台时也要考虑这方面,还附加了一些外部系统的对接与管理功能。

说到云计算,大家会想到OpenStack,OpenStack跟云管理平台有什么区别,是不是可以基于OpenStack做一些云管理平台?目前从我们自己的定义以及市场上的反馈来看,我们认为云管理平台是更广的范围。我们可以把OpenStack看作是云管理平台下属的资源模块,云管理平台可以管理多个OpenStack版本。

有些企业会在不同的数据中心里部署不同的OpenStack资源池管理模块,在OpenStack之上也需要一个云管理平台来管理多个OpenStack资源池以及管理不同的OpenStack版本,另外还有很多虚拟化不是由OpenStack+KVM实现的,比如Vmware、Xen等虚拟化,所以云管理平台还要针对这种虚拟化做对接。从层次上来看,云管理平台是解决用户最后的资源使用一公里的问题,最终提供给用户服务的是云管理平台的自服务平台。

我们实现的云管理平台主要分三大功能:

  • 异构的虚拟化管理。OpenStack天生对接KVM平台,在Xen、hyper-v、VMware对接上是相对劣势的一点, 我们实现的是同等能力的管理。

  • 多个OpenStack版本、多个资源池管理还有多数据中心扩展。

  • 调度、计量计费、外部系统集成。

云管理平台主要有资源管理、运营、自服务三个功能,资源提供方比如存储、计算、网络。资源池最终交付给用户的是一个一个服务,比如计算服务、存储服务、网络服务等IaaS层面的,中间件服务、数据服务等PaaS层面的。怎么交付给用户的?是云管理平台将资源管理起来,通过运营,在公有云上这种运营可以是计量计费,之后通过自服务界面把应用提供给用户使用。

这是云管理整体的定位,它是承上启下的。对下管理资源、对上提供应用使用的界面和API。如果创业公司自己设计一个云管理平台的话,五个模块必不可少,一是资源管理,二是运营管理,三是服务提供管理(使用界面与API),还有运维管理与安全管理。

这是我们设计CMP1.0时第一版的架构,拆分一下有资源管理系统、运营管理系统。资源管理系统负责物理机管理、存储管理、网络管理、多数据中心管理。架构图右上角的模块是一个专门的虚拟化管理系统,它也可以看做是一个资源管理模块。

为什么把虚拟化管理系统拆分出来?因为虚拟化管理系统是云管理平台一个比较核心的模块,需要对它做更精细的设计,所以单独拆分出来。 运营管理系统最终的目标就是将资源管理系统、虚拟化管理系统管理出来的资源运营成为一种服务,比如服务目录就是将资源发布成云计算产品,工单管理、流程管理、计量计费负责用户申请一个虚拟机或一块存储空间,怎么做计量计费,怎么发布出去。

再往上是用户使用的自服务,运营门户、管理员门户,当然也要开放统一API,因为有些应用使用的不是自服务界面,而是使用API调用虚拟化、存储、网络。要做好一个系统,运维管理,比如监控还有日志分析等等,是必不可少的。在云管理平台之外我们单独设计一个运维管理系统,通过Zabbix等采集模块采集系统运行状态,实时呈现给云管理平台的管理员,这是CMP总体架构设计的1.0版本。

1.0版本的资源管理系统

首先看资源管理系统。 虚拟化管理系统可以看作是资源管理系统的子模块。目前市场上常用的虚拟化大的用户里最多的是VMware。我们统计过电信运营商、银行等等,VMware占有量大概在80%以上。第二个是中小企业,用微软hyper-v的比较多,还有citrix、kvm、苏研虚拟化。

我们在做虚拟化管理系统时是做虚拟化适配层,针对每一个虚拟化平台做一个driver,这个driver可以下发指令、并反馈状态,同时开放API针对管理层使用。比如虚拟机的基础管理,像开机关机都可以通过driver做。在基于KVM去做的时候引用了OpenStack虚拟化管理的nova模块,主要目的是有了nova我们也没有必要完全重写针对KVM虚拟化管理的功能。

我们在设计私有云的时候,用户对应用支撑这块有很高的要求,比如数据库服务,他会明确要求放在物理机上。 所以资源管理模块需要做物理机管理,目前是基于IPMI实现的,可以做物理机的分配、自动安装、自动服务提供。跟虚拟化的区别就是物理机的分配单位是一台一台的物理机,虚拟化的分配单位可以在物理机上做更小的切分。

还有存储模块。目前说云计算的时候大家一提存储往往是提分布式存储或者云存储,类似对象存储的实现。如果在传统企业做存储管理并将存储形成存储服务的话,还有一块就是传统存储,也叫SAN存储,包括FC存储和iSCSI存储。这种存储管理的实现我们是通过标准的SMIS协议,如果没有这个协议就要对接cmd line/shell脚本实现。

资源管理的网络管理。云计算里面经常介绍SDN的管理,除此之外还有路由、交换机、防火墙,这块的管理需要在上面自动划分网络服务,划分一个VPC或者子网,需要通过网络管理模块API做对接和呈现。

最后是多数据中心管理。比如要帮一个公有云的客户实现一个云管理平台,这个公有云可能会在全国部署多个数据中心。涉及到一个云管理平台对多个数据中心的管理,这是一种分布式架构的实现。比如说在数据中心里把OpenStack或者vCenter作为一个资源池模块,最终是一个云管理平台去管理多个数据中心,并做整体平台的运营和服务。

刚才简单的给大家总结了资源管理这一部分,包括计算资源、存储资源、网络资源的统一管理。

2 1.0版本的运营管理

管理完之后是运营的过程。运营包括将管理完的资源发布成服务,需要一种服务模板的规划设计。服务模板包括把一个虚拟机定义成一个服务,包括虚拟机的定义、发布、审核以及在界面上的呈现。在服务目录之后,我们有了服务的概念,还要做计量计费,用户使用资源时要做统计,公有云上可以收费用,私有云可以做跨部门之间的资源使用统计,这是订单管理和用户管理、资源使用计量计费三块合一,也就是要确定一个用户或者一个部门使用的资源时间时长以及最终的计量计费的过程。最后是运营门户,运营管理员可以运营这些服务。比如公有云厂商定期有新的云服务发布,基本是在运营管理层面上做的。

我们做了一个总结, 应用在使用时主要可以分为两种类型:实时交易类型和在线批处理。这两种应用迁移到云平台的时候都有自己的特定要求。

首先看传统的交易系统,比如电商系统或者是CRM人力资源管理系统,它分三层:Web、App、DB。以前中大型的企业,比如银行或者运营商都是放在小型机上承载的,Web用X86服务器,App可能用weblogic、websphere放在小型机上运行,还有DB用Oracle或者DB2的数据库,都放在小型机上。

阿里一直在提的去IOE,实际上是一种分布式架构改造,改造之后传统的Oracle数据库、DB2数据库,逐步去做分布式数据库或者是关联不复杂的数据逐步往非结构化数据、内存数据库做迁移,还有NoSQL数据库,实际上数据库是在逐步做新技术的引入,实现模块化分布式改造。

如果我们把原先单一的数据库改造成分布式数据库,需要分布式数据库的数据路由和集中访问。到应用这层,以前我们说weblogic、websphere,现在就改成微服务,比如一个一个的应用,每个应用单一化改造成单一的服务。有了微服务之后,在微服务上层还需要微服务的治理,比如服务编排、服务访问路由。再上层就是用户交互层。

3 传统应用云化改造对云管理平台功能设计的新需求

传统的应用在改造成云化架构时带来了很多需求:

  • 第一个关键点是Web接入,比如从单机变成负载均衡+后端多节点。从客户流量变化上大家都知道有弹性伸缩,节点数量随着流量变化而变化。

  • 第二是X86集群部署,小型机的年代是单机或者是HA的部署,到了云化的时候,从Web到App到数据层,都是x86集群化部署,所以要有集群管理功能。

  • 第三是数据分布式部署,原先的单一数据库在存储几亿条数据之后,查询交易上延迟性和响应上比较大,所以会考虑数据库的拆分,比如数据库表的垂直拆分或者水平拆分。拆分之后会带来新的问题,比如数据对外的统一访问,原先是一个表如果拆成多个表,每个表跨库join、跨表join都是新的问题,所以在云平台上要构建数据路由层或者统一数据访问引擎。开源的有Hibernate、Shards、Ibatis-Sharding,但是开源的访问引擎如果集成到云平台上,云平台对他们的监控、调用逻辑的呈现是必要的需求。







请到「今天看啥」查看全文