1、O,Pivotal PaaS平台云CloudFoundry 产品功能和架构,陈威 Pivotal Senior Solution Architect ,目录,Paas和IaaS的区别和PaaS价值 CloudFoundry的设计目标、原理 CloudFoundry支持的敏捷开发 企业私有云解决的问题和建设价值 CloudFoundry的功能架构 CloudFoundry的应用部署和大规模部署 CloudFoundry的弹性计算 CloudFoundry的案例情况,Cloud Foundry解决了什么问题?,4,IaaS: 硬件的自动化管理,人与机器的解耦合 获得效率/提高资源利用率 PaaS:
2、 应用的自动化管理,应用与OS的解耦合 获得弹性/简化运维,PaaS云计算的价值分析,PaaS的业务价值 - decouple from the underlying infrastructure - provide data as a service - decompose applications - automate everything,系统安装和应用部署,PaaS云计算的业务价值分析,目前的IT模式,劳动力成本 (运维),硬件成本,新的应用开发,软件成本,电力成本,Current IT Spend,100%,劳动力成本 (降低xx%),硬件成本 (降低xx%),新的开发,基于虚机的部
3、署,软件成本 (降低xx%),电力成本 (降低xx%),基于IaaS的云计算,劳动力成本 (降低xx%),硬件成本 (降低xx%),新的开发,自动化部署,软件成本 (降低xx%),电力成本 (降低xx%),提升业务能力,降低每年的运作成本到,基于PaaS的云计算,PaaS的业务价值在IaaS基础上共享虚机计算资源,进一步挖掘IaaS虚机的计算能力,再一步提高硬件资源利用率,从而降低硬件成本。在IaaS基础上直接提供应用运行平台,降低应用平台的运维需求,系统自动化的打补丁、应用升级等,降低运维的劳动力成本。在IaaS基础上动态的精确计算业务资源,在业务空闲时自动释放并回收平台资源以及与之相关的硬
4、件资源,降低电力成本。通过PaaS自动化的供应系统平台和应用平台,对业务应用自动化的部署,降低应用系统上线的部署工作量,加快业务上线时间。,今天的应用趋势,应用框架应用越来越广泛 提高开发效率,创新 降低开发工作量,减少开发时间 支持新的应用类型 Mobile, Social, SaaS 应用要尽早发布,并且经常升级 数据密集型应用 新的要求: 弹性伸缩、支持多种云 面向Web带来了数据指数级的增长 要部署在虚拟化或是IaaS云环境下 Virtualization, Cloud, PaaS,Cloud Foundry是一个开放的PaaS平台,The PaaS of choice for the
5、 Cloud era 简单 开发者专注于他们的代码,不锁定于特定中间件开放避免锁定在特定的云、框架和服务上从第一天起就是完全开放的灵活性和可伸缩性应用自服务、自动部署、自动伸缩S可扩展的架构,可以吸收未来云创新的发展,Cloud Foundry开放PaaS平台 支持各种框架,Application Service Interface,Data Services,Other Services,Msg Services,Cloud Foundry开放PaaS平台 提供多种应用服务,通过Services Broker与现有企业服务的集成,service gateway,创建,绑定,system se
6、rvice,使用,绑定,使用,service broker,企业服务,11,目录,Paas和IaaS的区别和PaaS价值 CloudFoundry的设计目标、原理 CloudFoundry支持的敏捷开发 企业私有云解决的问题和建设价值 CloudFoundry的功能架构 CloudFoundry的应用部署和大规模部署 CloudFoundry的弹性计算 CloudFoundry的案例情况,CF的设计目标,13,CF的目标之一 弹性伸缩架构,14,CF的目标之一 弹性伸缩架构原理,15,CF的目标之一 弹性伸缩架构机制,16,dea实现了资源切分(应用层),17,虚拟网络接口切分网络,aufs
7、切分存储,Warden切分cpu、内存,router实现了资源聚合(应用层),18,Nginx (+lua extension),upstream locator service,dea 10.0.0.1,dea 10.0.0.2,nats,http request,dea ip?,10.0.0.2,NATS,首次访问,二次访问,cookie: 10.0.0.2,cookie: 10.0.0.2,Cloud Foundry逻辑视图,PC 浏览器访问,Mobile App访问,Router 路由 (Nginx + Locator Service),19,PaaS设计目标之二 - 运维智能化,20
8、,PaaS设计目标之二 运维智能化 分析1/2,21,PaaS设计目标之二 运维智能化 分析2/2,22,PaaS设计目标之二 运维智能化 解决1/2,23,PaaS设计目标之二 运维智能化 解决2/2,24,Cloud Foundry基于消息的内部神经系统,uaa,ccdb,nats,health manager,25,nats解决了什么问题?,高可用的 模块自发现 模块之间的松耦合 高性能的 非阻塞的 编程简化 基于事件和消息的模块通讯,26,发布者,主题,订阅者,订阅者,订阅者,hello,hello,hello,hello,带线程池的多路Reactor模式(nats背后的原理),27,
9、耗时IO操作不会阻塞线程避免了多线程切换降低了线程占用的内存,Cloud Foundry逻辑视图,PC 浏览器访问,health manager,VMC client,Mobile App访问,STS Plugin,Router 路由 (Nginx + Locator Service),NATS 消息总线,service pool,MySQL,MongoDB,Radis,RabbitMQ,cc - db,package cache,blobstore,Caldecott,Oracle,Legacy App,28,PaaS设计目标之三 支持按需服务/付费,29,PaaS设计目标之三 支持按需服务
10、/付费 分析,30,PaaS设计目标之三 支持按需服务/付费 解决,31,目录,Paas和IaaS的区别和PaaS价值 CloudFoundry的设计目标、原理 CloudFoundry支持的敏捷开发 企业私有云解决的问题和建设价值 CloudFoundry的功能架构 CloudFoundry的应用部署和大规模部署 CloudFoundry的弹性计算 CloudFoundry的案例情况,开发平台设计目标之一 平台开放性,33,平台开放性 分析,34,平台开放性的实现-1/3,35,平台开放性的实现- 2/3,36,平台开放性的实现- 3/3,37,平台开放性的实现之四-通过Services B
11、roker与现有企业服务的集成,service gateway,创建,绑定,system service,使用,绑定,使用,service broker,企业服务,38,开发平台设计目标之二 开发人员友好性,39,开发人员友好性 分析,40,开发人员友好性的实现,41,Spring Tool Suite plugin,42,Cloud Foundry逻辑视图 回顾,PC 浏览器访问,health manager,VMC client,Mobile App访问,STS Plugin,Router 路由 (Nginx + Locator Service),NATS 消息总线,service poo
12、l,MySQL,MongoDB,Radis,RabbitMQ,cc - db,uaa - db,uaa - AuthN,package cache,blobstore,Caldecott,Oracle,Legacy App,43,NATS,other,目录,Paas和IaaS的区别和PaaS价值 CloudFoundry的设计目标、原理 CloudFoundry支持的敏捷开发 企业私有云解决的问题和建设价值 CloudFoundry的功能架构 CloudFoundry的应用部署和大规模部署 CloudFoundry的弹性计算 CloudFoundry的案例情况,大企业私有PaaS云,45,现状
13、描述,46,PaaS解决的问题和带来的价值,47,PaaS解决的问题和带来的价值,48,PaaS解决的问题和带来的价值,49,PaaS解决的问题和带来的价值,50,大企业私有云 产品分析,51,目录,Paas和IaaS的区别和PaaS价值 CloudFoundry的设计目标、原理 CloudFoundry支持的敏捷开发 企业私有云解决的问题和建设价值 CloudFoundry的功能架构 CloudFoundry的应用部署和大规模部署 CloudFoundry的弹性计算 CloudFoundry的案例情况,应用如何访问CF中的应用,App Instance,Service,Request,Loa
14、d Balancing and Routing,Response,“vmc push MyApp”,Web Interface,CF中的应用如何自动升级更新,Service,Service,前一 版本,停止运行,代码更新,新版本运行,“vmc update MyApp”,Java Grails Java_web Lift Scale web framework Spring Ruby Rack Rails3 Sinatra,Python Django Wsgi Python的CGIOther Platform Static page node.js Erlang php Standalone,
15、支持的运行时框架,开源支持 .Net Haskell PHP,Mainstream Mongodb Mysql Neo4j Postgresql Redis,Storage FileSystem Remote NFS Vblob Amazon S3 memcacheMessage RabbitMQ Big Data Hadoop,支持的服务,Cloud Foundry PaaSCloud Foundry主要是服务注册和运行时的管理层,各个组件是可以动态发现和松耦合的,通过HTTP终点探测健康状态,Agent可以控制状态并配置动作,一个元素的故障不影响其他元素,Cloud Foundry的部件模
16、块,Cloud Foundry BOSH 部署和管理大规模的分布式系统,以最少的停机时间持续的、可预测的更新系统. 包括各种IaaS的接口: vSphere, vCloud, AWS,OpenStack. 这是个开放平台,提供API支持其他IaaS,Running Cloud Foundry,Cloud Foundry BOSH,Cloud Provider Interface,User Authentication and Authorization,Dynamic Router,DEA Pool,Service Gateway,Apps,Service Connector,Health M
17、anager,Messaging,Cloud Controller,Build Packs,Cloud Foundry BOSH,Service Nodes,Cloud Foundry Components,动态路由器此动态路由器 s路由所有外部系统的请求 (HTTP/API),以及应用请求.维持一个动态的路由表 对每个负荷均衡的应用实例维护一个对外的IP地址、端口路由表,动态路由器,主要功能: 负荷均衡 维护路由表 访问日志,协议支持: HTTP连接字串 支持非HTTP协议 应用相关的指标收集 吞吐量 反应时间 带宽 HTTP返回码,Cloud Foundry Components,DEA(
18、液滴执行代理)一个DEA (Droplet Execution Agent)就是一个安全的完全隔离的容器 比如一个虚机(VM),可以运行多个应用. DEAs负责应用的生命周期管理:构建、启动和停止应用,跟踪所有的实力,周期性的广播状态信息. Buildpacks 在DEA中创建应用体,DEA,主要功能: 管理Linux容器 (Warden) 进程 文件系统 网络 内存 管理应用生命周期 应用日志和文件流 DEA心跳 (nats to cc, hm),其他功能: 放置空间 共享的运行时,Droplet 指把提交的源代码及Cloud Foundry 配置好的运行环境(如Java Web 就是一个T
19、omcat),再加一些控制脚本,如start/stop 等,全部打包在一起的tar 文件。 Staging App 是指制作Droplet,然后把它存储起来的过程。Cloud Foundry 会保存这个Droplet,直到启动(start)一个App 时,一台部署了DEA 模块的服务器会来拿这个Droplet的副本去运行。因此,如果将App 扩展到10 个实例(instance),那么这个Droplet 就会被复制10 份,供10 台DEA 服务器运行。,DEA的隔离机制,一、通过Warden来实现Droplet的隔离,Warden是一个程序运行容器。这个容器提供了一个孤立的环境,Drople
20、t只可以获得受限的CPU,内存,磁盘访问权限,网络权限。 二、通过Warden避免避免应用可以随意访问文件系统,也可以在内网畅通无阻,跑满CPU,占尽内存,写满磁盘。 三、Warden在Linux上的实现是将Linux 内核的资源分成若干个namespace加以区分,底层的机制是CGROUP。这样的设计比虚拟机性能好,启动快,也能够获得足够的安全性。在网络方面,每一个Warden实例有一个虚拟网络接口,每个接口有一个IP,而DEA内有一个子网,这些网络接口就连在这个子网上。安全可以通过iptables来保证。在磁盘方面,每个warden实例有一个自己的filesystem。这些filesyst
21、em使用aufs实现的。Aufs可以共享warden之间的只读内容,区分只写的内容,提高了磁盘空间的利用率。因为aufs只能在固定大小的文件上读写,所以磁盘也没有出现写满的可能性。 四、为何不用LXCLXC是另一个Linux Container。那为什么不使用它,而开发了Warden呢。因为LXC的实现是和Linux绑死的,CloudFoundry希望warden能运转在各个不同的平台,而不只是Linux。另外Warden提供了一个Daemon和若干Api来操作,LXC提供的是系统工具。还有最重要的一点是LXC过于庞大,Warden只需要其中的一点点功能就可以了,更少的代码便于调试。,构建包(
22、Buildpacks ),其他功能: vFabric Import tool Buildpack manager Enhanced caching Version policy,主要功能是: Staging /bin/detect /bin/compile 配置droplet Runtime (Ruby/Java/Node/Python) Container (Tomcat/Websphere/Karaf) Application (.WAR, .rb, .py),Cloud Foundry Components,消息机制一个非常快速的内部消息总线 (NATS)管理所有的系统通讯,通过发布订阅
23、模式,Message Bus (NATS),主要功能: 非持久化的消息传输 发布/订阅 队列 (应用事件) 直接的消息 (INBOX),其他功能: 支持鲁壮的消息总线接口 水平扩展,Cloud Foundry Components,云控制器(Cloud Controller) Cloud Foundry 的管理模块。简单来说,就是与VMC 和STS 交互的服务器端,它收到指令后发消息到各模快,管理整个云的运行,相当于Cloud Foundry 的大脑。 云控制器 提供了和客户端的接口 (cf, STS, Eclipse) ,支持应用供应控制,对域对象提供了RESTful的API接口 (apps
24、, services, organizations, spaces, service instances, user roles, and more).,CLI,Cloud Controller,主要功能: 期望的应用状态 安全论证/许可 组织架构/Spaces/用户 服务管理 应用放置 应用期望的状态汇聚 审计/日志帐务事件 块存储,其他功能: 可用区感知的放置 可配置的网络策略 论证范围和角色映射 支持查询的增强的审计,Cloud Foundry Components,健康管理器健康管理器 监控应用的正常运行时间/健康度,查找不匹配的应用状态(期望的/实际的). 云控制器提供了期望的状态,
25、DEA提供实际的状态,如果健康管理器发现当前状态和预期的不一致,就会提示云控制器,Health Manager,主要功能: 维护应用的实际状态 和预期状态对比 发送建议,确保和预期和实际状态相符,其他功能: 支持短生命周期的应用 可配置的重启策略 水平扩展,Cloud Foundry Components,服务网关服务网关对本地服务或是第三方服务提供了接口,对服务的处理运行于Service Nodes或是外部第三方的SaaS服务 (e.g., email, messaging, database, storage, etc.).,Service Gateways,主要功能: 服务目录 对服务节
26、点的服务进行创建、删除、绑定、解绑 查询现有的实例数,接受云控制器来的绑定要求 SaaS的服务网关,其他功能: 支持多节点 支持单一服务 松耦合,Cloud Foundry Components,服务连接器服务连接器提供了一个外部服务的接口 (e.g. Oracle DB). 外部服务是不受CF的控制 (也即,没有使用服务节点,提供一个连接字符串 (e.g. JDBC) 给CF,对开发者而言,和其他CF服务是一样的,Service Connector,主要功能: 元数据管理,其他功能: 服务类型模板 创建服务类似实例的各种模板(Oracle and SQLServer) 提供选择,使得服务实例
27、可以跨空间共享,Cloud Foundry Components,UAAThe User Authorization and Authentication system provides user identity, security and authorization services. It manages third party Oauth 2.0 access credentials. It can also provide application access and identity-as-a-service for apps running on Cloud Foundry.,U
28、AA and Login Servers,Responsibility for: Token Server ID Server (User management) OAuth Scopes (Groups) Login UI Access auditing,Roadmap: LDAP Login Server Active Directory Login Server Horizontally scalable Login Server App User Management Service,敏捷开发,代码开发,App1 程序员John的工作环境,Other dev apps,代码开发,App
29、1 程序员Mary的开发环境,Other dev apps,QA,QA,App1 QA版本,Other QA apps,Production,PRODUCTION,App1 生产上线版本,Other Prod apps,无需修改代码和配置!,“从有想法到生产上线-一天内”,CF对多云的支持机制,Cloud Foundry 允许您编写应用程序一次,即可部署到任何 Cloud Foundry 实例,不论是公有云还是私有云,甚至是微云,从而帮助您将应用程序变为多云。,CF对多云的支持机制,DEA 动态执行代理作为独立实体运行,执行云控制器(Cloud Controller)发出的请求。由于 DEA
30、是独立的,它可以为应用程序提供一个运行位置,应用程序不必知道自己在哪里执行(就像在传统的操作系统中一样)。 服务网关 提供一种通用/统一的方式,向 DEA 上运行的应用程序公开服务(数据库、消息队列、存储等)。通过通用一致的方式向运行的应用程序公开服务,它的可移植性提高了。 环境变量 实现应用程序可移植的最后一步是,以标准方式向所有应用程序运行时提供服务凭据。在所有 Cloud Foundry 实施中,这是通过注入 JSON 文档作为环境变量完成的,这些变量将列出绑定到应用程序的所有服务及其凭据。当开发人员编写代码以利用此功能时(通过解析 JSON 本身或利用诸如 Spring 3.1 配置文
31、件这样的框架功能),应用程序可以在 Cloud Foundry 的任何实例上运行,无须对代码进行修改。,CF开发IDE环境Cloud Foundry Integration for Eclipse,安全模型,目录,Paas和IaaS的区别和PaaS价值 CloudFoundry的设计目标、原理 CloudFoundry支持的敏捷开发 企业私有云解决的问题和建设价值 CloudFoundry的功能架构 CloudFoundry的应用部署和大规模部署 CloudFoundry的弹性计算 CloudFoundry的案例情况,500 5,000 VMs 40+ unique node types 75
32、+ unique software packages 75+ unique environments Small team,CloudF生产系统部署的实例,dev_setup 手工部署直接在操作系统(ubuntu 10.04)中用脚本部署 可部署单结点或多结点 适合小规模的环境 支持虚拟机和物理机 每台机器需要手工安装和修改配置文件 系统扩容能力和弹性计算较差,Cloud Foundry两种部署方法(1),Application Deployment Flow,Application Deployment Flow (cont.),BOSH 自动部署自动化大规模部署多结点系统 集中式的配置文件
33、 支持自动化系统扩容 仅支持虚拟机 对各类IaaS平台集成 (CPI) 在C生产系统中使用,Cloud Foundry两种部署方法(2),BOSH Logical View,BOSHDeploys and manages large scale distributed systems. BOSH provides the means to go from deployment (i.e., Chef/Puppet) to VM creation and management (i.e., cloud CPI). It includes interfaces for vSphere, vClou
34、d, AWS and OpenStack. Additional CPI can be written for alternative IaaS providers.,部署系统更新配置版本管理监控运行,BOSH在Cloud Foundry中的作用,BOSH的内部结构,BOSH部署原理(1),BOSH CLI,Operation Staff,BOSH,BOSH是部署系统的总指挥 管理员通过BOSH CLI工具发送指令给BOSH,BOSH部署原理(2),BOSH CLI,IaaS,Operation Staff,创建虚拟机,BOSH,CPI,CPI ( Cloud Provider Interfa
35、ce)支持多种 IaaS BOSH通过CPI管理IaaS层资源(虚拟机、虚拟存储、虚拟网络等),BOSH部署原理(3),Inner Shell,. . .,BOSH CLI,IaaS,VM,Operation Staff,创建虚拟机,VM,VM,VM,BOSH,CPI,BOSH调用CPI动态生成虚拟机 Inner Shell 被管理的部分,BOSH部署原理(4),Inner Shell,. . .,BOSH CLI,IaaS,VM,Stemcell,Operation Staff,Deployment,创建虚拟机,VM,VM,VM,BOSH,CPI,Stemcell提供虚拟机模板 Deploy
36、ment manifest定义部署细节: IP地址、用户名/密码等,BOSH部署原理(5),Inner Shell,. . .,BOSH CLI,IaaS,Stemcell,Deployment,Operation Staff,创建虚拟机,BOSH,CPI,每个虚拟机内嵌一个Agent 负责管理、控制、监控虚拟机,BOSH部署原理(6),Inner Shell,. . .,BOSH CLI,IaaS,Stemcell,Deployment,Operation Staff,创建虚拟机,BOSH,CPI,Agent接收BOSH的指令 完成软件部署安装、应用起停、系统监控等任务,BOSH部署原理(7
37、),Inner Shell,. . .,BOSH CLI,IaaS,Stemcell,Release,Deployment,Operation Staff,创建虚拟机,BOSH,CPI,Release包含软件的源代码、目标码、版本、配置等信息,BOSH的内部结构,BOSH由6个虚拟机组成,目录,Paas和IaaS的区别和PaaS价值 CloudFoundry的设计目标、原理 CloudFoundry支持的敏捷开发 企业私有云解决的问题和建设价值 CloudFoundry的功能架构 CloudFoundry的应用部署和大规模部署 CloudFoundry的弹性计算 CloudFoundry的案例
38、情况,Cloud Foundry 组件模型,uaa,ccdb,nats,health manager,Cloud Foundry 部署模型(1)- 单结点,单虚拟机或物理机,OS,Cloud Foundry 部署模型(2)- 多结点,每台虚拟机(或物理机)部署一个或数个组件,Cloud Foundry 云平台的弹性,包含整个Cloud Foundry云平台 单虚拟机,大规模部署Cloud Foundry云平台 多达数千个虚拟机结点,BOSH动态增加DEA结点,可承载更多云应用 BOSH动态增加Service结点,可提供更多云服务,Cloud Foundry 云平台弹性的原理,IaaS,DEA,
39、IaaS,DEA,IaaS,Svc,BOSH,BOSH动态增加DEA结点,可承载更多云应用 BOSH动态增加Service结点,可提供更多云服务,Cloud Foundry 云平台弹性的原理,IaaS,DEA,IaaS,DEA,IaaS,Svc,BOSH,目录,Paas和IaaS的区别和PaaS价值 CloudFoundry的设计目标、原理 CloudFoundry支持的敏捷开发 企业私有云解决的问题和建设价值 CloudFoundry的功能架构 CloudFoundry的应用部署和大规模部署 CloudFoundry的弹性计算 CloudFoundry的案例情况,Cloud Foundry: 在市场上的表现,对各种IaaS的支持,Bare metal,私有PaaS云的案例,公有PaaS云的案例,.COM,Cloud Foundry在国内的案例,108,用友应用PaaS云,E,