如何在 Spring Cloud Dataflow "Cloudfoundry" 服务器启动时引用本地 Kafka 和 Zookeeper 配置

How to reference local Kafka and Zookeeper config on Spring Cloud Dataflow "Cloudfoundry" server start

这是我到目前为止在 SCDF 本地服务器上成功完成的事情

  1. 我已经在我的本地成功部署了 SCDF 服务器,我还使用了 Kafka 和 Zookeeper 配置参数,即

mymac$ java -jar spring-cloud-dataflow-server-local-1.3.0.RELEASE.jar --spring.cloud.dataflow.applicationProperties.stream.spring.cloud.stream.kafka.binder.brokers=localhost:9092 --spring.cloud.dataflow.applicationProperties.stream.spring.cloud.stream.kafka.binder.zkNodes=localhost:2181

我能够创建我的流

  1. ingest = producer-app > :broker1

  2. filter = :broker1 > filter-app > :broker2


现在我需要帮助才能在 PCFDev 上做完全相同的事情

  1. 我有我的 PCFDEv 运行
  2. 我必须将带有本地 kafka 和 zookeeper 参数的 SCDF-Cloudfoundry jar 部署到 pcfDev,但是当我执行以下步骤时,它会给我一个错误

1.1) cf push -f manifest-scdf.yml --no-start -p /XXX/XXX/XXX/spring-cloud-dataflow-server-cloudfoundry-1.3.0.BUILD-SNAPSHOT.jar - k 1500M

运行良好...没问题。但是 1.2

1.2) cf 启动数据流服务器 --spring.cloud.dataflow.applicationProperties.stream.spring.cloud.stream.kafka.binder.brokers=host.pcfdev.io:9092 --spring.cloud.dataflow.applicationProperties.stream.spring.cloud.stream.kafka.binder.zkNodes=host.pcfdev.io:2181

给我这个错误:--

不正确的用法:未知标志`spring.cloud.dataflow.applicationProperties.stream.spring.cloud.stream.kafka.binder.brokers'

下面是我的清单-scdf.yml 文件

---
instances: 1                        
memory: 2048M                         
applications:                         
  - name: dataflow-server                   
    host: dataflow-server                  
    services:                       
      - redis                      
      - rabbit                         
    env:                          
      SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_URL: https://api.local.pcfdev.io
      SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_ORG: pcfdev-org
      SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_SPACE: pcfdev-space
      SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_DOMAIN: local.pcfdev.io
      SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_USERNAME: admin
      SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_PASSWORD: admin
      SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_SKIP_SSL_VALIDATION: true
      SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_STREAM_SERVICES: rabbit
      MAVEN_REMOTE_REPOSITORIES_REPO1_URL: https://repo.spring.io/libs-snapshot
      SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_DISK: 512
      SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_STREAM_BUILDPACK: java_buildpack
      spring.cloud.deployer.cloudfoundry.stream.memory: 400         
      spring.cloud.dataflow.features.tasks-enabled: true            
      spring.cloud.dataflow.features.streams-enabled: true        

请帮助我。谢谢。

您看到的错误来自 CF CLI,它正在解释您作为标志提供给 cf start 命令的那些(我假设是环境)变量并失败。

您可以在 manifest.yml 中提供它们,也可以使用 CLI 的 cf set-env 命令手动设置它们的值,方法如下:

cf set-env dataflow-server spring.cloud.dataflow.applicationProperties.stream.spring.cloud.stream.kafka.binder.brokers host.pcfdev.io:9092

cf set-env dataflow-server spring.cloud.dataflow.applicationProperties.stream.spring.cloud.stream.kafka.binder.zkNodes host.pcfdev.io:2181

在你设置它们之后,当你 运行 cf start dataflow-server.

相关 CLI 文档: http://cli.cloudfoundry.org/en-US/cf/set-env.html

在 PCF 中向 Stream-apps 提供 Kafka 凭据的选项很少。

1。 Kafka CUP

此选项允许您为外部 Kafka 服务创建 CUP。在部署流时,您可以为每个应用程序单独提供坐标,如 docs or you can supply them as global properties 中所述,对于 SCDF 服务器部署的所有流应用程序。

2。内联属性

除了从 CUP 中提取,您还可以在部署流时直接提供 HOST/PORT。同样,这也可以在全球范围内应用。

stream deploy myTest --properties "app.*.spring.cloud.stream.kafka.binder.brokers=<HOST>:9092,app.*.spring.cloud.stream.kafka.binder.zkNodes=<HOST>:2181

注意:流应用程序必须可以访问主机; o'wise,它将继续连接到本地主机并可能失败,因为应用程序 运行 在 VM 中。