Cloud Foundry是业界第一个开源PaaS云平台,它支持多种框架、语言、运行时环境、云平台及应用服务,使开发人员能够在几秒钟内进行应用程序的部署和扩展,无需担心任何基础架构的问题。
PaaS,平台即服务。是云计算的一种服务形式。其实并不是一个非常新的概念,像GAE、SAE很早就提供了类似这样的服务。不过在很长一段时间内,PaaS接受程度不高,在跟客户谈及云计算时,普遍都认为云计算就是IaaS,即基础设施服务。但是随着云计算的不断发展,用户发现光有IaaS,虽然简化了对基础设施资源的管理,但是对云计算的终端用户来说通过IaaS只是拿到了一个裸操作系统,要想开发一个软件并部署到云平台上,还需要做很多工作。包括代码的管理、持续集成、自动化测试、交付物管理、应用托管、中间件服务、自动化运维、监控报警、日志处理等等。用户希望通过一个平台能够真正简化开发、测试、部署、运维等工作,使得企业能够真正实现DevOps。
Cloud Foundry是一个工业级开源PaaS,它可以部署为一个云,并对外提供多语言多框架、应用运行环境及服务。CF的社区相对还是比较活跃的,并且版本迭代比较快,一般1,2周就会发布一个小版本。而且CF在不断的改进和优化自身的架构,到目前为止已经经历了CF V1,CF V2以及CF V3。每一次大版本的发布都对CF进行了性能和架构上的优化。
Haproxy、Gorouter:
Router将平台流量分发给特定的组件,通常为Cloud Controller,或者运行在DEA节点上的应用。
UAA、Login Server:
UAA与Login Server主要提供用户身份认证管理服务
Cloud Controller、Health Manager:
当开发者将一个应用push到cloud foundry后,Cloud Controller会存储应用文件,在数据库中创建应用的元数据记录,并指派DEA节点来stage及运行应用。Cloud Controller同时还维护了组织、空间、服务、服务实例、用户角色等记录信息。
监控应用以确认其运行状态(例如running\stopped\crashed等)、版本以及实例个数。HM9000根据运行应用的DEA返回的心跳(heartbeats)及droplet.exited消息来更新应用的实际运行状态。
确认应用的期望运行状态、版本及实例个数。HM9000从CCDB中获取应用的期望运行状态。
使应用的期望运行状态和实际运行状态一致。例如,如果实际运行的实例个数少于期望运行的实例个数,HM9000就会指示Cloud Controller启动准确的应用实例个数。
指示Cloud Controller修复任何应用状态的差异。
Blob Store、Dea:
DEA负责管理应用实例,跟踪已启动的应用实例,并广播其运行状态的消息。
Blob store保存了应用代码、Buildpacks(应用依赖的runtime、web server、framework等的集合)以及Droplets(已完成stage的可直接在DEA上运行的应用包)。
Service Broker:
应用往往依赖于数据库或第三方服务。
当开发者需要创建一个服务实例并将其与某个应用绑定,该服务的Service Broker负责提供这个服务实例。
例如应用需要使用MySQL数据库服务,MySQL服务的Service Broker负责创建一个MySQL服务实例,并将该服务实例与应用绑定。
Nats:
Cloud Foundry使用NATS进行组件间的内部通信。
NATS是一种轻量级的、基于发布-订阅机制的分布式队列消息系统。
Metrics Collector、App Log Aggregator:
计量数据收集器从各组件收集计量数据。运维人员可以使用这些信息对整个Cloud Foundry平台进行监控。
应用日志汇集器(loggregator)可以将应用日志输出给开发者。
在Cloudfoundry平台上,应用如何被部署运行的?
Buildpack:
Buildpacks为应用提供框架及运行时支持。
Buildpacks通常会检查用户提供的应用代码以确定需要下载哪些依赖,以及该如何配置应用使其能跟绑定的服务进行通信。
当你Push一个应用,Cloud Foundry会自动检测(也可以在push时显式指定)要使用哪个buildpack,并将其安装至运行应用的DEA上。
表中所列为Cloud Foundry system buildpack。
开发者可以通过以下方式使用上述所列之外的buildpack:
1. 改造已有的buildpack;
2. 自己编写buildpack;
3. 使用Cloud Foundry社区提供的Buildpack;
4. 使用Heroku提供的第三方buildpack。
服务:
通过实现一组API被集成进Cloud Foundry 的服务称为受管理的服务。
用户可以按需创建相应的服务实例,并获取使用该服务实例的凭证。
ss
Service Broker标准APIs。
1. 获取服务目录
2. 创建服务实例
3. 绑定服务实例
4. 解绑服务实例
5. 删除服务实例