下一代云控制器:VMC 视界

    精彩文章,何不与朋友分享

[译注]本文翻译自Cloud Foundry英文博客站点,原文题为“Next Generation Cloud Controller_ The VMC View”,文章发表时间是 2012 年 08 月 08 日。

在我的上一篇贴子中,我介绍了一些在新的云控制器中推出的新功能。我还加入了帮您回顾的新结构的简图,供您参考。

在上一篇贴子中,主要介绍了对象并简要讨论了如何将这些对象用于操作协同。在本文中,我要介绍如何将对象用于资源核算,如何使用 Cloud Foundry 命令行接口 (VMC) 浏览对象,并简要介绍像自定义域这样的功能如何将这些对象作为基础。

资源核算

从上图您可以看到组织(亦称 org)对象如何充当存储一组空间的根对象。每个空间都包含一定数量的应用程序和服务实例。从资源跟踪的角度而言,这表明我们可以很容易地核算出空间级和组织级的内存和服务开销总和。

如果用 org 来表示项目,然后使用空间存放您的生产应用程序、您的暂存场地 (playground) 以及每个开发人员的场地,则您最终会得到类似下面的结构:

org:mhlsoft
  spaces:
    - name:production
      - apps:
        - name:pds
    - name:staging
      - apps:
        - name:pds
    - name:markl
      - apps:
        - name:pds_ng_node
        - name:pds
    - name:patb
      - apps:
        - name:pds_ng_go

具有这种结构后,Cloud Foundry 便能够告知您每个空间的资源消耗情况以及整个组织的资源消耗总和。

假设 Cloud Foundry 提供商以 $380/mo 的价格向您出售了 16GB 的 RAM。最好知道您总共使用了多少内存、在生产应用程序上的开销以及要用于内部场地的开销。

下一代云控制器的设计宗旨即是完全支持这种情况。这样,Cloud Foundry 工具就可以将组织的总和显示为:

该工具还可以显示每个空间的空间总和,如下所示:

通过此简略说明,您可以了解到下一代系统的设计如何支持各种基于 Cloud Foundry 的商用系统的资源核算和配额实施要求。

使用 VMC 导航

现在,我们有充足的系统在运转,我们可以让下一代云控制器与现有云控制器并驾齐驱地运行。确定了我们进展到何处后,我认为最好为您介绍在为下一代云控制器为目标的同时,如何使用下一代 VMC 在系统中导航。

首先要注意,我们扩展了“vmc target”命令,以容纳可选的组织和空间开关:

$ vmc help target
Set or display the current target cloud
Usage:target [URL]
Options:
--url URL Target URL to switch to
-i, --interactive Interactively select organization/space
-o, --organization, --org ORGANIZATION Organization 
-s, --space SPACE Space

新的 -o 和 -s 开关可用来选择目标云内的组织和空间。在我的一个测试云中,我设置了两个组织,一个组织中有少量空间,而另一组织中只有一个空间。在我使用“vmc target”导航时,请注意观察:

# 显示我的当前环境(云、组织和空间)
$ vmc target
target:https://api.fakedomain.com
organization:pds
space:production

# 切换到暂存空间
$ vmc target -s staging
Switching to space staging...OK
target:https://api.fakedomain.com
organization:pds
space:staging

# 切换到我的其他组织
$ vmc target -o mhlsoft
Switching to organization mhlsoft...OK
Switching to space blaster...OK
target:https://api.fakedomain.com
organization:mhlsoft
space:blaster

新的“vmc orgs”命令和“vmc spaces”命令是简单的枚举命令,显示当前用户所属的组织、可以作为目标的组织以及该组织内的空间:

# 列举可以存在于此云中的组织
$ vmc orgs
Getting organizations...OK
pds
mhlsoft

# 列举当前组织内的空间
$ vmc spaces
Getting spaces in pds...OK
markl
production
qa
staging

# 列举我的其他组织内的空间
$ vmc spaces -o mhlsoft
Getting spaces in mhlsoft...OK
blaster

下一个要注意的新命令是“vmc org”。该命令允许您查看组织及了解其空间和选项。

$ vmc help org
Show organization information
Usage:org [ORGANIZATION]
Options:
--full                Show full information for an org 
-o, --organization, --org ORGANIZATION Organization to show 

# 显示当前组织
$ vmc org
pds:
domains:none
spaces:markl, production, qa, staging 

# 显示另一个组织
$ vmc org mhlsoft
mhlsoft:
domains:none
spaces:blaster

