©2012VMware,Inc.AllrightsreservedCloudFoundry开源云计算平台架构剖析张轩宁HenryZhangVMWare云应用平台资深架构师@张轩宁的围脖2CONFIDENTIALCloudFoundry精美纪念品提问可获得卫衣一件今天13:30-15:00活动现场关注官方微博@CloudFoundry并转发且评论一条微博可以参加机械键盘抽奖3CONFIDENTIALCloudFoundry概述4CONFIDENTIAL云计算的三个层次SaaSSoftwareasaServicePaaSPlatformasaServiceIaaSInfrastructureasaServiceIaaS:硬件的自动化管理,人与机器的解耦合效率/性能PaaS:应用的自动化管理,应用与OS的解耦合弹性/控制5CONFIDENTIALCloudFoundry的生态系统开发者开发、测试、部署、更新应用云平台服务运营商维护,运行,客户化平台最终用户访问、使用应用6CONFIDENTIAL开源CloudFoundry云平台7CONFIDENTIAL开放CloudFoundry云平台8CONFIDENTIAL自动化CloudFoundry云平台9CONFIDENTIALCloudFoundry开放云应用平台–丰富编程框架OSScommunityApache2License10CONFIDENTIALDataServicesOtherServicesMsgServicesCloudFoundry开放云应用平台–多样的服务vFabricPostgresvFabricRabbitMQTMAdditionalpartnersservices…Apache2License11CONFIDENTIALDataServicesOtherServicesMsgServicesCloudFoundry开放云应用平台–多平台支持PrivateCloudsPublicCloudsMicroCloudsApache2License12CONFIDENTIALJava平台•Grails模仿Rails的Java平台实现•Java_web普通Javaweb程序•Lift基于Scale的web框架•Spring流行的Java框架Ruby平台•Rack最小化的RubyWeb框架•Rails3一站式的RubyWeb框架•Sinatra极简主义的RubyWeb框架Python平台•Django最流行的PythonWeb框架•WsgiPython的CGI其他平台•Staticpage静态页面•node.js异步Web框架•Erlang•php•standalone独立的程序应用平台支持:不断增多13CONFIDENTIAL主流服务•Mongodb最流行的Nosql数据库•Mysql传统开源关系数据库•Neo4j图数据库•PostgresqlMysql的有力竞争者•Redis极快的内存KV数据库存储•AtmosEMC专业存储•FileSystem远程NFS支持•Vblob提供AmazonS3支持消息•RabbitMQ出色的Erlang队列系统大数据•Hadoop集成服务平台支持:不断增多14CONFIDENTIALDemo发布应用到CloudFoundry云平台15CONFIDENTIAL现场演示编写PHP脚本index.phphtmlbody?phpechophpinfo();?/body/html16CONFIDENTIAL现场演示发布应用到CloudFoundry云平台17CONFIDENTIAL现场演示-发布后用浏览器测试18CONFIDENTIAL立刻账户注册输入推广码:CFCN账号可以立刻生效19CONFIDENTIALMoreDemoApps架构21CONFIDENTIALCloudFoundry架构的逻辑视图22CONFIDENTIALCloudFoundry部署模型(1)-单结点单虚拟机或物理机OS23CONFIDENTIALVMstagerCloudFoundry部署模型(2)-多结点VMuaaVMserviceVMcloudcontrollerVMccdbVMnatsVMrouterVMhealthmanagerVMrouterVMserviceVMserviceVMserviceVMcloudcontrollerVMdeaVMdeaVMdeaVMdeaVMstagerVMstager每台虚拟机(或物理机)部署一个或数个组件24CONFIDENTIAL500–5,000VMs40+uniquenodetypes75+uniquesoftwarepackages75+uniqueenvironmentsSmallteamcloudfoundry.com生产系统部署的实例25CONFIDENTIALdev_setup•Ubuntu10.04•适合小规模的试验环境•每台机器需要手工安装和修改配置文件Github上:博客:和BOSH•大规模的部署•集中式的配置文件•支持自动化扩容•对各类IaaS平台集成Git上的文档+源码博客文章(必读)如何在私有云环境中安装CloudFoundry26CONFIDENTIALdev_setup手工部署•直接在操作系统(ubuntu10.04)中用脚本部署•可部署单结点或多结点•适合小规模的环境•支持虚拟机和物理机•每台机器需要手工安装和修改配置文件•系统扩容能力和弹性计算较差CloudFoundry两种部署方法(1)27CONFIDENTIALBOSH自动部署•自动化大规模部署多结点系统•集中式的配置文件•支持自动化系统扩容•仅支持虚拟机•对各类IaaS平台集成(CPI)•在Cloudfoundry.com生产系统中使用CloudFoundry两种部署方法(2)28CONFIDENTIALBOSH部署原理InnerShell...BOSHCLIIaaSVMAgentStemcellReleaseDeploymentOperationStaff创建虚拟机VMAgentVMAgentVMAgentBOSHCPIRelease包含软件的源代码、目标码、版本、配置等信息29CONFIDENTIAL实现CloudFoundry弹性计算30CONFIDENTIALCloudFoundry云应用的弹性最终用户你的应用根据需要实现水平扩展!31CONFIDENTIALDEA模块动态的增加云应用实例CloudFoundry云应用弹性的原理CloudControllerDEAAppDEAAppDEAAppAppAppAppAppAppAppAppAppAppAppAppAppVMCtoolRESTClient32CONFIDENTIALCloudFoundry云平台的弹性OpensourcePlatformasaServiceprojectAppInstancesServices包含整个CloudFoundry云平台单虚拟机大规模部署CloudFoundry云平台多达数千个虚拟机结点33CONFIDENTIALBOSH动态增加DEA结点,可承载更多云应用BOSH动态增加Service结点,可提供更多云服务CloudFoundry云平台弹性的原理IaaSDEAIaaSDEAIaaSSvcBOSH34CONFIDENTIALBOSH动态增加DEA结点,可承载更多云应用BOSH动态增加Service结点,可提供更多云服务CloudFoundry云平台弹性的原理IaaSDEAIaaSDEAIaaSSvcDEADEASvcDEADEASvcDEADEASvcDEADEASvcBOSH35CONFIDENTIALDemoCloudFoundry应用的弹性(动态扩展)36CONFIDENTIAL现场演示-编写PHP脚本,获取实例编号Demo.phphtmltitleHelloCloudFoundry/titlebodyBThisistestfromCloudFoundryPHP:/bBRp?phpechobHost=/b.getenv(VCAP_APP_HOST).BR;echobPort=/b.getenv(VCAP_APP_PORT).BR;$string=getenv(VCAP_APPLICATION);$vars=json_decode($string,true);echoBinstanceindex:/b.$vars[instance_index];?/body/html37CONFIDENTIAL现场演示–动态调整应用的实例数目只要一条命令,实例数目迅速从1增加到338CONFIDENTIAL现场演示–用浏览器测试多实例实例1输出:Host=192.168.216.130Port=37200instanceindex:0实例2输出:Host=192.168.216.130Port=39839instanceindex:1实例3输出:Host=192.168.216.130Port=33410instanceindex:239CONFIDENTIAL微博:@cloudfoundry网站:博客:社区:文档:视频:中文资源40CONFIDENTIALQ&ACloudFoundry活动预告vForum2012面向开发者的两场技术演讲2012年11月20日北京国际饭店