深度剖析CloudFoundry的架构设计(3) |
发布时间: 2012/7/22 16:06:47 |
下图是DEA模块的架构图: Cloud Controller模块(下面会介绍)会发送start/stop等基本的apps管理请求给DEA,dea.rb接收这些请求,然后从NFS里面找到合适的Droplet。前面说到Droplet其实是一个带有运行脚本的,带运行环境的tar包,DEA只需要把它拿过来解压,并即行里面的start脚本,就可以让这个app跑起来。到此,app算是可以访问,并start起来了,换句话说就是有这台服务器的某一个端口已经在待命,只要有request从这个端口进来,这个app就可以接收并返回正确的信息。 接着dea.rb要做些善后的工作:1、把这个信息告诉Router模块。我们前面说到,所有进入CloudFoundry的requests都是由Router模块处理并转发的,包括用户对app的访问request,一个app起来后,需要告诉router,让它根据loadbalance等原则,把合适的request转进来,使这个app的instance能够干起活;2、一些统计性的工作,例如要把这个用户又新部署了一个app告诉CloudController,以作quota控制等;3、把运行信息告诉HealthManager模块,实时报告该app的instance运行情况。另外DEA还要负责部份对Droplet的查询工作,譬如,如果用户通过CloudController想查询一个app的log信息,那DEA需要从该Droplet里面取到log返回等等。 3、CloudController:CloudController是CloudFoundry的管理模块。主要工作包括: a) 对apps的增删改读; b) 启动、停止应用程序; c) Staging apps(把apps打包成一个droplet); d) 修改应用程序运行环境,包括instance、mem等等; e) 管理service,包括service与app的绑定等; f) Cloud环境的管理; g) 修改Cloud的用户信息; h) 查看Cloud Foundry,以及每一个app的log信息。 这似乎有点复杂,但简单的说,可以很简单:就是与VMC和STS交互的服务器端。VMC和STS与CloudFoundry通信采用的是restful接口,另一方面CloudController是一个典型的Rubyon Rails项目,从VMC或者STS接到JSON格式的协议,然后写入CloudController Database,并发消息到各模快去控制管理整个云。和其他ROR项目一样,CloudController的所有API可以从conf/routes.rb里看到。开放的Restful接口好处在于第三方应用开发和集成,企业在用CloudFoundry部署私有云的时候,可以通过这些接口来自动化控制管理整个Cloud环境。这部份内容将在第二部份论述。亿恩科技石头 负责服务器租用和托管业务 本文出自:亿恩科技【www.enkj.com】 |