SpringCloudDataFlow入门手册2服务器配置.docx

上传人:b****7 文档编号:10853694 上传时间:2023-02-23 格式:DOCX 页数:29 大小:453.07KB
下载 相关 举报
SpringCloudDataFlow入门手册2服务器配置.docx_第1页
第1页 / 共29页
SpringCloudDataFlow入门手册2服务器配置.docx_第2页
第2页 / 共29页
SpringCloudDataFlow入门手册2服务器配置.docx_第3页
第3页 / 共29页
SpringCloudDataFlow入门手册2服务器配置.docx_第4页
第4页 / 共29页
SpringCloudDataFlow入门手册2服务器配置.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

SpringCloudDataFlow入门手册2服务器配置.docx

《SpringCloudDataFlow入门手册2服务器配置.docx》由会员分享,可在线阅读,更多相关《SpringCloudDataFlow入门手册2服务器配置.docx(29页珍藏版)》请在冰豆网上搜索。

SpringCloudDataFlow入门手册2服务器配置.docx

SpringCloudDataFlow入门手册2服务器配置

重要说明:

本方是翻译自https:

//docs.spring.io/spring-cloud-dataflow/docs/1.3.0.M2/reference/htmlsingle/#getting-started这个文章,感谢SabbyAnandanMariusBogoeviciEricBottardMarkFisherIlayaperumalGopinathanGunnarHillertMarkPollackPatrickPeraltaGlennRenfroThomasRisbergDaveSyerDavidTuranskiJanneValkealahtiOlegZhurakousky这些原文作者的写作成果,让我们能更好地入门学习SpringCloudDataFlow的相关技术,考虑到国内中文的文档资料比较欠缺,而且基本不太成体系,所以自己希望来翻译该文章,方便学习使用。

以下是原文内容的翻译,一些关键性的技术术语,本文考虑不进行翻译,保持原来的英文词汇,加强技术术语印象,而且这些技术术语强行翻译成中文的话,感觉很别扭。

另一方面水平有限,文本可能有翻译不太贴切或是错误的地方,还请大家体谅,看到后多多指正。

********************************以下是原文内容的翻译**********************

Version1.3.0.M2

©2012-2017PivotalSoftware,Inc.

你可以自己使用这个文章或是分发给其它人,但前提是你不以赚取费用为目标,同时每个转发的文章必须包含此版权通知,无论是印刷品版本还是电子发行版本。

服务器配置

在本节中,您将学习如何配置SpringCloudDataFlow服务器的功能,如关系型数据库的使用和安全性配置。

您还将学习如何配置SpringCloudDataFlow的Shell命令行工具的功能。

12.功能启用/禁用

数据流服务器提供了一组特定功能,可以在启动时启用/禁用这些功能特性。

这些特性包括全生命周期的操作、REST接口风格的端点(服务器、基于shell或UI的客户端):

1.Streams

2.Tasks

3.分析

在启动数据流服务器时,可以通过设置以下布尔属性来启用、禁用这些特性:

∙spring.cloud.dataflow.features.streams-enabled

∙spring.cloud.dataflow.features.tasks-enabled

∙spring.cloud.dataflow.features.analytics-enabled

默认情况下,所有功能都会启用。

注意:

由于分析功能是默认启用的,所以数据流服务器需要有一个redis存储作为数据分析库,我们提供一个默认的基于Redis的分析功能实现类。

这也意味着数据流服务器的健康状态取决于redis存储的可用性。

如果你不想启用HTTP端点来读取Redis库里的那些数据,可以使用上边的属性配置来禁用分析功能。

REST风格的端点,提供了的功能启用/禁用的状态信息。

13.数据库配置

关系数据库用于存储stream和task的定义以及task的执行状态。

SpringCloudDataFlow为H2,HSQLDB,MySQL,Oracle,DB2,SQLServer,PostgreSQL提供了相应的数据架构,在服务器启动时将会自动创建相应的数据库和表结构。

SpringCloudDataFlow本身提供了H2数据库的嵌入式实例,可以直接在开发环境当中使用,但不推荐用于生产环境。

MySQL(使用MariaDB的驱动),HSQLDB, PostgreSQL 的JDBC驱动程序, 和嵌入式 H2一样,也是开箱即用的,平台本身已经自带相应的驱动。

如果你正在使用其他的数据库,那么相应的JDBC驱动程序JAR包需要存放在服务器的对应classpath里。

