首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 互联网 >

从项目开发到云海架构(12)

2012-10-13 
从项目开发到云端架构(12)?4.3?CloudFoundry ?????? Cloud Foundry是VMware主导使用Ruby开发的一款开源Paa

从项目开发到云端架构(12)

?4.3?CloudFoundry

?????? Cloud Foundry是VMware主导使用Ruby开发的一款开源PaaS云计算平台,它提供了各种各样的云平台、开发框架以及应用程序服务。开发人员可以在该平台上迅速部署及运行Web应用程序。Cloud Foundry能够帮助开发者使用Java或者其他的基于JVM的架构构建应用,它支持的应用程序框架包含Spring、Grails、Ruby on Rails、Node.js 及 Scala,NET的支持。 Cloud Foundry遵从OpenStack云计算平台规范,作为业内第一个开源的PaaS,它给我们打开了一扇研究云计算环境下PaaS平台架构设计的窗户,让我们管中窥豹,学习和借鉴。

?????? Cloud foundry是Vmware的开源PaaS产品,Vmware还有自己的商业版本:VMwarevFabric Cloud Application Platfor,这和Cloud Foundry属于两个产品,分别由两批团队开发。比较而言,vFabric作为商业产品,完善很多,而且发展已久,和STS深度整合。

4.3.1??????????? 简单介绍

?


从项目开发到云海架构(12)
?

图43-01 :Cloud foundry 概念图

?

?????? 从图能清晰的看到Cloud foundry的3大能力,这也是业界标准PaaS平台通常能提供的能力。

??????

基于Cloud Foundry的项目部署架构。特点如下:

??????

?????? 从CF的多层部署的模式去看,并没有超出我们曾经熟知的集群和分布式的理念,CF作了一些封装和提供了一些自动部署的能力。

?

?


从项目开发到云海架构(12)
?

图43-02 :CF推荐的软件架构,多层部署模式

?

?????? 结合CF的功能结构图,程序员设计完毕的代码,通过cloud controller上传到cf,并通过一定的规则部署在DEA区,前端route根据路由的分发,把请求给分解,如果有后端应用(no web)也同样部署在DEA区(可以理解一下上下2张图中的红圈圈,即程序部署的位置),并用rabbitMQ进行关联,这样根据CF提供的通用架构模式和基础服务的支撑,达到了一种系统通用分布式的架构能力,并能达到一定高度的并发访问的要求,并极大的简化了部署和监控的工作。

?

?


从项目开发到云海架构(12)
?

图43-03: 逻辑视图

?

4.3.2??????????? 总体架构

?

?


从项目开发到云海架构(12)
?

图43-04 :CloudFoundry的总架构图

?

?????? CloudFoundry的核心就是一套消息系统,以及多模块的分布式系统,支持模块自发现,错误自检,且模块间低耦合,面向消息的架构是它节点横向扩展,组件自发现等云特性的基础。中心位置有个叫nats的组件,基于EventMachine的消息系统。每个台服务器上的每个模块会根据自己的消息类别,向MessageBus发布多个消息主题;而同时也向自己需要交互的模块,按照需要的信息内容的消息主题订阅消息。

?

?

?


从项目开发到云海架构(12)
?

图43-05 :CF内部控制,指令,数据流向图

4.3.3??????????? 组件说明

Router

?????? Router组件对所有进来的Request进行路由。进入Router的request主要有两类:

?

?

?


从项目开发到云海架构(12)
?

图43-06 Route架构:(左图为老版本设计,右图为新版本设计)

?

?????? 所有进入CloudFoundry系统的requests都会经过Router组件,Router被设计成去单点依赖,组件可平行扩充,且可替代,以保证扩展性。这是CloudFoundry,也是所有云计算系统的设计原则。云系统可以部署多个Routers共同处理进来的requests,CloudFoundry保证所有的request是无状态的,这样负载均衡可采用DNS,硬件LoadBalancer,ngnix,都是可行的。目前Router组件,是对nginx的一个简单封装。

?

Cloud Controller

?????? CloudController是CloudFoundry的管理模块。主要工作包括:

? ? ??? ? ?

?????? Cloud Controller就是与VMC和STS交互的服务器端。VMC和STS与CloudFoundry通信采用的是restful接口,从VMC或者STS接到JSON格式的协议,数据持久化到CloudController Database,并发消息到各模快去控制管理整个云。

?

?


从项目开发到云海架构(12)

图43-07a:Cloud control架构(old)??

?


从项目开发到云海架构(12)

图43-07b:Cloud control架构(new)

?


从项目开发到云海架构(12)

图43-08 :DEAs架构(左图为老版本设计,右图为新版本设计)

?


从项目开发到云海架构(12)

图43-12: 开发部署


从项目开发到云海架构(12)

图43-13: 物理部署图

?

4.3.7 后续工作

?????? 要搭建一个完整的私有云系统,还有很多缺少的地方,譬如下层的IaaS如何集成?如果CloudFoundry一个组件负载过高,应该如何扩容?能否做到自动化?如何检测、管理CloudFoundry的服务器集群?这些都是需要解决的问题。

?????? CloudFoundry是与底层IaaS无关的,可以用vSphere或者OpenStack来作为IaaS方案。为了实现云计算的可伸缩性,IaaS层需要提供如下功能:

?

当CloudFoundry某些组件的发出性能警报,或者到达我们设定的某些指标时,我们需要用IaaS创建部署该组件的虚拟机,并把它启动加入CloudFoundry集群中(由OrchestrationEngine来做);当某些组件有大量资源盈余,而物理资源出现紧张情况的时候,IaaS需要删除虚拟机,把计算资源归还到资源库;IaaS需要提供虚拟机的注册、存储、查找、导入、启动等功能。

?

?? ? ? ?私有云有了IaaS和PaaS,有了自动化管理工具(也就是OrchestrationEngine),但中间还缺少监控管理工具。有了监控管理工具,我们才可以知道现在CloudFoundry每个服务器的资源使用情况,才可以向IaaS请求计算资源。

?

?

?

?

上一篇 从项目开发到云端架构(11) ?: http://timeson.iteye.com/blog/1689462

下一篇 从项目开发到云端架构(13) ?:? http://timeson.iteye.com/blog/1696300

热点排行