Cloud Foundry 安装
本节介绍如何在 Cloud Foundry 上安装 Spring Cloud Data Flow。
后端服务
Spring Cloud Data Flow 需要一些数据服务来执行流式处理以及任务或批处理。在 Cloud Foundry 上配置 Spring Cloud Data Flow 和相关服务时,您有两个选择
- 最简单(也是自动化)的方法是使用 Spring Cloud Data Flow for PCF 磁贴。这是针对 Pivotal Cloud Foundry 的一种固执己见的磁贴。它会自动配置服务器和所需的数据服务,从而简化整体入门体验。您可以此处阅读有关安装的更多信息。
- 或者,您可以手动配置所有组件。
以下部分将详细介绍如何手动安装。
配置 Rabbit 服务实例
RabbitMQ 用作流应用程序之间的消息中间件,并且可以作为 PCF 磁贴使用。
您可以使用 cf marketplace
发现可用的计划,具体取决于您的 Cloud Foundry 设置的详细信息。例如,您可以使用 Pivotal Web 服务,如下例所示
cf create-service cloudamqp lemur rabbit
配置 PostgreSQL 服务实例
RDBMS 用于持久化数据流状态,例如流和任务定义、部署和执行。
您可以使用 cf marketplace
发现可用的计划,具体取决于您的 Cloud Foundry 设置的详细信息。例如,您可以使用 Pivotal Web 服务,如下例所示
cf create-service elephantsql panda my_postgres
数据库连接限制
如果您打算在 SCDF 中创建和运行作为任务管道的批处理作业,则必须确保底层数据库实例包含足够的连接容量,以便批处理作业、任务和 SCDF 可以同时连接到同一个数据库实例,而不会遇到连接限制。这通常意味着您不能使用任何免费计划。
基于清单的 Cloud Foundry 安装
安装 Cloud Foundry
-
下载数据流服务器和 shell 应用程序
wget https://repo.maven.apache.org/maven2/org/springframework/cloud/spring-cloud-dataflow-server/2.11.3/spring-cloud-dataflow-server-2.11.3.jar wget https://repo.maven.apache.org/maven2/org/springframework/cloud/spring-cloud-dataflow-shell/2.11.3/spring-cloud-dataflow-shell-2.11.3.jar
-
下载 Skipper,数据流将流生命周期操作(例如部署、升级和回滚)委托给它
wget https://repo.maven.apache.org/maven2/org/springframework/cloud/spring-cloud-skipper-server/2.11.3/spring-cloud-skipper-server-2.11.3.jar
-
将 Skipper 推送到 Cloud Foundry
安装 Cloud Foundry 后,您可以将 Skipper 推送到 Cloud Foundry。为此,您需要为 Skipper 创建一个清单。
您可以使用
Skipper 服务器
配置中的“默认”部署平台deployment.services
设置(如下所示)将 Skipper 配置为将 RabbitMQ 服务绑定到所有已部署的流应用程序。请注意,在这种情况下,rabbitmq
是服务实例的名称。以下示例显示了 Skipper 的典型清单
--- applications: - name: skipper-server host: skipper-server memory: 1G disk_quota: 1G instances: 1 timeout: 180 buildpack: java_buildpack path: <PATH TO THE DOWNLOADED SKIPPER SERVER UBER-JAR> env: SPRING_APPLICATION_NAME: skipper-server SPRING_PROFILES_ACTIVE: cloud JBP_CONFIG_SPRING_AUTO_RECONFIGURATION: '{enabled: false}' SPRING_APPLICATION_JSON: |- { "spring.cloud.skipper.server" : { "platform.cloudfoundry.accounts": { "default": { "connection" : { "url" : <cf-api-url>, "domain" : <cf-apps-domain>, "org" : <org>, "space" : <space>, "username": <email>, "password" : <password>, "skipSsValidation" : false }, "deployment" : { "deleteRoutes" : false, "services" : "rabbitmq", "enableRandomAppNamePrefix" : false, "memory" : 2048 } } } } } services: - <services>
在运行这些命令之前,您需要填写
<org>
、<space>
、<email>
、<password>
、<serviceName>
(RabbitMQ 或 Apache Kafka)和<services>
(例如 PostgresSQL)。在manifest.yml
中获得所需的配置值后,您可以运行cf push
命令来配置 skipper-server。SSL 验证仅当您使用自签名证书在 Cloud Foundry 实例上运行时(例如,在开发中),才将跳过 SSL 验证设置为
true
。不要将自签名证书用于生产。构建包在指定
buildpack
时,我们的示例通常指定java_buildpack
或java_buildpack_offline
。使用 CF 命令cf buildpacks
获取您的环境中可用的相关构建包列表。 - 配置并运行数据流服务器。
最重要的配置细节之一是向 Cloud Foundry 实例提供凭据,以便服务器可以生成应用程序。您可以使用任何与 Spring Boot 兼容的配置机制(传递程序参数、在构建应用程序之前编辑配置文件、使用 Spring Cloud Config、使用环境变量等),但根据您通常如何将应用程序部署到 Cloud Foundry,其中一些机制可能比其他机制更实用。
在安装之前,您应该了解一些常规配置细节,以便根据需要更新清单文件。
常规配置
本节介绍安装到 Cloud Foundry 时需要注意的一些事项。
唯一名称
您必须为应用程序使用唯一名称。同一组织中具有相同名称的应用程序会导致部署失败。
内存设置
服务器的建议最低内存设置为 2G。此外,为了将应用程序推送到 PCF 并获取应用程序属性元数据,服务器会将应用程序下载到本地磁盘上托管的 Maven 存储库。虽然您可以在 PCF 安装中为磁盘空间指定高达 2G 的典型最大值,但您可以将其增加到 10G。阅读有关 最大磁盘配额 的信息,了解如何配置此 PCF 属性。此外,数据流服务器本身实现了一个最近最少使用算法,以便在低于低水位线值时释放磁盘空间。
路由
如果您推送到具有多个用户的空间(例如,在 PWS 上),则您为应用程序名称选择的路由可能已被占用。您可以在推送服务器应用程序时使用 --random-route
选项来避免这种情况。
Maven 仓库
如果您需要为私有仓库配置多个 Maven 仓库、代理或授权,请参阅Maven 配置。
使用清单安装
作为使用 cf set-env
命令设置环境变量的替代方法,您可以在 manifest.yml
文件中整理所有相关的环境变量,并使用 cf push
命令来配置服务器。
以下示例显示了这样一个清单文件。请注意,postgresSQL
是数据库服务实例的名称
---
applications:
- name: data-flow-server
host: data-flow-server
memory: 2G
disk_quota: 2G
instances: 1
path: { PATH TO SERVER UBER-JAR }
env:
SPRING_APPLICATION_NAME: data-flow-server
SPRING_PROFILES_ACTIVE: cloud
JBP_CONFIG_SPRING_AUTO_RECONFIGURATION: '{enabled: false}'
SPRING_CLOUD_SKIPPER_CLIENT_SERVER_URI: https://<skipper-host-name>/api
SPRING_APPLICATION_JSON: |-
{
"maven" : {
"remoteRepositories" : {
"repo1" : {
"url" : "https://repo.spring.io/libs-snapshot"
}
}
},
"spring.cloud.dataflow" : {
"task.platform.cloudfoundry.accounts" : {
"default" : {
"connection" : {
"url" : <cf-api-url>,
"domain" : <cf-apps-domain>,
"org" : <org>,
"space" : <space>,
"username" : <email>,
"password" : <password>,
"skipSsValidation" : true
},
"deployment" : {
"services" : "postgresSQL",
"scheduler-url" : "<scheduler_url>"
},
}
}
}
}
services:
- postgresSQL
您必须先部署 Skipper,然后配置 Skipper 服务器运行的 URI 位置。
Prometheus 配置
如果您在 Cloud Foundry 上安装了 Prometheus 和 Grafana,或者在另一个集群上有单独的安装,请更新 Data Flow 服务器的清单文件,以便 SPRING_APPLICATION_JSON
环境变量包含一个配置所有服务器以及流和任务应用程序以将指标数据发送到 Prometheus RSocket 网关的部分。以下清单显示了特定于此配置的 YAML 代码段
---
applications:
- name: data-flow-server
...
env:
...
SPRING_APPLICATION_JSON: |-
{
...
"management.metrics.export.prometheus": {
"enabled" : true,
"rsocket.enabled" : true,
"rsocket.host" : <prometheus-rsocket-proxy host>,
"rsocket.port" : <prometheus-rsocket-proxy TCP or Websocket port>
},
"spring.cloud.dataflow.metrics.dashboard" : {
"url": <grafana root URL>
}
}
services:
- postgresSQL
Wavefront 配置
如果您拥有 Wavefront SaaS 帐户,则可以启用任务和流指标。为此,您需要通过将以下 JSON 添加到 SPRING_APPLICATION_JSON
环境变量来扩展 Data Flow 服务器清单
"management.metrics.export.wavefront": {
"enabled": true,
"api-token": "<YOUR API Token>",
"uri": "<YOUR WAVEFRONT URI>",
"source": "your-scdf-cf-source-id"
}
查看 Wavefront 执行器 端点,详细了解通过 management.metrics.export.wavefront.XXX
属性支持的 Wavefront 特定选项。
在清单文件中准备好相关属性后,您可以从存储此文件的目录中发出 cf push
命令。
InfluxDB 配置
如果您已在 Cloud Foundry 上安装了 InfluxDB 和 Grafana,或者在另一个集群上有单独的安装,要启用任务和流指标集成,您需要通过将以下 JSON 添加到 SPRING_APPLICATION_JSON
环境变量来扩展 Data Flow 服务器清单
"management.metrics.export.influx": {
"enabled": true,
"db": "defaultdb",
"autoCreateDb": false,
"uri": "https://influx-uri:port",
"userName": "guest",
"password": "******"
},
"spring.cloud.dataflow.metrics.dashboard.url": "https://grafana-uri:port"
查看 Influx 执行器属性,详细了解 management.metrics.export.influx.XXX
属性。
在清单文件中准备好相关属性后,您可以从存储此文件的目录中发出 cf push
命令。
Shell
以下示例展示了如何启动 Data Flow Shell
java -jar spring-cloud-dataflow-shell-{scdf-core-version}.jar
由于 Data Flow 服务器和 Shell 未在同一主机上运行,因此您可以使用 Shell 中的 dataflow config server
命令将 Shell 指向 Data Flow 服务器 URL
server-unknown:>dataflow config server https://<data-flow-server-route-in-cf>
Successfully targeted https://<data-flow-server-route-in-cf>
注册预构建应用程序
所有预构建的流式应用程序
- 均可作为 Apache Maven 工件或 Docker 镜像使用。
- 使用 RabbitMQ 或 Apache Kafka。
- 支持使用 Prometheus 和 InfluxDB 进行监控。
- 包含 UI 中使用的应用程序属性的元数据以及 Shell 中的代码补全。
可以使用 app register
功能单独注册应用程序,也可以使用 app import
功能批量注册应用程序。还有一些 dataflow.spring.io
链接,它们代表特定版本的一组预构建应用程序,这对于入门非常有用。
您可以使用 UI 或 Shell 注册应用程序。
由于 Cloud Foundry 安装指南使用 RabbitMQ 作为消息中间件,因此您需要注册 RabbitMQ 版本的应用程序
dataflow:>app import --uri https://dataflow.springframework.org.cn/rabbitmq-maven-latest