数据库属性可以作为环境变量或命令行参数传递给数据流服务器。

∙环境变量:

exportspring_datasource_url=jdbc:

postgresql:

//localhost:

5432/mydb

exportspring_datasource_username=myuser

exportspring_datasource_password=mypass

exportspring_datasource_driver-class-name="org.postgresql.Driver"

如果你使用的是MySQL,命令行参数是:

java-jarspring-cloud-dataflow-server-local/target/spring-cloud-dataflow-server-local-1.0.0.BUILD-SNAPSHOT.jar\

--spring.datasource.url=jdbc:

mysql:

\

--spring.datasource.username=\

--spring.datasource.password=\

--spring.datasource.driver-class-name=org.mariadb.jdbc.Driver&

如果你使用的是PostgreSQL,命令行参数是:

java-jarspring-cloud-dataflow-server-local/target/spring-cloud-dataflow-server-local-1.0.0.BUILD-SNAPSHOT.jar\

--spring.datasource.url=jdbc:

postgresql:

\

--spring.datasource.username=\

--spring.datasource.password=\

--spring.datasource.driver-class-name=org.postgresql.Driver&

如果你使用的是HSQLDB,命令行参数是:

java-jarspring-cloud-dataflow-server-local/target/spring-cloud-dataflow-server-local-1.0.0.BUILD-SNAPSHOT.jar\

--spring.datasource.url=jdbc:

hsqldb:

\

--spring.datasource.username=SA\

--spring.datasource.driver-class-name=org.hsqldb.jdbc.JDBCDriver&

数据存储升级版 1.0.x 到 1.1.X的时候,需要升级新的数据架构到SpringCloudDataFlow,具体数据库类型的迁移脚本的可以在相应的位置找到。

如果你想使用一个外部的H2数据库实例而不是一个嵌入式的,设置SpringCloudDataFlow的spring.dataflow.embedded.database.enabled 属性为false。

如果spring.dataflow.embedded.database.enabled 属性为false或者指定了其他数据库类型作为数据源,那么h2嵌入式数据库是不会启用的。

13.1.添加自定义JDBC驱动

为数据库添加自定义驱动程序,如Oracle,建议您重新编译数据流服务器,在Maven的POM.XML文件中添加依赖。

每个目标平台都有SpringCloudDataFlow服务器的对应版本,您需要针对每个平台修改相应版本的 POM.XML文件。

在每个GitHub库中有每个服务器版本对应的标签。

为本地服务器添加自定义JDBC驱动的依赖JAR包:

1.选择你需要重新编译的对应服务器版本的标签,在GitHub库里进行克隆。

2.编辑spring-cloud-dataflow-server-local/pom.xml文件,在 dependencies 部分添加数据库驱动程序所需的的依赖。

在下面的示例中,选定了Oracle驱动程序。

...

com.oracle.jdbc

ojdbc8

12.2.0.1

...

3.重新编译SpringCloudDataFlow,具体内容查看:

https:

//docs.spring.io/spring-cloud-dataflow/docs/1.3.0.M2/reference/htmlsingle/#building

在重新编译SpringCloudDataFlow的时候,可以通过设置dataflow-server.yml文件中的属性,给相应的版本设置属性的默认值。

如,像下边这样来设置postgres这个属性的默认值:

∙dataflow-server.yml

spring:

datasource:

url:

jdbc:

postgresql:

//localhost:

5432/mydb

username:

myuser

password:

mypass

driver-class-name:

org.postgresql.Driver

14.安全性

默认情况下,数据流服务器是不安全的,运行在一个未加密的HTTP连接上。

通过启用HTTPS并要求客户端使用以下两种身份验证,您可以确保REST端点以及数据流仪表板的安全性:

∙OAuth2.0认证

∙传统认证方式(如Basic认证)

认证选项

当选择 传统认证,SpringCloudDataFlow服务器将成为主要的认证点,使用SpringSecurity作为基础。

当选择此选项时,用户需要进一步定义他们首选的认证机制,选择所需的后台认证存储:

∙单用户认证,https:

//docs.spring.io/spring-cloud-dataflow/docs/1.3.0.M2/reference/htmlsingle/#configuration-security-single-user-authentication

∙LPAD认证,https:

//docs.spring.io/spring-cloud-dataflow/docs/1.3.0.M2/reference/htmlsingle/#configuration-security-ldap-authentication

∙基于文件认证,https:

