Cloud Foundry解释道

Amo*_*eba 60 cloud service web-applications paas cloud-foundry

所以我一直在阅读Cloud Foundry,但我仍然对它是什么感到困惑.这是我对CF上的PaaS的看法,希望你们能告诉我,如果我错了,并解释一下它好一点.

传统的PaaS产品如Microsoft Azure或Google AppEngine提供了一个完整的平台来开发,测试,托管和管理您的Web应用程序.但是,您必须使用他们的API,并且仅限于他们提供的服务以及他们支持的语言/框架.

Cloud Foundry似乎是某种"中间人",它允许您的应用程序使用来自许多公共云的服务.它是如何实现这一目标的?您使用的是单个API吗,比如LibCloud或JCloud?例如,您可以使用来自一个提供商的一项服务和另一家提供商的另一项服务吗?Cloud Foundry本身是否提供任何服务,还是只是一个中间人,允许您轻松地从一个平台迁移到另一个平台,并在一个应用程序中使用来自不同提供商的不同服务组合?

Mar*_*off 84

我是Cloud Foundry的开发人员 - 是的,Cloud Foundry确实有点模糊(没有双关语意).希望我能帮助澄清一些事情.

Cloud Foundry是一个平台即服务,但它需要一个基础架构作为服务.Cloud Foundry 通过BOSH工具支持vSphere,vCloud,OpenStackAmazon AWS作为基础架构.大多数Web应用程序开发人员并不关心这些,但对于那些不得不担心大型IT基础架构的人来说,这真的很酷.

假设您负责AcmeCorp的IT部门.您有50,000名员工都使用您的内部网络服务Fizzbuzz来帮助他们完成工作.为了支持所有员工,您需要在具有强大处理器和大量内存的多台计算机上运行数十个Fizzbuzz应用程序实例,并且您需要大量磁盘空间来存储由您使用的Foo,Bar和Baz应用程序生成的信息内部也是.您已经远远超出了您在自己的刀片服务器上管理的内容,因此您决定租用数据中心.

不幸的是,AcmeCorp非常不正常.财务部门对您使用的数据中心有很大的发言权,每隔几年他们就会让您从一个数据中心切换到另一个数据中心.每隔几年,您就会有几周的停机时间,而您的工程师会尝试通过在vSphere,vCloud,OpenStack或其他任何设备之间切换来修复Fizzbuzz中的错误.

如果您的工程师已经针对Cloud Foundry而不是直接针对底层基础架构编写了Fizzbuzz,Foo,Bar和Baz,那么您的停机时间将会最小化.您不必过于担心被锁定到特定数据中心,因为Cloud Foundry已将该主机层抽象出来.Cloud Foundry也支持某些服务,包括PostgreSQL,MySQL,Mongo,Redis和RabbitMQ等.如果Foo,Bar和Baz使用Cloud Foundry提供的那些服务,那么在基础架构之间迁移时,不用担心这一点.

在后来的路上,你意识到你可以通过将Fizzbuzz作为服务出售给其他大型企业而赚大钱.您的状态非常好:因为您的工程师重新设计了Fizzbuzz以在Cloud Foundry上运行,您可以根据需要将Cloud Foundry部署到AWS.客户尝试了六个月并决定不续订服务?没问题,您没有任何数据中心租约需要担心 - 只需终止所有这些EC2实例并继续.您可以轻松地为每个Fizzbuzz实例部署Cloud Foundry作为服务,以便客户的数据彼此完全隔离.

锦上添花的是Cloud Foundry是开源的.如果您发现它不太适合您的需求,您不必只是通过电子邮件支持并等待Cloud Foundry工程师实现您的梦想功能 - 您也有源,所以您可以制作你需要的任何改变.并且它在Apache 2.0许可下可用,因此很高兴接受拉取请求,但不是必需的.

我希望能够描绘Cloud Foundry解决的各种问题.您可以在评论中询问更多详细信息,或者如果对未来的问题更有意义,您可以查看Cloud Foundry邮件列表.


And*_*per 23

我是Cloud Foundry的开发者倡导者,并希望为Mark的答案添加一些内容,以便专注于您在原始问题中提到的其他一些细节.

