cloud foundry_Cloud Foundry教程:对难点进行PaaS

本文是一篇关于Cloud Foundry的教程,介绍了如何部署应用、注册CloudFoundry.com帐户以及使用vmc工具。Cloud Foundry是一个开源的PaaS平台,提供一键式部署服务,包括计算基础架构、中间件和运行时。文章详细讲解了如何与Cloud Foundry进行交互,如使用vmc命令行工具,以及注册和登录过程。此外,还探讨了Cloud Foundry的灵活性,允许在公共云和私有云之间迁移应用。
摘要由CSDN通过智能技术生成

cloud foundry

除非您过去五年来一直生活在岩石下,否则您可能已经听到很多关于“云”的嗡嗡声,而且–除非有人给您提供清晰,具体的介绍,否则您无疑会对该术语持怀疑态度。 广泛地,“云”被用来描述通过自助服务消费模型通过Internet交付的应用程序和服务:需要电子邮件,但又不想学习如何设置Microsoft Exchange或Sendmail? 只需使用GMail注册一个电子邮件帐户。 需要演示软件或备份软件吗? 注册使用SlideRocket或Mozy。 而且,如果您需要一个地方来运行下一个应用程序,但又不想投资建立数据中心以及购买或征用硬件,则可以使用计算云。 最后一部分是我们将在本文中介绍的内容。

IaaS或基础架构即服务描述了动态设置操作系统(以及诸如RAM,硬盘空间等操作系统资源)的能力。 IaaS解决方案的常见示例包括Amazon Web Services和VMware的vCloud Director。 这些解决方案使您可以将大量的计算资源(硬盘,内存)当作一个池,从中可以提取和使用各个实例。 如果您的问题是“我想快速设置新的Linux(或Windows或Solaris)计算机”,那么IaaS可能就是您想要的。 很长一段时间,这 大多数人认为他们想要的。