//docs.spring.io/spring-cloud-dataflow/docs/1.3.0.M2/reference/htmlsingle/#configuration-security-file-based-authentication

传统认证 或 oauth2之间进行选择的时候,记住这两个选项是互斥的。

请看下面的子章节进行更详细的讨论。

默认情况下,REST端点(用于管理和状态查看)以及仪表板UI不需要经过身份验证就可以访问。

14.1.启用HTTPS

默认情况下,仪表板,管理,和状态端点使用HTTP作为传输协议。

你可以很容易地将他们切换到HTTPS,在 application.yml配置文件中添加证书。

server:

port:

8443

ssl:

key-alias:

yourKeyAlias

key-store:

path/to/keystore

key-store-password:

yourKeyStorePassword

key-password:

yourKeyPassword

trust-store:

path/to/trust-store

trust-store-password:

yourTrustStorePassword

默认端口是 9393,你可以修改端口为更常见的HTTPS典型端口。

如果启用了HTTPS,它将完全替代HTTP作为REST端点和数据流仪表板交互的协议。

普通HTTP请求将失败。

因此,请确保您相应地启用了shell命令行。

14.1.1.使用自签名证书

为了测试目的或在开发阶段,创建自签名证书很方便。

请执行以下命令来创建证书:

$keytool-genkey-aliasdataflow-keyalgRSA-keystoredataflow.keystore\

-validity3650-storetypeJKS\

-dname"CN=localhost,OU=Spring,O=Pivotal,L=Kailua-Kona,ST=HI,C=US"

-keypassdataflow-storepassdataflow

cn 是这里唯一重要的参数,它是使用的域名,如 localhost。

然后添加以下内容到你 的application.yml 文件里:

server:

port:

8443

ssl:

enabled:

true

key-alias:

dataflow

key-store:

"/your/path/to/dataflow.keystore"

key-store-type:

jks

key-store-password:

dataflow

key-password:

dataflow

这是数据流服务器所需要的配置。

一旦你启动服务器,你应该能够访问 https:

//localhost:

8443/。

由于这是一个自签名证书,您将在浏览器中看到一个警告,需要忽略它。

14.1.2.自签名证书和Shell

默认情况下,自签名证书会影响shell的正常使用,需要额外的配置步骤来使shell可以结合自签名证书工作。

有两种方法可以实现:

1.添加自签名证书到JVM的信任库中

2.跳过证书验证

添加自签名证书到JVM的信任库

我们需要从密钥库导出以前创建的证书:

$keytool-export-aliasdataflow-keystoredataflow.keystore-filedataflow_cert-storepassdataflow

接下来,我们需要创建一个shell使用的密钥库:

$keytool-importcert-keystoredataflow.truststore-aliasdataflow-storepassdataflow-filedataflow_cert-noprompt

现在你可以使用以下的命令行来启动DataFlow的shell:

$java-D.ssl.trustStorePassword=dataflow\

-D.ssl.trustStore=/path/to/dataflow.truststore\

-D.ssl.trustStoreType=jks\

-jarspring-cloud-dataflow-shell-1.3.0.M2.jar

IncaseyourunintotroubleestablishingaconnectionviaSSL,youcanenableadditionalloggingbyusingandsettingthe .debug JVMargumentto ssl.

不要忘记设置目标服务器的正确URL:

dataflow:

>dataflowconfigserverhttps:

//localhost:

8443/

跳过证书验证

或者,你也可以通过提供可选的命令行参数 --dataflow.skip-ssl-validation=true来跳过验证。

使用此命令行参数后,shell将接受任何(自签名)SSL证书。

如果可能的话,你应该避免使用此选项。

禁用信任管理器会就失去了SSL的意义,并容易受到攻击。

14.2.传统认证

当使用 传统认证时, SpringCloudDataFlow将是唯一的身份验证提供程序。

在这种情况下,数据流的RESTAPI用户会使用 基本认证来访问端点。

使用该选项时,用户可以选择3种后备存储来完成认证:

•单用户认证 ,使用SpringBoot的属性

•基于YAML文件的多用户认证 

•LDAP认证

14.2.1.单用户认证

这是最简单的选项,模拟了默认的SpringBoot用户体验行为。

它可以通过添加以下属性到应用程序的application.yml 文件或环境变量来启用:

security:

basic:

enabled:

true

realm:

SpringCloudDataFlow

启用基本身份验证。

必须将安全属性设置为true。

