详解开源PaaS云平台Cloud Foundry

  • Post author:
  • Post category:其他


640?wx_fmt=png

640?wx_fmt=gif

Cloud Foundry是一个开源的平台即服务(PaaS),它提供给开发者自由的去选择云平台、开发框架和应用服务。Cloud Foundry最初由VMware发起,得到了业界广泛的支持,它使得开发者能够更快更容易的开发、测试、部署和扩展应用。Cloud Foundry是一个开源项目,用户可以使用多种私有云发行版,也可以使用公共云服务,包括CloudFoundry.com。

Cloud Foundry让开发人员专注于编写应用程序,而无需为中间件和基础设施分心。在使用自助式高生产力的框架和应用服务的同时,开发人员可以快速在自己的环境上开发和测试自己的下一代应用,并能部署到云上而无需做任何更改。

Cloud Foundry的特点主要有以下几点:


1.支持公共,私有和混合云上部署

。Cloud Foundry支持众多在私有或者公有基础设施上运行的合作伙伴的云平台,包括vSphere /vCloud,AWS,OpenStak,Rackspace,Ubuntu等;还包括CloudFoundry.com;Micro Cloud Foundry是业界第一个可以部署到开发者笔记本上运行的PaaS平台。


2.支持业界标准框架

。这些框架包括Spring for Java,Ruby on Rails和Sinatra,Node.js,Grails,Scala on Lift以及更多合作伙伴提供的框架(例如Python, PHP)。


3.支持应用服务

。这些应用服务包括RabbitMQ,来自VMware的vFabric PostgreSQL,MySQL,MongoDB和Redis,以及更多来自第三方和开源社区的应用服务。


4.架构可扩展

。可以使开发人员和架构师前瞻性的验证他们的组织架构是否适应快速的云创新。


5.开源项目社区

。社区内允许任何开发者访问,评估,和贡献,这包括集成其他框架,增加应用服务和部署应用到其它基础设施云。

经过不断的发展,CloudFoundry的组件增加了很多,但核心组件并没有变化,增加的组件是原架构基础上的细化和专门化,目前Cloud Foundry最新为v2版本。


Cloud Foundry平台架构

从总体上看,Cloud Foundry的架构如下图所示。

640?wx_fmt=png

CloudFoundry的核心组件主要有Router、Cloud Controller、Services、Health Manager和DEA,以及模块之间使用的NATS消息通信机制。这些模块之间的关联关系如下图所示,模块之间使用NATS或者HTTP等其他的消息机制进行通信。

640?wx_fmt=png


CloudFoundry组件

下面简要介绍一下CloudFoundry的核心组件各自在架构上的作用。


1.Router组件:

该组件在CloudFoundry中是对所有进来的请求进行路由。进入Router的请求主要有两类:(1)来自VMC/CF Client或者STS的,由CloudFoundry使用者发出的,管理型指令;(2)外界对所部署的应用访问的请求,这部份请求会被路由到DEA组件中去。

新旧版本的Router架构对比如下图所示。在老版本中,Router作为一个nginx脚本存在,所以的请求都必须经过Ruby代码,然后加以转发,容易引起性能问题。在新版本的设计中使用了Lua脚本代替原先的Ruby脚本,提高了性能和稳定性。

系统可以部署多个Router共同处理进来的请求,避免单节点引起性能问题,从而使Router组件成为整个云的瓶颈。Routers组件的主要作用和功能如下:

  • 处理所有HTTP流量;

  • 从DEAs获得信息并实时更新路由表;

  • 维护分布式路由状态;

  • 将对URL的访问路由至具体的应用;

  • 在应用实例之间分发流量实现负载均衡。


2.Cloud Controller组件

:该组件是Cloud Foundry的管理模块,与VMC和STS交互的服务器端,收到VMC或者STS的JSON格式协议后,写入CloudController Database,并发消息到各个模快去控制管理整个云。Cloud Controller与Cloud Foundry中其他组件交互如下图所示:

640?wx_fmt=png

该组件公开了与CLI工具VMC通讯的主要REST接口,以及用于Eclipse的STS插件,并且提供开放的Restful接口,可用于第三方应用的开发和集成,企业在用CloudFoundry部署私有云时,还可以通过这些接口来自动化控制管理整个云环境。CloudController组件的主要作用和功能如下:

  • 处理VMC等指令;

  • 管理用户、应用和服务;

  • 管理资源;

  • 对应用进行打包和预处理;

  • 对外提供REST API接口。


3.Health Manager组件:

该组件从各个DEA里面获取运行信息,然后进行统计分析,报告等。统计数据会与CloudController的设定指标进行对比,并提供告警等。HealthManager模块目前还不是十分完善,在代码结构上,Health Manager模块放在Cloud Controller的目录下。Health Manager组件的主要作用和功能如下:

  • 监控应用和服务的状态;

  • 监控到异常状态,通知Cloud Controller处理;

  • 根据统计运营情况,合理分配资源。


4. Service组件:

该组件是一个独立的、插件式的模块,便于第三方方便地把自己的服务整合成Cloud Foundry服务。在Cloud Foundry中已经包含了服务的框架及核心类库,如MongoDB、mysql、 PostgreSql、RabbitMQ、Redis和vBlob等,并且第三方可以继承Node和Gateway基础类来开发自己的CloudFoundry服务。Server组件的主要作用和功能如下:

  • 提供一个可扩展/扩充的层;

  • 可被共享;

  • 提供服务API;

  • 可将各类应用和各类服务进行绑定。


