Cloud Foundry由VMware公司开发,初衷是为广大应用程序开发人员、应用程序操作人员和云运营商简化部署工作。随后在2011年4月份,Cloud Foundry宣布成为开源项目,采用Apache 2.0许可证,声称开发人员可以用自己选择的语言和Web框架来编写代码,没必要为具体的IT环境而操心。
2014年2月份,从VMware拆分出来的Pivotal宣布成立Cloud Foundry基金会,Pivotal、EMC、IBM、Rackspace和VMware都是白金级赞助商。该基金会的队伍此后扩大到33个成员和42家捐献代码的公司。Cloud Foundry的一大差异化优势就是支持Pivotal HD Hadoop MapReduce、HAWQ SQL for Hadoop和GemFire XD分析平台。Pivotal的大数据服务和移动服务现在都与Pivotal CF整合起来,而Pivotal CF是该公司的企业版Cloud Foundry。
Cloud Foundry基金会的几个成员已陆续发布了各自的Cloud Foundry发行版,包括ActiveState公司的Stackato产品。免费的Stackato Micro Cloud可用于VirtualBox、VMware Fusion/Player、VMware vSphere和KVM。
虽然开源Micro Cloud Foundry VM还没有更新到Cloud Foundry v2,但是你可以使用bosh-lite或者 cf_nise_installer,本地安装Cloud Foundry开源产品。bosh-lite支持VMware Fusion/Player、VirtualBox和亚马逊网络服务(AWS),而cf_nise_installer只支持VirtualBox。
我询问Pivotal为何缺少Micro Cloud Foundry v2 VM,Pivotal CE社区工程师Jamie O'Meara回复如下:
我们的重心放在为Cloud Foundry提供一种企业级PaaS体验上,这包括安装到数量众多的云服务提供商平台上,比如vSphere/vCHS、OpenStack、AWS和谷歌计算引擎(Google Compute Engine)。作为这种体验的一部分,我们发现开发人员愿意构建和使用其本地工具,或者愿意推送到Cloud Foundry的私有和公有实例。
bosh-lite这个工具为CF v2的一部分提供了支持,用来执行特定的任务,比如构建数据库之类的BOSH可部署服务。它并不是取代Micro Cloud Foundry,Micro Cloud Foundry仍在我们的路线图上。Stackato的Micro基于CF v2,只是添加了一些专有组件。
Pivotal本身有两款Cloud Foundry PaaS解决方案:在线版Pivotal Web服务和面向企业的Pivotal CF。与这些解决方案相辅相成的还有Pivotal HD及相关的云服务解决方案,以及其他专用的数据解决
方案,比如Pivotal Greenplum RDBMS、Pivotal GemFire和Pivotal SQLFire。此外,Pivotal前年收购的Xtreme Labs给它带来了与其PaaS和大数据服务整合起来的移动服务套件。
正如Jamie O’Meara在声明中提及,Pivotal CF可以在VMware、OpenStack、亚马逊网络服务和谷歌云平台上运行。
Cloud Foundry的架构和特性
Cloud Foundry弹性运行时系统在DEA(Droplet执行代理)中运行名为droplet的封包应用程序,而droplet是一种打包文件,包括你应用程序的所有代码以及依赖项。DEA由Cloud Controller(云控制器)管理,由Health Manager(健康管理器)监控,而Routers(路由器)负责管理应用程序流量、进行负载均衡以及合并日志。反过来,DEA调用服务代理节点,这些节点通过消息总线进行联系。云控制器可访问二进制大对象(blob)存储区以及内有应用程序元数据和服务凭据的数据库。
想部署应用程序,开发人员基本上要上传应用程序代码和元数据,使用Cloud Foundry命令行,或者使用来自Eclipse、Maven或Gradle的插件。此外,开发人员需要创建和绑定服务。这一切归结为构建WAR归档文件,并上传该WAR。
云控制器会自动检测并装入任何必要的系统构建包(buildpack),创建一个droplet,将应用程序droplet部署到DEA,注册路由,以及转发端口。一旦DEA处于活动状态,健康管理器就会将来自云控制器的DEA的预期状态与来自DEA的实际状态进行比对。要是健康管理器检测到偏差,它会要求云控制器重启未处于预期状态的任何DEA。
管理员使用BOSH,而不是其他IT自动化工具(比如Puppet或Chef),以管理Cloud Foundry的底层基础设施。作为一种用于大规模分布式服务的版本设计、部署和生命周期管理的开源工具链,BOSH有自己的命令行,有别于cf命令行,但是你不需要它来部署应用程序。BOSH用于部署虚拟机,而不是部署droplet。
大体上来说,BOSH通过虚拟机模板“stemcell”克隆新的虚拟机,以创建部署的应用程序所需的虚拟机。stemcell包括操作系统和嵌入式BOSH代理,该代理让BOSH可以控制通过stemcell克隆的虚拟机。BOSH版本是源代码、配置文件和启动脚本共同组成的集合体,版本号可以识别这些组件。BOSH部署清单文件是一个YAML文件,定义了部署的布局和属性。
Cloud Foundry包括UAA(用户帐户及授权)和登录服务器。UAA就是Cloud Foundry的身份管理服务。其主要角色是充当OAuth2提供者,颁发客户端应用程序在代表Cloud Foundry用户操作时所使用的令牌。不过,它还能通过用户的Cloud Foundry凭据验证用户的身份,并且充当SSO(单一登录)服务。登录服务器为UAA执行验证任务,并充当后端服务。Cloud Foundry管理员可以在登录服务器上设置身份验证源,比如LDAP/AD、SAML、OpenID(谷歌和雅虎等)或者社交网站。
具体到应用程序执行层面,DEA使用Warden Linux容器。Warden提供了一套简单的API,用于管理隔离的、短暂的、资源受控制的环境或容器。在将来,Cloud Foundry会支持Docker容器。
Cloud Foundry架构的方块图。
#p#
用构建包部署应用程序
构建包为你的应用程序提供了框架和运行时环境支持。Cloud Foundry和Pivotal CF中有四种标准的构建包:Java、Node.js、Ruby和Go。(Stackato拥有Python而不是Go。)好消息是,构建包随时可用、易于安装,甚至易于构建,假设你会用Ruby或另一种编程语言编写几行代码。在大多数情况下,你需要的开源语言和框架将以构建包的形式可供使用;如果你需要装入它,只要在推送应用程序时,在cf命令行上提及Git软件库:
- $ cf push my-new-app -b git://github.com/johndoe/my-buildpack.git
另外,在你的清单文件中提及构建包。比如说,一个正常运行的WordPress for Cloud Foundry在Daniel Mikusa创建的这个软件库(https://github.com/dmikusa-pivotal/cf-ex-worpress)中可供使用。想安装它,你只要克隆软件库,它不是非常庞大;在你的Cloud Foundry实例中创建一项MySQL服务,在本地机器上编辑清单文件和配置文件;以及用cf push命令推送应用程序。在编辑之前,manifest.yml文件看起来像这样:
- ---
- applications:
- - name: mywordpress
- memory: 128M
- instances: 1
- host: mywordpress
- domain: cfapps.io
- path: .
- buildpack: https://github.com/dmikusa-pivotal/cf-php-build-pack.git
- services:
- - mysql-db
正如你所猜,清单文件中的buildpack(构建包)这行引用了PHP的Git软件库和Apache构建包。
Cloud Foundry使用NATS完成其环境各部分之间的消息传递,NATS是一种轻型的、分布式的发布/订阅消息传递系统,用Ruby编写而成。
Cloud Foundry服务API定义了云控制器与服务代理之间的契约。代理需要在URI前缀下面实施几个HTTP(或HTTPS)端点,它可能实现了负载均衡机制。用户提供的服务实例是一种机制,它为在Cloud Foundry外面预先配置的服务实例(比如甲骨文集群)向应用程序提供了凭据。
Pivotal有一款大数据产品Pivotal HD,它与Pivotal CF整合起来。该产品包括Hadoop、Pivotal面向Hadoop的HAWK SQL查询引擎、GemFire XD分析平台以及Spring for Apache Hadoop Java框架。Pivotal大数据套件是一款企业数据仓库产品,包括不受限制的Pivotal HD。
Pivotal Web服务市场中的服务通常采用多种多样的方案,从免费到每月不低于100美元,不一而足。
据Pivotal声称,实际上,管理员定义HDFS和MapReduce实例组成的服务池,这些实例在Pivotal CF上从头开始配置大概需要5分钟。之后,开发人员或应用程序可以向服务池请求实例,大概2秒后就能获得实例,然后可以在后台为资源池创建新的实例。被请求的实例不再需要时,就可以将它释放。
Pivotal还提供了与Pivotal CF和Pivotal HD都整合起来的Mobile Services Suite(移动服务套件)。该套件汇集了七年的开发心血和从前年收购的Xtreme Labs获得的技术专长。它说白了就是在Pivotal的PaaS上的一种MBaaS(移动后端即服务),整合范围扩大到了移动应用程序层面。
Cloud Foundry的安装和使用
注册Pivotal Web服务是个很轻松的过程。我使用开发者控制台的过程中毫无问题,下载和安装cf命令行也只需要一两分钟。说明文档相当清楚地阐明了用cf部署应用程序所需要的几个步骤。
如前所述,Micro Cloud Foundry VM还没有更新到Cloud Foundry v2。虽然我发现有两种方法可以将当前的Cloud Foundry开源产品安装到本地虚拟机上,但是每种方法都需要数个小时才能完成。对我来说,下载Stackato Micro Cloud VM(下载需要10分钟),然后将它安装到我MacBook Pro上的VMware Fusion(安装需要2分钟)要容易得多。我还安装了Stackato命令行,这是cf的超集。事实表明,在浏览器中使用Stackato开发者控制台非常类似使用Pivotal Web服务开发者控制台。
除了目前缺少Micro Cloud Foundry VM外(这有点烦人),Cloud Foundry的安装和设置都非常简便。你需要的一切都可以下载;安装过程一目了然。你只要花几分钟,就可以在网上或者在内部从小处着手,逐步扩大你的云环境;也可以花几个小时,在合适的虚拟机主机上安装企业云。
对开发人员来说,从命令行、Eclipse、Spring Tools Suite、Maven或Gradle来部署droplet异常简单,只要你构建了一个有效的清单文件,该文件里面含有任何必要的构建包。Droplets和DEA管理起来简单直观,不过我希望应用程序的自动扩展能完全得到支持,而不是作为Pivotal CF中一项只针对大企业的测试特性。
Stackato Micro Cloud VM可用于VirtualBox、VMware Fusion、VMware vSphere和KVM,目前是将Cloud Foundry安装到开发人员的桌面系统上的最快捷方式。在图中,Stackato管理控制台在Stackato Micro Cloud窗口后面运行。
管理Cloud Foundry云并不难,但BOSH是个功能强大的复杂工具,学起来并非易事。如果管理员熟悉Puppet及其他流行的配置管理和编排工具,那么学用BOSH不会有任何问题,但他们需要一点时间才能上手。
总的来说,Cloud Foundry是一款功能强大的PaaS,除了开源版本外,还有Pivotal的两种专有版本:在线版的Pivotal Web服务,以及内部部署版的Pivotal CF。虽然我没有测评过基金会成员提供的所有基于Cloud Foundry的专有PaaS解决方案,但测评过ActiveState的Stackato后发现,它简化了还没有固化到开源版本中的几个方面,因云管理和语言支持而增添了价值。
#p#
Cloud Foundry简介
优点
- 拥有和支持一大批的语言、Web框架和数据库
- 为开发人员和云运营商提供了简易、快速的自助式部署
- 应用程序容器、服务、节点的健康状况都受到监控,要是未处于预期状态,就会自动重启
- 大数据和移动服务在PaaS中得到支持
- 可以从命令行、Eclipse、Spring Tools Suite、Maven和
- Gradle来部署
缺点
- 自动横向扩展仍处于测试阶段
- 另一种基于Cloud Foundry的PaaS:ActiveState的Stackato却早已拥有该功能。
- 还没有可以下载的“micro”VM for Cloud Foundry v2,但你可以下载Stackato Micro,或者使用两个CloudFoundry安装工具中的一个,将Cloud Foundry安装到本地虚拟机中。
- 仅限于在Ubuntu Linux上运行的应用程序,除非你使用Uhuru Windows版本的Cloud Foundry,我们还未对它测评。
平台
VMware vSphere、OpenStack、亚马逊网络服务和谷歌云平台
成本
Cloud Foundry,免费开源;Pivotal Web服务,免费试用两个月后每小时每GB 3美分,应用程序内存多达2GB,10项免费的市场服务;Pivotal CF,价格取决于运行的应用程序实例数量和运行的Operations Manager实例数量,可免费获取90天测评许可证。