Skip to content

Cloud Foundry 应用基础知识

Cloud Foundry 是一种平台即服务 (PaaS) 的服务模式,在 MindSphere 中提供开发和部署环境。您可以通过该平台创建所需的一切,从简单的云 IoT 仪表盘到复杂的企业应用,无所不能。

本部分介绍开发 MindSphere Cloud Foundry 应用的基础知识。以下几点概括了 最为重要的一些方面

  • 属于同一个 MindSphere 应用的所有 Cloud Foundry 应用必须 **在同一个 Cloud Foundry Space 内**部署。
  • 必须为 MindSphere 应用 单独使用一个 Cloud Foundry Manifest 文件
  • Cloud Foundry 应用的名称必须满足以下要求: ---8<--- "docs/concepts/text-modules/application-name.txt!}

  • 建议使用随机路由。否则,请对 Cloud Foundry 路由使用以下方案:{appName}-{tenantName}.apps.{region}.mindsphere.io

  • Cloud Foundry 路由不在 Internet 上公开。必须先在 Developer Cockpit 中注册应用,然后才能通过 Internet 对其进行访问。
  • 必须运行至少 2 个或更多实例,避免 Cloud Foundry 应用停机。

应用

Cloud Foundry 支持由一个或多个微服务组成的 MindSphere 应用。每个微服务都由一个 Cloud Foundry 应用来表示,所有应用都必须在一个单独的 Cloud Foundry 空间内运行。 目前,MindSphere 仅支持配置为使用一个单独 Cloud Foundry Manifest 的应用。对于托管 Cloud Foundry Manifest 文件中的 {appName}-{tenantName} 的 Cloud Foundry,您需使用下面的方案。

要将应用部署到 Cloud Foundry,需从 Cloud Foundry 命令行界面 (cf CLI) 运行 cf push 命令。从运行 cf push 开始到应用部署成功的这段时间内,Cloud Foundry 执行以下任务:

  • 上传和存储应用文件(参见准备部署提示
  • 检查并存储应用元数据(参见 Cloud Foundry Manifest
  • 为应用创建一个 droplet(Cloud Foundry 的执行单元,相当于一个容器)
  • 选择合适的 Diego 单元来运行 droplet(Diego 单元是用于执行 droplet 的虚拟机)
  • 启动应用

在您置备服务并根据需要将服务与应用绑定之前,使用这些服务(如数据库、消息传送或电子邮件服务器)的应用无法完全正常运行。

出站 IP 地址

在 Cloud Foundry 上运行的 MindSphere 应用通过 NAT 网关访问 Internet。如果这些应用需要访问企业网络,则入站防火墙必须允许 NAT 网关的 IP 地址:

  • 对于Europe 1/Europe 2:

    35.156.223.10
    18.194.162.141
    18.194.195.179
    
  • 对于China 1:

    101.132.123.180
    106.15.159.73
    47.102.201.47
    47.102.210.119
    

Buildpacks

Buildpacks 为应用提供框架和运行系统支持。Buildpacks 尝试对应用进行检查,以确定要下载的相关项,以及如何将应用配置为与绑定服务(后端服务)通信。

当推送应用时,Cloud Foundry 会自动为其检测合适的 buildpack。然后使用此 buildpack 编译或准备应用,以进行部署和启动。但也可以在 Cloud Foundry Manifest 中明确指定 buildpack。

MindSphere 的 Cloud Foundry 目前支持以下 buildpacks:

  • Java:Grails、Play、Spring 或任何其它基于 JVM 的语言或框架
  • Node.js:Node 或 JavaScript 应用
  • .NET Core:.NET Core 应用
  • staticfile:HTML、CSS、JavaScript 或 Nginx
  • python:Python 2.x 或 Python 3.x
  • ruby:Ruby 和 JRuby
  • phpPHP,支持多个运行系统
  • Go:Go,支持 glide 和 godep

后端服务

后端服务是应用在正常运行过程中可通过网络使用的任何服务。例如数据存储(如 PostgreSQL)、消息/队列系统(如 RabbitMQ)、缓存系统(如 Redis)和记录服务。后端服务也称为 工厂,会根据服务计划生成服务实例。

有关支持的后端服务的更多信息,请参见后端服务部分。

调整

运行多个实例可提高应用的可用性。必须在 Cloud Foundry 中运行至少 2 个或更多应用实例,以避免在更新期间出现任何停机情况。Cloud Foundry 会自动将这些实例分布在三个供应区域和多个虚拟机上。

如果其中一个应用实例崩溃,Cloud Foundry 会自动将流量路由到另一个实例,并尝试重启崩溃的应用。此外,如果更新 Cloud Foundry,则在更新底层虚拟机时,可能会有一个应用实例短时不可用。

监视

对 Cloud Foundry 应用进行监视的方式是,通过一个健康的端点连续对应用的状态进行检查。如果应用崩溃,Cloud Foundry 会自动尝试重启。

可使用 Cloud Foundry 命令行界面 (cf CLI) 为应用配置健康检查,或者在 Cloud Foundry Manifest 中指定 health-check-http-endpointhealth-check-type 字段。

计算资源

在 Cloud Foundry 中,计算资源的一项最重要的指标是内存消耗。Cloud Foundry 利用多个虚拟机来提供执行应用的环境。为管理这些海量内存,Cloud Foundry 使用以下逻辑分隔手段:

  • **组织**表示一个完整的组织,例如公司。
  • **空间**是构成应用的许多微服务的环境。
  • **应用**运行一个进程,占用指定数量的内存。

应用所需的最大内存 (RAM) 量在 Cloud Foundry Manifest 中配置或使用 CLI 命令配置。由于每个应用都在一个容器内运行,因此无法为应用分配特定 CPU,而是根据应用所请求的内存分配 CPU 使用量。

例如,如果底层虚拟机提供 32 GB 的 RAM,而应用需要最多 8 GB 的 RAM,则应用至少获得当前可用 CPU 使用量的 25%。但应用并不会分配到 2 个特定 CPU,因为所有 CPU 对所有应用都可用。对于一个内存限制为 128 MB 的应用而言,如果当时没有其它应用需要 CPU,则可使用全部 8 个 CPU。 如果有多个应用需要占用 CPU,则会根据应用所分配到的 Cloud Foundry CPU 份额分配可用的 CPU 使用量。分配的 CPU 份额会根据为应用配置的内存限制线性地进行调整。这些份额

下表显示根据应用的内存限制配置为其分配的 CPU 份额。

内存限制 CPU 份额
512 MB 64
1 GB 128
2 GB 256
4 GB 512
8 GB 1024
> 8 GB 1024

这意味着应用可获得的最高 CPU 份额(从而具有最高优先级)为 1024。如果内存限制为 8GB 及以上,将获得这些份额。

调整建议

应对应用进行横向调整而不是纵向调整,以确保其能够处理负载。

相关链接

还有问题?

向社区提问


除非另行声明,该网站内容遵循MindSphere开发许可协议.


Last update: November 16, 2021