5.DEA(Droplet Execution Agent)组件:

在老版本的DEA组件中包含了应用运行时启动、停止等简单命令,并且用户的应用可以随意访问文件系统。在新版本的DEA组件中增加了Warden Container模块(一个程序运行容器),这个容器提供了一个孤立的环境,DEA只可以获得受限的CPU、内存、磁盘访问权限、网络权限。DEA模块的新旧版本结构对比如下图所示:

640?wx_fmt=png

DEA会接收Cloud Controller模块发送的启动(或者停止)等应用管理请求,然后,会从NFS里面找到合适的Droplet将程序运行起来。最后,DEA把这个信息告诉Router模块,还进行应用程序的统计,并且将应用的运行信息告诉HealthManager模块。DEA组件的功能如下:

  • 负责运行所有的应用,并确保应用程序的隔离;

  • 监控应用的具体运行参数,如CPU、内存、磁盘等;

  • 提供应用状态变化的告警等。


6.NATS组件:

CloudFoundry的架构是基于消息发布与订阅的,使用NATS组件来联系各个模块。NATS是Derek Collison(世界级中间件和消息系统专家)开发的,是一个基于事件驱动的轻量级支持发布、订阅机制的消息系统,基于EventMachine开发,以事件驱动。新版本的NATS可以支持多服务器节点,避免了单节点的NATS导致的系统在HA方面的不稳定性。

CloudFoundry的各个组件是基于消息发布订阅机制构建的,每个节点上的各个模块会根据自己的消息类别,向Message Bus发布多个消息主题;而同时也向自己需要交互的模块,按照需要的信息内容的消息主题订阅消息。NATS组件的主要作用和功能如下:

  • 寻址和发现;

  • 命令和控制;

  • 中央通讯系统;

  • 支持消息的发布和订阅


Cloud Foundry环境部署

Cloud Foundry云环境的部署方式比较灵活。在运行环境上,可以基于VMware或者OpenStack虚拟化环境之上,建立Cloud Foundry云环境;在部署上,可以使用单节点部署,也可以使用多节点部署;既可以利用dev_setup实现单节点或多节点的小规模的环境部署,也可以使用Bosh实现大规模的自动化部署;并且在实验室环境,还提供了Micro Cloud Foundry单机版PaaS环境,用户可以在上面进行应用和服务的在线和离线部署。


Cloud Foundry总结

Cloud foundry在运营商、互联网等企业广泛应用,如:Verizon、AT&T、NTT等运营商发布Cloud foundry公有云PaaS平台;百度是最大的Cloud foundry使用商,此外还有用友、盛大云和京东等互联网厂商。

回顾历史,IBM曾经也抛弃SmartCloud封闭架构与VMware结盟(尽管之后收购SoftLayer),构建Cloud foundry开放PaaS平台,后来发布基于OpenStcak+Cloud foundry的BlueMix项目,将其传统软件(工具中间件、业务流程管理、数据库和开发等)优势能力转移至Cloud foundry之上,尽管现在IBM统一品牌为IBM Cloud(摒弃SoftLayer和BlueMix品牌)。

Pivotal Cloud Foundry (PCF) 是一种可以直接部署开发人员写好的应用(如Jar或是War包)或已经构建的容器镜像的完整平台,基于Cloud foundry社区版。它可提供完整的调度能力实现这些应用负载,还可提供平台辅助服务,如负载均衡、高可用性、自动扩展、统一的日志记录等。

Pivotal Cloud Foundry广泛利用容器来提供服务并使应用负载保持正常运行。虽然Pivotal Cloud Foundry可轻松编排容器,但仅有这项功能不足以使其成为一个平台。Pivotal Cloud Foundry还需要以下子系统配合以协调、监控和支持这些容器化的有效负载。


  • Pivotal CF Elastic Runtime Service:

    一个完整的,可扩展的运行环境,多个内嵌的云服务。


  • Pivotal CF Operations Manager:

    企业级的管理平台,以及对基础设施层的集成管理。

Pivotal One商用版本,增加更多的服务,如大数据能力和框架(Pivotal HD Service和Pivotal AX Service数据框架)。


  • Pivotal HD Service

    集成HDFS(Hadoop),HAWQ(Hbase/SQL Analytics), YARN(资源协调管理)等。


  • Pivotal AX Service:

    大数据分析,包含数据创建,收集,存储,查询,虚拟化等。



关于

<VMware云数据中心(私有云)解决方案详解>

技术总结,请点击

原文链接

或识别下面

小程序

查阅详情。

640?wx_fmt=jpeg

更多

架构师技术

关知识请参考“

架构师技术全店资料打包汇总(全)

”电子书(

32本


技术资料打包汇总、详解目录和内容

请通过“

阅读原文

”获取)。


温馨提示:

请识别

二维码

关注公众号,点击

原文链接

获取




架构师技术全店资料打包汇总(全)

”电子书资料详情。

640?wx_fmt=jpeg

640?wx_fmt=gif&wxfrom=5&wx_lazy=1



版权声明:本文为BtB5e6Nsu1g511Eg5XEg原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。