对CloudFoundry的一些提问和回答

长平狐 发布于 2013/11/25 18:34
阅读 1K+
收藏 0

这是的一半内容从vcap_dev邮件列表中整理出来关于CloudFoundry的一些问答,另一半内容是作者本人在实现使用中遇到的问题和解决思路。如果你在布暑/安装过程中遇到类似问题,将会很容易从这里得到答案。我整理别人遇到的问题因为下次没准我也会遇到,帮助别人的同时也是帮助自己,希望本文对您一定参考作用。


怎样在一个dea节点里安装warden?怎么安装dea-ng? 


能从外部访问数据库吗?我指的是通过host, port等直接操作服务,而不是通过Caldecott。
答:不行。从设计上(主要是出于安全考虑),CF不允许外部直接访问服务节点。

我按照 adding_a_system_service
成功安装并启动了echo服务,但在服务列表里却查看不到,并且也不能使用它。
[题外话]将日志调到DEBUG能看到更多的日志信息,echo_gateway和cloud_controller应该在同一台服务器上。
答:CC/GW之间的协议已更新,而上面的教程没有提到。在echo_gataway.yml里你需要做相应更改

dev_setup安装失败,错误提示和"cloudfoundry-identity-uaa"有关

[ERROR]     The project org.cloudfoundry.identity:cloudfoundry-identity-parent:1.1.1 (/home/scf/cloudfoundry/vcap/uaa/pom.xml) has 1 error
[ERROR]     Unresolveable build extension: Plugin org.springframework.build.aws:org.springframework.build.aws.maven:3.0.0.RELEASE or one of its dependencies could not be resolved: The following artifacts could not be resolved: org.springframework.build.aws:org.springframework.build.aws.maven🏺3.0.0.RELEASE, commons-httpclient:commons-httpclient🏺3.1, commons-logging:commons-logging🏺1.0.4, net.java.dev.jets3t:jets3t🏺0.7.2, org.codehaus.plexus:plexus-utils🏺1.1: Could not transfer artifact org.springframework.build.aws:org.springframework.build.aws.maven🏺3.0.0.RELEASE from/to central (http://repo.maven.apache.org/maven2): GET request of: org/springframework/build/aws/org.springframework.build.aws.maven/3.0.0.RELEASE/org.springframework.build.aws.maven-3.0.0.RELEASE.jar from central failed: Connection reset -> [Help 2]

难道是被‘墙’?

答:将这个包https://repo.springsource.org/snapshot/org/cloudfoundry/runtime/cloudfoundry-identity-uaa/1.0.0.BUILD-SNAPSHOT/cloudfoundry-identity-uaa-1.0.0.BUILD-20120329.165548-2.war  https://repo.springsource.org/libs-snapshot-s3-cache/org/cloudfoundry/identity/cloudfoundry-identity-uaa/1.0.0.BUILD-SNAPSHOT/cloudfoundry-identity-uaa-1.0.0.BUILD-20120427.120205-1.war  放入 ~/cloudfoundry/vcap/uaa/uaa/target 再运行一次试试看


启动UAA报错
[题外话]UAA请建议使用最新commit的代码
答:UAA部分依赖于spring-security-oauth2,但这个包最近代码有变,而UAA没有跟进。建议在pom.xml中修改使用正确的版本

CF适用于企业级应用?
1. CF能否支持 SOA , workflow engine, rule engine?
2. 通常企业需要对应用做BI(?), 应用的数据需要放入BI数据库。这怎么做?CF中能做吗?
3. 关于集群。我们能对DEA做集群吗?在集群里dea可以分享信息,而router则可以视为加载平衡。
4. 假设某个大应用需要频繁的对数据进行操作。我需要(希望)将它放到单独的mysql节点上,CF可以这么做吗?

[题外话]别在ubuntu 12.04上费劲。

能将一个PaaS上的应用自动移到另一个类似的PaaS上吗?
答:不能。CF只能查看单个文件的源代码,甚至不能对应用进行下载(虽然提供了这个接口)

我使用UAA的交互工具uaac时提示"context"(上下文)没有设置。context是什么东西?
答:context代表一个已验证的用户或者应用.

我创建了一个mysql服务,并且绑定到了app上。不修改配置文件,我能增加这个mysql服务的大小吗?我意思是能不能通过cli/api修改services或apps的大小。
答:通常来说"不能"。你不能动态的,修改服务实例的大小或配置。这些都是事先定好了的,你可以安装之前配置好。但不能动态更改,至少现在不能。
[snapshot API可以让你从instance A中拷贝数据到instance B]

我最近安装了CloudFoundry,UAA也可以注册用户。我想问能不能注册成为admin的?或者给一个已注册的用户admin权限?那样该用户通过vmc就能对其它用户进行一些操作了(list, add, delete等)。还有就是用户注册得通过我批准才行。
答:当前版本的cloud_controller有一个admin白名单在cloud_controller.yml(别忘了重启cc哦~), 如果你创建的用户的邮箱和里面的一样,那他就能成为admin。下一版本中,在UAA database里会有一个uaa.admin的组。想让UAA成为真正事实上的管理用户的工具,你得有一个痛苦的等待过程(比如:旧的cloud_controller得被废除)。UAA提供了SCIM/Users端点(最近还有/Groups),你可以使用它们来管理用户。。。

上传大应用,如何解决超时问题?我从vmc client和router接收到超时。
答:更改了nginx configration以便能上传大应用,但router或cloud_controller还是报错,我在哪修改?


用UAA/ACM来进行SCIM, 授权,访问控制?

服务如何备份(冗余)?
答:通过snapshot(快照)可部分解决您的问题

题外话:cf-console编码问题请参考 这里

* ccdb是postgresql, 那么我能否将ccdb从cc中分离到另一虚拟机,然后配置cc的数据库指向ccdb即可。这样就能间接实现H/A (高并发),你认为这可行吗?
* 我在某处读到即使NATS服务挂了,cloud controller(甚至整个CF系统仍然能工作),是不是这样啊?您能不能具体说一下细节。

* 可不可以这样:我就用一台单独的虚拟机装NATS,然后其它组件指向它?


最近,我发现:在单结点上安装CF时新增了一个组件叫UAA,而在此之前是没有的。

但是,当我按照"Single/Multi Node VCAP Deployment using dev_setup"多结点安装CF,我却发现在"rest 组件上"根本就没有布暑/运行UAA。

那么,我想问:有必要把UAA放到我的"rest 结点上"吗?或者说我有必要添加UAA到我的 'deployments/devbox.yml'并重新安装吗?

答:UAA用于用户账号管理。(https://github.com/cloudfoundry/uaa/blob/master/docs/UAA-APIs.rst). 

其基本代码已经写好,但(还没成熟,所以)到目前为止"只有你注册邮件是 *@vmware.com 才会用效",否则cloud controller仍会按照以前的验证方式进行。过不了多久,这个限制也会被废除!到时候所有的账号都要通过UAA验证。

[题外话]此问题已过时,但比较有意思,故保留在此。


支持自定义域名吗?

答:目前还不支持。不过我们已经在开发,目前处于demo阶段。一旦完成,到时候将会很简单,你只需:

1. 更新你的cloud_controller配置..

allow_external_app_uris: true

# This dicatates what the uri namespace rules

# are for apps. Admins can overide any of the

# below accept taking a used uri.

app_uris:

  allow_external: true

2. 确保DNS指向的外部的 hostname, IP 运行在 nginx/router 的80端口之上。


如何在外部访问云里的服务?比如用流行的SqlYog来进行管理?

答:这个需求很典型。我们把它放在了第一任务里,您再等等吧。面包会有的~~


vmc push 时在 Staging Application 这一步出现 504 错误

答:新的CF已经将 stager (打包/预编译)剥离出来,在你安装 cloud controller 的那配置文件(通常是 rest.yml )里加上 "- stager", 再重新安装。这错误应该能解决了。

提示 "runtime no support"

答:要学会看错误提示,从这里可以看出是 "executable"不对,也就是说我们期望的可执行文件的路径不对。到rest节点下的 runtimes.yml 文件里把和这"相关的可执行文件的路径"改正过来,再跑一遍就OK了。此外,有时候你上传app成功,也能启动,但通过 "vmc apps" 却发现 'Health' 是 0.0%也和这问题有关,解决办法一样的。

Ruby,错误日志,CF本身,Google - 玩转CloudFoundry你要懂的四样东西,还有就是"热情"。


我使用 vmc 测试自己布暑的 CloudFoundry 老是出错,不能登录怎么办?

答:这是CloudFoundry使用 gem 'cfoundry' 给我们挖的一个坑,建议您在测试时不要使用 vmc 0.3.21和vmc 0.3.23 而是 0.3.18 不过使用过程中请随时做好出错的准备。更新:在 cloud_controller.yml 的uaa部分显式的指定 8080 端口,重启也不能解决。

uaa:
  enabled: true
  url: http://uaa.youdomain.com:8080

原因可能是 我们验证的路径类似这样:

url: http://uaa.vcap.me/oauth/token

而在实际中要指定8080端口才行,也就是说:http://uaa.vcap.me:8080/oauth/token


布暑CloudFoundry对机器,操作系统有什么要求吗?我的资源有限~~

答:官方建议操作系统目前最好用 Ubuntu 10.04  64位,内在不少于 1G ... ....当你正常布暑CF刚开始能用,但上传应用一段时间就崩溃, 没准是你机子性能不满足要求(我曾经在多结点上布暑,rest 所在结点用的是VPS, dea, services结点是虚拟机,因为VPS为512M内存,能看出CF对资源的要求,跑一下就崩溃了 ~^.^~)


我进行多节点安装时,安装很胜利。但 start 时却有的服务/组件(比如: mysql)报错,怎么回事?我在报错信息里看到有 "(Gem::LoadError)" 之类的东东,这是什么

答:如果你对 ruby 有所了解就应该知道,这是你安装的组件对部分 ruby gem 有依赖,而你的系统里没有安装。你可以这么解决直到安装组件所在的路径 cd ~/cloudfoundry/vcap/services/mysql 然后 source ~/.cloudfoundry_deployment_profile 再执行 bundle 就行了。当然了可能系统提示没有'bundle',这时你需要 gem i bundler 。(提示:如果这条命令还报错, 那你还是了解一下ruby吧)


我上传代码时经常到 staging 这一步就报错了,CF如何对我上传的app制件成droplet的?我想大概知道整个过程,但对具体实现不太感兴趣,能帮帮我吗?

答:您所说的功能对应着的是CF中的 stager 组件,整个过程您可以通过查看这里https://github.com/cloudfoundry/stager/blob/master/lib/vcap/stager/task.rb#L47 得到大致了解,整个预编译(打包)过程都在这。即使您不想看代码,看注释就够了! —— [题外话]如果您在阅读CloudFoundry源代码,对预编译(打包)阶段感兴趣,强烈建议从上面链接的 task.rb 文件开始,一步一步跟踪如何实现的。它是整个 stager 组件的'核心'!

整个过程由您所熟悉的命令 mkdir,curl,unzip,ruby,tar 封装而成。


我已经用 https://github.con/cloudfoundry/vcap 安装好CF了,安装时用的是默认的 http://api.vcap.me
现在我想换成自己的域名,比如:http://test.mydomain.com 我要怎么做?
答:如果你可以重新安装的话,建议在您安装时加上 -D test.mydomain.com 选项,这样所得到的域名就是你自己的了。
如果你认为 重新安装麻烦,其实你还可以这么做:
修改在 ~/cloudfoundry/.deployment/devbox/conf/ 下的 *.yml
将其中的 "api.vcap.me" 和 "localhost/127.0.0.1" 换成 "你的域名" 和 "你的 IP 地址",我就是这么做的,确实可行!


原文链接:http://blog.csdn.net/restkuan/article/details/8089613
加载中
返回顶部
顶部