作为“vmc org”命令的对等项,有一个新的“vmc space”命令。该命令允许您查看空间并了解其组织、应用程序、服务及选项:

$ vmc help space
Show space information
Usage:space [SPACE]
Options:
--full                             Show full information 
--space SPACE                      Space to show
-o, --organization, --org ORGANIZATION Space's organization 

# 显示当前空间
$ vmc space
production:
organization:pds
apps:pds-mgmt, pds
services:redis, rabbitmq, redis-stats

# 显示一个不同的空间
$ vmc space staging
staging:
organization:pds
apps:stress, pds, pds-mgmt
services:postgres, redis-e6ebd, rabbitmq-e1a06, redis-stats

正如在上一篇贴子中所讨论的,应用程序名称和服务名称属于空间的范畴。这表示您可以在不同空间重用应用程序名称。要从其他命令的角度了解这一点,可以看一下增强的“vmc apps”命令:

$ vmc help apps
List your applications
Usage:apps
Options:
--framework FRAMEWORK    Filter by framework
--name NAME              Filter by name
--runtime RUNTIME        Filter by runtime
--space SPACE            Show apps in a given space
--url URL                Filter by url

# 列出当前空间内的应用程序
$ vmc apps
Getting applications in production...OK

pds-mgmt:started
platform:sinatra on ruby19
usage:256M × 8 instances
services:rabbitmq, redis-stats, redis

pds:started
platform:node on node06
usage:256M × 16 instances
services:redis, redis-stats 

# 仅列出暂存空间中的 node 应用程序
$ vmc apps --space staging --runtime node*
Getting applications in production...OK

stress:started
platform:node on node06
usage:256M × 1 instances
services:rabbitmq-e1a06

pds:started
platform:node on node06
usage:256M × 1 instances
services:redis-e6ebd, redis-stats

希望这会让您对如何使用 VMC 在系统内导航、如何将应用程序隔离到空间以及这些新功能如何帮助进行基本的操作协同有所了解。支持该系统的所有代码正在以公开方式开发,因此,如果您有兴趣,可以查找关于 vmc云控制器的 repo,当然最好是参与其中,帮助我们解决问题

组织、空间和自定义域

最后,一些非常细心的读者可能注意到,在“vmc org”输出中,有一个针对“domains:”的行。此代码仍待开发,是这一阶段工作流程的组成部分。这是推出对自定义域的正式、集成支持的第一步。随着该功能的完善,我们将对其进行详细说明。简而言之:组织可以分配有一个或多个域或者通配符域。同样的功能还扩展到空间中,限制条件是空间只能连接到为组织启用的域。为域启用空间后,该空间内的应用程序就可以使用此域。为说明这一点,下面列出了示例输出。

# 显示当前组织,注意
# 对 *.cloudfoundry.com 以及自定义
# 通配符域也启用了该功能
$ vmc org
pds:
domains:*.cloudfoundry.com, *.mydomain.com
spaces:markl, production, qa, staging 

# 显示生产空间
# 注意,仅为自定义域启用
# 该功能,生产应用程序
# 不能意外存在于 *.cloudfoundry.com
$ vmc space production
production:
organization:pds
domains:*.mydomain.com
apps:pds-mgmt, pds
services:redis, rabbitmq, redis-stats

# 显示暂存空间
# 注意仅为 *.cloudfoundry.com 启用该功能
# 暂存应用程序不能意外存在于 *.mydomain.com
$ vmc space staging
staging:
organization:pds
domains:*.cloudfoundry.com
apps:pds-mgmt, pds
services:redis, rabbitmq, redis-stats

# 列出生产中的应用程序。注意它们的 URL
$ vmc apps --space production
Getting applications in production...OK

pds-mgmt:started
platform:sinatra on ruby19
usage:256M × 8 instances
urls:manage.mydomain.com
services:rabbitmq, redis-stats, redis

pds:started
platform:node on node06
usage:256M × 16 instances
urls:www.mydomain.com, mydomain.com, pds.mydomain.com
services:redis, redis-stats 

总结

下一代云控制器引入了新的组织和空间对象。这些对象为各类商业类功能(包括操作协同、高级配额管理和控制、自定义域等等)奠定了基础。而代码才最有发言权,我将继续为这些博文增色及添加评论。

-markl
Cloud Foundry 工程设计部副总裁 Mark Lucovsky

    精彩文章,何不与朋友分享

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" cssfile="">