(可选)基本身份验证领域将默认 为Spring  ,如果没有设置的话。

在当前案例中,SpringBoot启动时会自动创建一个用户叫 “user ”并自动生成密码,这些信息会被打印到控制台上。

采用这个配置所产生的用户,将分配所有主要的角色权限:

∙VIEW

∙CREATE

∙MANAGE

默认的SpringBoot用户凭证

你可以使用以下属性来自定义用户的相关信息:

security.user.name=user#Defaultusername.

security.user.password=#Passwordforthedefaultusername.Arandompasswordisloggedonstartupbydefault.

security.user.role=VIEW,CREATE,MANAGE#Grantedrolesforthedefaultusername.

请注意基本身份验证本身固有的问题,由于凭据被浏览器缓存,浏览网页进行回退到应用程序的页面,你会自动登录进入系统。

当然,您也可以使用系统属性、环境变量或命令行参数传递认证信息,这些都是SpringBoot支持的标准方法。

例如,在下面的示例中,使用命令行参数来指定用户凭据:

$java-jarspring-cloud-dataflow-server-local-1.3.0.M2.jar\

--security.basic.enabled=true\

--security.user.name=test\

--security.user.password=pass\

--security.user.role=VIEW

如果你需要定义多个基于文件的用户帐号,请看看基于文件的认证。

14.2.2.基于文件的认证

默认情况下,SpringBoot只允许设置一个用户。

SpringCloudDataFlow还支持在配置文件中设置多个用户。

如下所述,每个用户必须指定一个密码,一个或多个角色:

security:

basic:

enabled:

true

realm:

SpringCloudDataFlow

spring:

cloud:

dataflow:

security:

authentication:

file:

enabled:

true

users:

bob:

bobspassword,ROLE_MANAGE

alice:

alicepwd,ROLE_VIEW,ROLE_CREATE

14.2.3.LDAP认证

SpringCloudDataFlow还支持使用LDAP服务器(轻量级目录访问协议)的身份验证,支持以下2种模式:

•直接绑定

•搜索和绑定

当LDAP身份验证选项被激活时,默认的单用户认证模式将被关闭。

在采用直接绑定模式时,认证模式是使用用户定义的可分辨名称(DN),它是使用占位符的用户名。

身份验证过程通过替换占位符派生出用户的专有名称,并使用它在LDAP服务器上进行用户身份验证,同时提供所需要的密码。

您可以设置LDAP直接绑定如下:

security:

basic:

enabled:

true

realm:

SpringCloudDataFlow

spring:

cloud:

dataflow:

security:

authentication:

ldap:

enabled:

true

url:

ldap:

//:

3309

userDnPattern:

uid={0},ou=people,dc=example,dc=com

采用搜索绑定 模式时,先以匿名方式或一个固定的账户连接到LDAP服务器,然后基于用户名的标识来寻找认证用户,然后使用查找到的用户名和相应的密码绑定到LDAP服务器。

此选项配置如下:

security:

basic:

enabled:

true

realm:

SpringCloudDataFlow

spring:

cloud:

dataflow:

security:

authentication:

ldap:

enabled:

true

url:

ldap:

//localhost:

10389

managerDn:

uid=admin,ou=system

managerPassword:

secret

userSearchBase:

ou=otherpeople,dc=example,dc=com

userSearchFilter:

uid={0}

LDAP传输安全

当连接到LDAP服务器时,通常(在LDAP的环境中)有2个选项,可以支持建立到LDAP服务器的安全连接:

∙LDAPoverSSL(LDAPs)

∙StartTransportLayerSecurity(StartTLS)

SpringCloudDataFlow1.1.0 只默认直接支持LDAPs,其它的需要单独配置。

使用官方证书时,不需要特殊的配置,为了通过LDAPS连接到LDAP服务器,只需改变URL的格式,采用 LDAPS格式即可,例如ldaps:

//localhost:

636。

在使用自签名证书的情况下,SpringCloudDataFlow服务器的设置变得稍微复杂一些。

相应的配置与SpringCloudDataFlow服务器使用自签名证书配置非常相似,也就是SpringCloudDataFlow需要基于一个 trustStore 才能正常运行。

这样的配置适合在开发和测试期间使用,但请不要在生产中使用自签名证书,不然信任问题不少。

最后,还必须提供一套关于trustStore的配置参数与凭据来启动服务器:

$java-D.s

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 实习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1