首先,您提到GAE和Azure.这两者都有一定的局限性 - 例如,GAE将您限制为特定的语言和API.开源也不是.CF是可扩展的(例如,新版本具有buildpack支持,允许您选择"任何"语言运行时),您可以选择在任意位置运行它.

Mark提到我们今天可以运行CF的4个IaaS提供商,但假设有问题的IaaS(假设我们将Azure,CloudStack,Google Compute Engine等作为未来目标)可以支持少数我们称之为云提供商接口(CPI)那么您也可以将Cloud Foundry部署到这些基础架构上.

您询问如何使用来自不同提供商的服务.与Heroku一样,即将推出的Cloud Foundry(.com)版本将支持一个"市场",您可以在其中插入其他供应商的功能,如果您运行自己的Cloud Foundry实例,则可以选择要部署哪些服务并连接到您的应用.

这很酷:-)如果你想了解更多信息,请在邮件列表上与我们联系!


Pav*_*l K 6

我想将此作为关于API的评论添加到Andy的答案中,但遗憾的是没有足够的声誉来做到这一点.据我所知,Cloud Foundry确实没有特定的API,但它通过环境变量(例如VCAP_SERVICES, VCAP_APPLICATION, VCAP_CONSOLE_IP, VCAP_APP_PORT)提供了许多有用的信息,可以从任何语言或框架访问.虽然这些变量的大量信息是Cloud Foundry内部的,但其中一些可能非常有用.主要是VCAP_SERVICES提供与您的应用绑定的服务信息.

例如,如果我想收集有关我的应用程序当前运行的Azure Cloud Service实例(例如,其ID)的信息,我将使用Azure管理库中的此类.

反过来,Cloud Foundry提供VCAP_APPLICATION环境.变量,包含以下字段:

{"application_users": [],
"instance_id":"97467a9cf508cb75273284b948b6319b",
"instance_index":1,
"application_version":"330b7caf-50e5-48f4-8792-1c80a90b06f1",
"application_name":"helloworld",
"application_uris":["helloworld.vcap.me"],
"started_at":"2013-07-22 10:58:16 +0300",
"started_at_timestamp":1374479896,
"host":"0.0.0.0",
"port":61014,
"limits":{"mem":256,"disk":1024,"fds":16384},
"version":"330b7caf-50e5-48f4-8792-1c80a90b06f1",
"name":"helloworld",
"uris":["helloworld.vcap.me"],
"users":[],
"start":"2013-07-22 10:58:16 +0300",
"state_timestamp":1374479896}
Run Code Online (Sandbox Code Playgroud)

最后,关于日志,监控和诊断的几句话.这个目前还没有在CF PaaS级别实现,但我希望这将实现(因为它是一个非常有用的功能),也许是一些新的环境.变量(比如VCAP_LOGS, VCAP_PERFORMANCE_COUNTERS)将暴露给我们的应用程序.


小智 5

当然,CF 是 IaaS(服务器、存储和网络)和应用程序之间的抽象层,使您可以在公共云和私有云之间移动应用程序,但它的作用还不止于此:

1. 高度水平可扩展的基于容器的平台

应用程序在容器中运行,与将应用程序分配给主机 (VM) 相比,可以实现更好的资源管理。Warden/Garden 是 CF 原生容器技术,尽管最近版本也支持 Docker。

2. 一个自我修复平台,为您的应用程序提供多层 HA

健康管理系统可恢复发生故障的应用程序实例、容器主机、平台进程和虚拟机,而不会出现中断。可用区支持在基础设施层提供 HA。即使在部署或平台升级期间,滚动更新和金丝雀部署也可以实现零停机时间。

3. 固执己见的多语言应用程序运行时

使用heroku“buildpack”构造,可以自动检测应用程序语言,并在普通操作系统映像之上构建适当的运行时堆栈,从而使开发人员能够专注于编写代码。

4. 开发者按需提供有状态数据服务

开发人员可以自行配置 MySQL、RabbitMQ、Redis 等集群的一部分,并将 uri/凭据自动注入到应用程序的环境中。