毕竟,一旦您可以通过按一下按钮就可以设置新服务器,那么“如何使运行中的应用程序启动并运行起来会有多么困难?” 我们集体退缩。 问题在于,对于大多数有意义的应用程序而言,这可能是 相当 艰巨的。 毕竟,假设您的应用程序是 /.d (或“ Oprah”或Digg'd),那么立式Linux机器是否足以满足需求? 您是否能够及时从Linux机器迁移到负载分散的冗余应用程序实例以发挥作用?

如果您要招聘新开发人员,那么这些开发人员是否能够部署您的代码库并快速进行迭代? 还是他们会花费一天(一周?!)的时间来弄清楚驱动程序,操作系统版本,目录结构组合和网络设置的独特排列,以使应用程序甚至运行? 平台即服务是这些问题的答案。

PaaS可以一键式部署代码下的所有内容:计算基础结构(硬件,内存),中间件服务(例如数据库和消息队列)和运行时(例如Ruby,Java或.NET)。 理想的情况是,您可以亲吻六个月的应用程序服务器请购单,而数据库管理也告别,并专注于您的代码。 代码成为货币。

讨论的另一个维度是:选择。 它指出什么是“云” 并不 意味着 是很重要的 “云” mply公开举行,并这并不 意味着锁定。 一个 好的 PaaS的技术都将在内部部署或在别人的数据中心运行。 一个 好的 的PaaS将是开源的,并书面反对应用便携和从一个环境轻松移动到另一个的要求规定。

CloudFoundry.com是一个公共托管的云环境( 在托管帐户处于Beta版时免费www.cloudfoundry.com 注册一个帐户),以及可以完全安装在防火墙后的解决方案。 您可以使用Cloud Foundry编排引擎BOSH将vSphere Foundry完全安装在vSphere或Amazon Web Services上的防火墙后面。 自然,因为它是开源的,所以还有其他方法可以在您的环境中安装它,包括Chef配方和Ubuntu软件包。

Cloud Foundry已获得Apache 2许可证的许可,并且在生态系统增长方面非常成功。 人们获取了代码,将其分叉,并创建了自己的更专业的Cloud Foundry版本。 可以说,Cloud Foundry有更多以爱好者为中心的端口(支持Haskell Erlang ),以及更可靠的产品实现。 ActiveState除了基本版本中包含的受支持的运行时和语言之外,还提供了一个称为Stackato的私有PaaS,该PaaS支持Python和Perl。 众所周知,ActiveState是针对诸如Python,Perl和TcL等语言的IDE和工具的领先制造商。 AppFog (以前称为PHPFog)提供了基于Cloud Foundry的PaaS,该PaaS支持PHP。

这很重要,因为它给您自由:您可以根据需要在公共托管的环境中运行该应用程序,以简化入门,并且-如果需要扩展,QoS要求,支持的服务或法规限制,则可以毫不犹豫地迁移。内部云(和您的应用程序),并确信跨环境支持相同的命令行工具,API和服务。

部署应用

有几种入门方法。 也许最简单的方法是在公共站点上注册并在该站点上创建一个帐户。 随着开发工作的不断深入,您可能会决定要更快地进行迭代并使用本地运行的云。 对于这种非常特殊的用例,请考虑使用Micro Cloud Foundry(MCF)。 MCF是一个虚拟机映像,在VMware的Player中运行在Linux和Windows和VMware融合的OSX(播放器是免费的,但融合附加了一个象征性的价格。)你可以注册一个帐号并下载图像免费从MCF网站上进行设置即可 。 为了我们的目的,让我们简单地使用在线站点。

我们需要一些工具来有效地使用任何Cloud Foundry实例: vmc 命令行工具,以及-如果您是使用JVM的开发人员(Spring,Grails,Scala,常规应用程序等),则是Eclipse。支持Cloud Foundry。

与Cloud Foundry进行交互的方式有很多。 Cloud Foundry面向公众的端点(称为 云控制器 )是一种RESTful API,所有命令都通过该API传递,并最终从云体系结构本身的组件之一实现某种响应。 当您使用此RESTful API本身操作Cloud Foundry时,使用语言和特定于客户端的集成会更容易。 VMC 命令行工具提供了一个很好的方式与Cloud Foundry的互动对周围的人更舒适的敲打在壳; Eclipse支持提供了Cloud Foundry的WTP连接器视图; Grails和Roo RAD框架都提供了附加组件,并且支持使用Maven插件部署应用程序。

注册CloudFoundry.com帐户

注册很容易。 当该项目处于测试阶段时,CloudFoundry.com上的帐户是免费的。 转到Cloud Foundry注册页面,然后执行以下步骤。

使用vmc

此处提供了说明,但是它们可能会随时间变化,因此,如有任何疑问, 务必查阅官方文档部分以获取最新和最详尽的信息。 vmc命令行工具是用Ruby编写的。 因此,首先,您需要在操作系统上安装Ruby。 目前,在2012年第二季度,支持Ruby 1.9.2(或更高版本)和1.8.7(或更高版本)。 在Linux上,您可以使用操作系统的软件包管理器来安装Ruby(如果尚未安装)。 如果您使用的是Windows,则可以使用RubyInstaller.org中Ruby安装程序 。 在OSX上,事情不那么乐观。 内置的Ruby很脆弱。 安装像Ruby Version Manager(rvm)之类的东西更容易,它使您可以在给定的机器上维护Ruby的多个并发安装。 带有rvm的Ruby的设置如下所示:

$ bash -s稳定<<(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)

$ rvm安装1.9.2

$ rvm使用1.9.2

一旦安装了Ruby,就可以轻松获得vmc命令行工具! Ruby带有一个称为gem的软件包管理工具,它用于管理依赖项。 它类似于各种Linux风格的yum,deb或apt软件包管理系统的Ruby特定版本。 要安装vmc,您将使用gem命令行工具,如下所示:

$ sudo gem install vmc

如果您在Windows上运行,请删除 sudo 一词 该词 在OSX和Linux等Unix变体中使用,以在调用命令时获得提升的特权,而在Windows上则不需要。 一旦安装了vmc,打开一个新的shell来测试一些基础知识。 使用Cloud Foundry实例时,您需要遵循一些基本的工作流程步骤。

首先,您需要 针对 正确的实例,因为Cloud Foundry并不是一个供应商提供的一个云,而是任何人都可以运行的堆栈。 这类似于您使用Git和Subversion的方式:您不会安装 Git 命令,并希望它自动知道从哪个主机 克隆 源代码,对吗? 根据经验,定位涉及 为Cloud Foundry实例 指定 api URL。 这与 api.foo.com 模式非常一致 ,其中 foo.com 是您的Cloud Foundry实例的主机。 这是我针对CloudFoundry.com的控制台会话:

$ vmc target api.cloudfoundry.com

成功定位到[http://api.cloudfoundry.com]

然后,您需要登录 。 对于给定的会话,您只需登录一次。

$ vmc登录

尝试登录到[http://api.cloudfoundry.com]

电子邮件:jolong@vmware.com

密码:*******

成功登录[http://api.cloudfoundry.com]


使用Cloud Foundry

如果一切成功,您现在就可以开始提出问题并与Cloud Foundry进行交互。 这是vmc info命令的输出。

$ vmc信息

VMware的云应用平台

如需支持,请访问http://support.cloudfoundry.com

目标:http://api.cloudfoundry.com(v0.999)

客户端:v0.3.16.beta.5

用户:jolong@vmware.com

用法:内存(1.6G共2.0G)

服务(6之16)

应用程式(共20个,共3个)

另一个方便的命令是 vmc apps 命令,它告诉您正在运行的应用程序。 运行vmc apps命令时,得到以下输出:

$ vmc应用程序

没有申请

还有什么更令人沮丧的吗? 我们需要部署一个应用程序!

我已经创建了一个简单的Spring MVC应用程序,该应用程序既可以在本地计算机上运行(使用内存数据库H2,又可以使用Cloud Foundry管理的PostgreSQL实例,功能强大的关系数据库和Redis来实现快速数据传输。结构服务。要获取代码,只需从 cloudfoundry-samples GitHub项目 克隆它

$ git clone git@github.com:cloudfoundry-samples / springmvc-hibernate-template.git

该应用程序是一个Java项目,并使用Maven进行构建 。 要编译代码,只需输入项目的根目录,然后运行mvn install命令,如下所示:

$ mvn安装

现在我们有了平台和应用程序,让我们使用 vmc 工具进行 部署 我可以想象你的想法:“来吧,伙计! 我们还不能部署这个东西! 它会吹成碎片-您 刚刚 告诉我们它需要PostgreSQL和Redis!” 而且,这是一个好点! 但是,不用担心! 我们将一劳永逸地部署应用程序并配置这些服务。 您会看到,vmc工具 必须 跻身于最友好的命令行工具之列。 让我们来看一下推送交互:

$ vmc –路径目标/springmvc31-1.0.0推送

这告诉vmc将编译后的代码推送到 –path 参数 指定的目录中 如果您未指定 –path ,它将查找要在当前目录中部署的代码。 如果要以没有编译形式的语言来部署项目,请改为指定该项目的根目录。

应用程序名称:springoncloudfoundryforjax

指定应用程序的名称。 您指定的名称必须不同于我在此处指定的名称(否则会发生冲突!)

应用程序部署的URL [springoncloudfoundryforjax.cloudfoundry.com]:

指定URL(或按Enter接受默认值)。

>检测到Java SpringSource Spring应用程序,这是正确的吗? [Yn]:n

1:导轨

2:春天

3:谷物

4:举升

5:JavaWeb

6:西纳特拉

7:节点

8:PHP

9:Erlang / OTP钢筋

10:WSGI

11:Django

12:机架

选择应用程序类型:5

选定的Java Web应用程序

vmc已检测到应用程序的类型(“ Java SpringSource Spring Application”)。 相反,我们选择了选项5“ JavaWeb”,因为我们的应用程序不需要 自动重新配置 自动重新配置是Cloud Foundry在上载应用程序时提供的一项服务:它重新定义某些类型的应用程序中的服务定义,并将它们自动绑定到由Cloud Foundry管理的数据源的适当定义。 如果您只有一个数据源或一个Redis声明,并且只是想自动将其重新连接以在Cloud Foundry上工作,这将非常有用。 替代方法是从众所周知的上下文中动态查找连接信息,例如 在Cloud Foundry环境中设置 VCAP_SERVICES 环境变量。 还有一个Java API ,称为 cloudfoundry-runtime ,它提供类型安全的Java API来完成相同的工作。 该应用程序已经使用 cloudfoundry-runtime 查找了定义 ,并且不需要自动重新配置。

内存预留(128M,256M,512M,1G,2G)[512M]:

有多少个实例? [1]:

接下来,vmc要求我们指定应用程序的某些运行时特征:需要多少内存? 应该启动多少个实例? 现在,我们只接受默认值。

将现有服务绑定到“ springoncloudfoundryforjax”? [yN]:n

创建服务以绑定到“ springoncloudfoundryforjax”? [yN]:y

1:mongodb

2:mysql

3:PostgreSQL

4:rabbitmq

5:redis

什么样的服务?:3

指定服务的名称[postgresql-63c39]:

创建另一个? [yN]:y

1:mongodb

2:mysql

3:PostgreSQL

4:rabbitmq

5:redis

什么样的服务?:5

指定服务的名称[redis-48adb]:

创建另一个? [yN]:n

最后,建立服务:Redis和PostgreSQL实例。 Cloud Foundry非常好问我们是否需要为应用程序提供服务,并提示我们指定所需数量的服务。 Cloud Foundry中的服务并不与使用它们的应用程序耦合:您可以指定任意数量的服务。 它们必须 绑定 到使用它们的应用程序。 您可以跨应用程序共享服务,并且可以为任何应用程序使用任意数量的服务。 我们的应用程序是按 类型 (而不是按名称 )写到查找引用的 ,因此我们对服务的命名方式无关紧要。

您要保存此配置吗? [yN]:y

清单写入manifest.yml。

创建应用程序:确定

那太 乏味了 当然,它确实部署了我们的应用程序并完全配置了我们需要的服务,但是我敢肯定每次我部署或更新应用程序时都不想回答所有这些问题。 不,不。 我说,把它留给别人吧。 这就是Cloud Foundry清单提供的内容:Cloud Foundry在不提示您的情况下部署应用程序所需的所有清单。 这样可以轻松与他人共享您的配置。 Cloud Foundry甚至愿意 为我们 编写 manifest.yml 文件!

创建服务[postgresql-63c39]:确定

绑定服务[postgresql-63c39]:确定

创建服务[redis-48adb]:确定

绑定服务[redis-48adb]:确定

上传申请:

检查可用资源:确定

处理资源:OK

包装申请:确定

上载(12K):确定

推送状态:确定

登台应用程序“ springoncloudfoundryforjax”:确定

启动应用程序“ springoncloudfoundryforjax”:确定

至此,该应用程序已可用并正在运行! 您可以通过检查 vmc应用程序 的输出来确认这一点 图1 )。


图1:vmc应用程序的输出

这是 好多 了! 通过在浏览器中打开vmc apps输出中指定的URL来启动该应用程序。 该应用程序具有一个简单的UI,可用来处理客户数据的记录。 您还可以在/ crm / customers中找到一个RESTful端点。 结果是带有单个记录的JSON结构。 首次部署应用程序时,没有任何记录! 让我们修复它。

隧道尽头的(数据)光

到目前为止,我们在部署应用程序方面过得很轻松,但是此时,操作人员和DBA可能会紧张地轻敲他们的手指:“我的数据库控制台在哪里? 我的备份脚本?” 确实,您组织中的操作人员是上床睡觉时必须戴蜂鸣器的人员,他们想知道他们可以轻松访问数据,或像执行常规诊断和备份工作一样之前。 Cloud Foundry提供了 caldecott (这是隧道的名称,以旧金山的caldecott隧道命名,如果您想知道的话……)。 通过Caldecott,您可以在云中挖洞,从外部将您连接到在云中运行的服务。 让我们连接到我们的PostgreSQL实例,并使用 vmc tunnel 命令 安装一些数据

$ vmc隧道

1:postgresql-63c39

2:redis-48adb

隧道传输到哪个服务?:2

该命令将列出我们已经创建的服务,并且我们可以建立与之的隧道。 在您的帐户中指定PostgreSQL实例的编号,在本例中为#2。

部署隧道应用程序“ caldecott”。

上传申请:

检查可用资源:确定

包装申请:确定

上载(1K):确定

推送状态:确定

绑定服务[postgresql-63c39]:确定

登台应用程序“ caldecott”:确定

启动应用程序“ caldecott”:确定

获取隧道连接信息:确定

服务连接信息:

用户名:u63a3924f90c6446f9737390675f1a9e0

密码:p9ccfd8a6b4d04e308396a872a9711155

名称:d040a2dbbc977418f9eb599a2245fa96d

默认情况下,该命令输出从任何客户端(无论是否通过命令行)建立自己的连接所需的信息: 对于大多数数据库, 主机,端口,用户名,密码和 名称 (基本上只表示 纲要)

在端口10000上启动到postgresql-63c39的隧道。

1:无

2:psql

您想开始哪个客户?:2

启动'psql -h localhost -p 10000 -d d040a2dbbc977418f9eb599a2245fa96d -U u63a3924f90c6446f9737390675f1a9e0 -w'

psql(9.0.5,服务器9.0.4)

输入“ help”以获得帮助。

d040a2dbbc977418f9eb599a2245fa96d =>

如果这还不够,vmc甚至可以为您启动许多著名的本地命令行工具,例如 psql 我放了它,它把我转储到标准的 psql shell中,在其中可以执行我SQL语句。 该项目在文件 src / main / resources / import_psql.sql中 提供了一些示例数据 将其复制并粘贴到外壳中,然后重新访问 / crm / customers JSON转储页面。 您应该看到新数据反映在结果中。 隧道是一个功能强大的工具,可提供临时查询所需的一切,以及夜间数据转储等操作功能。

我们已经研究了如何从命令行完全将简单的Spring应用程序部署到Cloud Foundry。 我们没有研究如何使用Eclipse WTP支持,Cloud Foundry网站和SpringSource博客中对此进行了详尽的介绍。 我们也没有看过对Spring,Ruby,Node.js,Scala等的开发模型支持。毕竟,Cloud Foundry是多语言的PaaS!

如果您是Spring开发人员,那么您可以进行许多全新的集成来帮助您。 它提供了丰富的API集,可以很好地映射到Cloud Foundry上受支持的服务:Spring AMQP和Spring Integration使基于RabbitMQ的项目非常容易。 Spring Core和Spring Batch只需使用MySQL和PostgreSQL即可进行批处理工作负载。 Spring Data Redis和Spring Data MongoDB都为Redis和MongoDB提供了丰富的支持。 如果您是Java开发人员,并且想在Cloud Foundry之上构建应用程序,那么您会很幸运!

至此,您已经具备了入门所需的一切,以及有关从何处去的大量信息。 如果您有任何疑问,请随时通过 josh.long@pringsource.com 与我 联系 ,或者在Cloud Foundry网站上的众多公共论坛之一中与您联系。 因此,请坐下来放松身心,享受飞往云端的旅程!

——-

作者简介:

Josh Long(@starbuxman和josh.long@springsource.com)是Spring开发人员的拥护者。 乔什(Josh)是ApressSpring食谱第二版的主要作者,第二版是奥赖利(O'Reilly)的“ Spring Roo入门”,曼宁(Manning)的“ Cloud Foundry in Action”。 还有一个SpringSource的提交者和贡献者。 当他不使用代码(用于Spring Integration,Spring Batch,Spring MVC,Activiti等)时,可以在本地Java用户组或本地咖啡店找到他。 他在springsource.org , blog.springsource.org或joshlong.com上博客。

安迪·派珀(Andy Piper)是VMware开发人员关系团队的成员,并且是Cloud Foundry(开源平台即服务)的开发倡导者。 在网上,他可能是最知名的“社会桥梁建设者”,横跨许多技术和兴趣领域。 他之前在IBM Software Group工作了10年以上,担任顾问,战略家和WebSphere Messaging社区负责人。

该教程最初发表在Java Tech Journal – The Cloud Hype之上的PaaS中 。 在链接中查看更多有关该问题的信息。


翻译自: https://jaxenter.com/cloud-foundry-tutorial-taking-a-paas-on-the-hard-stuff-104820.html

cloud foundry

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值