`
alanland
  • 浏览: 641619 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

​新版CloudFoundry揭秘

阅读更多

原文链接:http://qing.weibo.com/2294942122/88ca09aa33001753.html

原文作者:EMC中国研究院 颜开

 

 

  CloudFoundry距离发布已经一年多了。在这一年里CloudFoundry不论是社区还是代码日臻成熟,拥有了众多合作伙伴。现在他迈开了更大的脚步,新的CloudFoundry已经逐渐浮出水面。

 

​新版CloudFoundry揭秘

 

  新版的CloudFoundry对于开发者来说,除了可以支持给多的Framework,提供更多类型的Service之外,没有太多变化。但是CloudFoundry本身的架构做了很多改进,可靠性,扩展性和安全性都有了质的提升,而所有的一切都发生在背后。

 

一、新的功能

  CloudFoundry提供了一些开发者们期冀的新功能。

 

  可以和Service直接通信的Tunnel。作为开发者的我们往往希望可以使用客户端工具直接连接到DB上调试。但是在CloudFoundry将DB作为Service隐藏在背后,这样可以提供了诸多方便服务,却让我们无法直接连接到DB。CloudFoundry已经解决了这个问题,可以使用vmctunnel工具,直接访问云后的服务。

  遗留系统的接入支持。如果你有自己的DB或者已经有一个遗留系统不想让CloudFoundry托管,但是又想获得CloudFoundry的PaaS服务。现在有了一个完善的解决方案。开发者可以将DB或者遗漏系统包装成一个Service。然后可以在CloudFoundry中注册,这样就可以自由的访问了。

  更多的Framework支持。CloudFoundry之前已经支持很多的框架。有Spring forJavaRails and Sinatra for Ruby, and Node.js。现在CloudFoundry将支持更多的Framework。有

  o->  Java平台

   >  Grails模仿Rails的Java平台实现

   > Java_web 普通Java web程序

   >  Lift基于Scale的web框架

   >  Spring 流行的Java框架

  o->  Ruby平台

   >  Rack  最小化的Ruby Web框架

   >  Rails3 一站式的Ruby Web框架

   >  Sinatra 极简主义的Ruby Web框架

  o->  Python平台

   >  Django 最流行的PythonWeb框架

   >  Wsgi Python的CGI

  o->   其他平台

   >  Static page 静态页面

   >   node.js 异步Web框架

   >  Erlang

   >  php

   >  standalone 独立的程序

  随着时间的推移,支持的框架将越来越多。你也可以自定义自己的框架,只需要实现不多的代码。其中Standalone是比较特殊的。开发者的程序只要能启动并监听一个端口,就可以作为一个程序运行在CloudFoundry上。提供了非常大的灵活性。

   更多的Service支持。除了更多的框架 支持,CloudFoundry增加了更多的服务。现在除了支持MySQLMongoDB和 Redis外。还支持很多服务。

  ×->   DB

   -  Mongodb 最流行的Nosql数据库

   -  Mysql传统开源关系数据库

   -  Neo4j图数据库

   -  Postgresql Mysql的有力竞争者

   -  Redis极快的内存KV数据库

  ×->  存储

   -  Atmos EMC专业存储

   - FileSystem 远程NFS支持

   -  Vblob 提供Amazon S3支持

  ×->  其他

   -  RabbitMQ 出色的Erlang队列系统

  现在服务逐渐完善,覆盖主流的数据库和存储。也可以通过上文提到的ServiceBroker来接入任何一个外部服务。没有做不到,只有想不到。

 

​新版CloudFoundry揭秘

 

 

上面主要是将新的CloudFounry多了些什么。事实上,新的版本80%的工作在于对基础架构的改进。下面仔细阐述,CloudFoundry做了什么让他的架构更可靠。如果不熟悉前代的架构的话,可以参见《深入Cloud Foundry

 

 二、ROUTER

   上个版本中。Router作为一个nginx脚本存在。所以的请求都必须经过Ruby代码,然后加以转发。这个设计干净利落,不过Ruby也因此转发了大量的数据,容易引起性能问题,所以下个版本中做了如下的改进。

 

​新版CloudFoundry揭秘

 

 

  在新版本的设计中,他们使用Lua脚本来代替原先的Ruby脚本。而Lua脚本会对请求加以分析,转发给Ruby程序,然后Ruby程序再将分析的结果返回。这样一来,proxied request已经不再经过Ruby代码。逻辑和数据完美分离。性能和稳定性都大幅提高了。

  在前版设计中,当Router接收到请求后,会随机分配一个Droplet来处理这个请求,这种方式使得用户没有办法使用Session,因为连续的HTTP请求会被分发到不同的应用实例上处理。新版本设计中增加了对SESSION的支持,当Router发现用户的请求中带了cookie信息,它会在Cookie里暗藏一个Droplet的host,port地址。当有新的请求进来,Router通过解析Cookie得到上次的应用实例,然后尽量转发到同一台Droplet上。

 

三、STAGE

  下面的新版CloudFoundry的架构图。

 

​新版CloudFoundry揭秘

 

 

  可以看到在新的CloudFoundry架构中多出了很多组件。新架构中将用户验证从Controller中剥离,提供更好的验证服务。同时多出了一个单独Stager。

  在原有的架构中,用户上传代码后,Cloud Control会将这部分代码结合CloudFoundry打包成DEA可以运行的格式,并上传到一个NFS中,当DEA启动的时候,会从NFS取到需要相应的包,然后再运行。

  由于打包(Stage)的过程,比较复杂还需要操作大量的文件,需要的时间比较长,单薄的CloudController不堪重负,所以将其移出,成为一个单独的进程。每当CloudController需要打包的时候,就会向Stage队列中发送一个请求,Stage收到请求后,逐个处理之。

  众所周知,不管是Java,Python还是Ruby程序都会有一系列的依赖,例如Ruby的Gem。每次打包的时候,都需要下载很多Gem,这是费时费力不讨好的。所以开发了PackageCache模块来缓存常用的依赖包。这样的话,打包的过程会顺畅很多。

  原先性能问题算是解决了。但CloudFoundry还是个注重高可用的系统,按照原先的设计,存放运行包的NFS是一处单点,一旦Crash,整个CloudFoundry的部署功能都将瘫痪。这是不能容忍的,而且越来越大的规模,一台机器迟早无法容纳全部的运行包。所以使用了BlobStore模块,来替代原先的NFS,提供高可用可扩展的存储服务。

 

四、SERVICE BROKER

  Service Broker可以让Cloudfoundry轻松的支持遗留系统或者不愿意让CloudFoundry托管的系统。他究竟是如何操作的呢?

 

​新版CloudFoundry揭秘

 

 

  首先,我们必须准备好系统,例如postgress。我们配置好程序和防火墙,让CloudFoundry能通过类似 

postgres://xyzhr:secret@db.xyzcorp.com:5432/xyz_hr_db 的URL来访问到服务。

  然后,调用create service,系统会在ServiceBroker中记录你的配置信息。这样就算大功告成了。Bind和其他的过程都有ServiceBroker完成,其实仅仅就是记录信息,没有实际操作。使用这个新的Service的时候和使用CloudFoundry的内部Service没有两样,配置参数都会通过环境变量传入。所以当App访问Service的时候,就与ServiceBroker无关了。

 

 五、DEA

  DEA是App的运行环境,全称是DropletExecution Agent。一台虚拟机上会运行一个或多个DEA。一个DEA可以启动多个App(又称Droplet)。所以我们大家的App都会由DEA启动并管理。

 

​新版CloudFoundry揭秘

 

 

  当CloudFoundry刚刚推出的时候, Droplet包含了应用运行时启动,停止等简单命令。用户应用可以随意访问文件系统,也可以在内网畅通无阻,跑满CPU,占尽内存,写满磁盘。你一切可以想到的破坏性操作都可以做到,太可怕了。CloudFoundry显然不会放任这样的情况太久,现在他们开发出了Warden,一个程序运行容器。这个容器提供了一个孤立的环境,Droplet只可以获得受限的CPU,内存,磁盘访问权限,网络权限,再没有办法搞破坏了。

  Warden在Linux上的实现是将Linux 内核的资源分成若干个namespace加以区分,底层的机制是CGROUP。这样的设计比虚拟机性能好,启动快,也能够获得足够的安全性。在网络方面,每一个Warden实例有一个虚拟网络接口,每个接口有一个IP,而DEA内有一个子网,这些网络接口就连在这个子网上。安全可以通过iptables来保证。在磁盘方面,每个warden实例有一个自己的filesystem。这些filesystem使用aufs实现的。Aufs可以共享warden之间的只读内容,区分只写的内容,提高了磁盘空间的利用率。因为aufs只能在固定大小的文件上读写,所以磁盘也没有出现写满的可能性。

  LXC是另一个Linux Container。那为什么不使用它,而开发了Warden呢。因为LXC的实现是和Linux绑死的,CloudFoundry希望warden能运转在各个不同的平台,而不只是Linux。另外Warden提供了一个Daemon和若干Api来操作,LXC提供的是系统工具。还有最重要的一点是LXC过于庞大,Warden只需要其中的一点点功能就可以了,更少的代码便于调试。

 

 六、结语

  至此,我们已经全面的浏览了CloudFoundry的新功能,新设计。云计算的大潮浩浩汤汤,CloudFoundry作为第一个开源的PaaS平台日臻成熟,实用。但未来还会有更多更好设计等着我们发现,届时我们再一起分享。

 

分享到:
评论

相关推荐

    Spring 与 Cloud Foundry:在云中珠联璧合

    标题 "Spring 与 Cloud Foundry:在云中珠联璧合" 暗示了本文将探讨Spring框架如何与Cloud Foundry云平台相结合,发挥出强大的云计算能力。这两个技术的结合,为企业提供了高效的开发和部署环境,实现了快速迭代和可...

    CloudFoundry服务网关的架构

    ### CloudFoundry服务网关的架构 #### 一、CloudFoundry概述 CloudFoundry作为一个开源的PaaS(Platform as a Service)平台,为开发者提供了极大的灵活性,让他们能够在不同的云平台上选择开发框架与应用服务。该...

    Cloud Foundry: The Definitive Guide

    Cloud Foundry是一个开源的PaaS(平台即服务)平台,旨在为开发者提供一个快速开发、部署和运行应用程序的环境。它最初由VMware发起,并于2011年公开发布,随后在Pivotal公司得到了进一步的发展。Cloud Foundry支持...

    Cloud Foundry合作伙伴战略和案例分享

    Cloud Foundry是一个开源的平台即服务(PaaS)框架,由Pivotal Software公司发起,并由Cloud Foundry基金会维护。这个平台旨在简化应用程序的部署和管理,为开发者提供了一个高效且灵活的开发环境,同时也为企业提供...

    Cloud Foundry平台概述

    ### Cloud Foundry平台概述 Cloud Foundry是一种领先的开源平台即服务(PaaS)解决方案,旨在为开发者提供一种简便的方式来构建、测试和部署应用程序,同时为运维团队提供了强大的自动化管理和资源调度能力。它由...

    CloudFoundry中MongoDB的应用

    ### CloudFoundry中MongoDB的应用 #### CloudFoundry简介与特性 CloudFoundry是一个由VMware发起并维护的开源PaaS(Platform as a Service)云计算平台。它为开发者提供了广泛的自由度来选择运行应用程序的云环境...

    Cloud Foundry:云时代的Linux/LAMP.pdf

    Cloud Foundry是一个开源的Platform-as-a-Service (PaaS) 平台,旨在简化应用程序的部署、运行和扩展。这个平台是由VMware公司发起,并由技术权威Mark Lucovsky领导的团队进行开发。Cloud Foundry的核心理念是让开发...

    cloudfoundry-runtime-0.8.4_Java8_cloud_

    【标题】"cloudfoundry-runtime-0.8.4_Java8_cloud_" 指的是一个针对 Cloud Foundry 运行时环境的特定版本,这个版本是为 Java 8 语言定制的。Cloud Foundry 是一个开源的平台即服务(PaaS)系统,允许开发者构建、...

    Cloud Foundry 中的新增功能-中英文

    Cloud Foundry是一个开源的平台即服务(PaaS)系统,由Pivotal Software维护,用于构建、部署和管理云应用程序。这个技术的核心在于提供了一种高效、可扩展的方式来托管和运行各种应用程序,无论它们是基于微服务...

    Cloudfoundry

    Cloudfoundry

    Cloud Foundry - The Definitive Guide

    Get started with Cloud Foundry, the leading Platform as a Service (PaaS) that’s dramatically changing how developers, operations practitioners, and especially DevOps teams deploy applications and ...

    CloudFoundry开源云计算平台简介.rar

    CloudFoundry开源云计算平台简介rar,提供“CloudFoundry开源云计算平台简介”免费资料下载,主要包括Cloud Foundry的概述、Cloud Foundry的架构、使用Cloud Foundry部署应用等内容,可供学习使用。

    基于CloudFoundry的PaaS云平台的设计与实现

    CloudFoundry是一种开源的PaaS(平台即服务)云平台,它允许用户在云环境中部署和运行应用程序,而无需关注底层硬件或操作系统的细节。它的设计理念是提供一个高可用、弹性的环境,帮助开发者快速部署应用程序,并且...

    CF-Help.rar_Help!_cloudfoundry_cloudfoundry Help

    CloudFoundry是一个开源的平台即服务(PaaS)系统,由Pivotal Software开发并维护,主要用于构建、部署和管理应用程序。这个“CF-Help.rar”压缩包显然包含了与CloudFoundry相关的帮助文档,旨在为用户提供简洁而...

    Cloudfoundry介绍文档

    CloudFoundry的介绍文档,入门必备

    喻勇 2012-08-12 Cloud Foundry的弹性设计

    根据给定的信息,本文将深入探讨“Cloud Foundry的弹性设计”,主要围绕以下几个方面进行解析:Cloud Foundry产品概述、架构剖析以及其中的关键模块(如NATS、Router和Warden Container)。 ### Cloud Foundry产品...

    CloudFoundry云平台部署手册.pdf

    CloudFoundry云平台部署手册.pdf

    Cloud Foundry核心组件架构

    描述Cloud Foundry核心组件的功能,及各组件之间的联系

    从开发者的角度看CloudFoundry

    ### 从开发者的角度看CloudFoundry #### 一、CloudFoundry概述 CloudFoundry作为一个开源的PaaS(Platform as a Service,平台即服务)云计算平台,为开发者提供了极高的自由度来选择运行的应用程序所需的云环境、...

Global site tag (gtag.js) - Google Analytics