TaskManager用户指南

安装

要安装geoserver任务管理器扩展,请执行以下操作:

  1. 从下载该扩展模块 GeoServer Download Page 发布页面: geoserver-2.24.x-taskmanager-core-plugin.zip 。为 S3 support ,还要安装该插件 geoserver-2.24.x-taskmanager-s3-plugin.zip

  2. 解压缩此文件并将JAR放入 WEB-INF/lib

  3. 执行Servlet容器所需的任何配置,然后重新启动。启动时,任务管理器将创建一个配置目录 taskmanager 在Geoserver数据目录中。您将能够从Geoserver WebGui菜单中看到任务管理器配置页面。

服务器配置

配置数据库和群集

默认情况下,任务管理器将在其配置目录中创建一个H2数据库。可以通过 taskmanager.properties 文件。

配置目录还包含一个名为 taskManager-applicationContext.xml 它允许更高级的配置。

TaskManager使用 Quartz Scheduler 。如果您在群集环境中运行任务管理器,则必须将Quartz配置为使用数据库和任务管理器。参见Spring配置中的注释块和 Quartz documentation 以获取进一步的说明。可以找到为Quartz创建所需数据库结构的SQL脚本 here 。任务管理器可以自动创建其数据库,也可以选择 this script 可以使用(注意:该脚本是为PostgreSQL制作的。对于任何其他DBMS,可能需要修改脚本,或者,数据库可以在开发环境中自动创建,然后复制到生产环境中)。对于Quartz和任务管理器都使用单个数据库是很好的。

此外,应将属性添加到 taskmanager.properties 将除一个节点之外的每个节点归档: batchJobService.init=false . 这是必要的,因为否则所有节点都会在启动时尝试同时将所有相同的批加载到集群的quartz数据库中,这可能会导致问题。对于整个集群,此初始化只需要发生一次。

数据库

任务管理器允许将任意数量的数据库用作数据传输操作的源和目标。这些都是通过Spring配置文件配置的。目前,通过JNDI或直接通过JDBC,只支持将PostGIS作为目标(以及源)。

<bean class="org.geoserver.taskmanager.external.impl.PostgisDbSourceImpl">
    <property name="name" value="mypostgisdb"/>
    <property name="host" value="hostname" />
    <property name="db" value="dbname" />
    <!-- optional --> <property name="schema" value="schema" />
    <property name="username" value="username" />
    <property name="password" value="password" />
    <!-- optional, for security purposes -->
    <property name="roles">
      <list>
       <value>ROLE1</value>
       <value>ROLE2</value>
      </list>
    </property>
</bean>
<bean class="org.geoserver.taskmanager.external.impl.PostgisJndiDbSourceImpl">
    <property name="name" value="mypostgisjndidb" />
    <property name="jndiName" value="java:/comp/env/jdbc/my-jndi-source" />
    <!-- optional --> <property name="schema" value="schema" />
    <!-- optional, if database has different jndi name on target geoserver servers -->
     <property name="targetJndiNames">
     <map>
        <entry key="mygs" value="java:/comp/env/jdbc/my-jndi-source-on-mygs" />
     </map>
    </property>
    <!-- optional, for security purposes -->
    <property name="roles">
      <list>
       <value>ROLE1</value>
       <value>ROLE2</value>
      </list>
    </property>
</bean>

可以为指定角色 security 目的。

其他数据库系统通常应该使用GenericDbSourceImpl作为源数据库(而不是用于发布)(这已经在MS SQL中进行了测试)。

<bean class="org.geoserver.taskmanager.external.impl.GenericDbSourceImpl">
    <property name="name" value="mysqldb" />
    <property name="driver" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/>
    <property name="connectionUrl" value="jdbc:sqlserver://mysqldbhost:1433;database=mydb" />
    <property name="username" value="username" />
    <property name="password" value="password" />
    <property name="schema" value="dbo" />
</bean>

还特别支持将Informix作为源数据库(不用于发布)。

<bean class="org.geoserver.taskmanager.external.impl.InformixDbSourceImpl">
    <property name="name" value="myinformixdb" />
    <property name="driver" value="com.informix.jdbc.IfxDriver"/>
    <property name="connectionUrl" value="jdbc:informix-sqli://informix-server:1539" />
    <property name="username" value="username" />
    <property name="password" value="password" />
</bean>

也可以使用不支持几何图形的源,并从某个原始类型自动转换它们。为此,必须在数据库中创建一个表,其中包含需要转换的所有几何图形列的列表。可以按如下方式进行配置:

<bean name="geomtable" class="org.geoserver.taskmanager.external.impl.GeometryTableImpl">
    <!-- the name of your metadata table -->
   <property name="nameTable" value="Metadata_Geo" />
    <!-- the attribute name that contains table name -->
   <property name="attributeNameTable" value="table_name" />
    <!-- the attribute name that contains column name -->
   <property name="attributeNameGeometry" value="column_name" />
    <!-- the attribute name that contains geometry type -->
   <property name="attributeNameType" value="geometry_type" />
    <!-- the attribute name that contains SRID code -->
   <property name="attributeNameSrid" value="srid" />
    <!-- the type of conversion: WKT (string to geometry), WKB (binary to geometry), WKB_HEX (hex string to geometry) -->
   <property name="type" value="WKB_HEX" />
</bean>

<bean class="org.geoserver.taskmanager.external.impl.GenericDbSourceImpl">
    ....
    <property name="rawGeometryTable" ref="geomtable"/>
</bean>

外部地质服务器

任务管理器允许任意数量的外部地理服务器用作层发布的目标。这些是通过弹簧配置文件配置的。

<bean class="org.geoserver.taskmanager.external.impl.ExternalGSImpl">
    <property name="name" value="mygs"/>
    <property name="url" value="http://my.geoserver/geoserver" />
    <property name="username" value="admin" />
    <property name="password" value="geoserver" />
</bean>

文件服务

文件服务用于上载和访问文件,如栅格图层或矢量文件。它们是通过Spring配置文件配置的。

常规文件服务

常规文件服务支持存储在硬盘上的栅格和矢量文件。

<bean class="org.geoserver.taskmanager.external.impl.FileServiceImpl">
    <property name="rootFolder" value="/tmp"/>
    <property name="name" value="Temporary Directory"/>
    <property name="roles">
      <list>
       <value>ROLE1</value>
       <value>ROLE2</value>
      </list>
    </property>
</bean>

可以为指定角色 security 目的。

作为根文件夹的非绝对路径将相对于GeoServer数据目录。

或者,也可以使用 ResourceFileServiceImpl (相同的属性)。这一个只接受相对路径,并将通过geoserver资源存储使用数据目录,以便 JDBC Store 可以使用。这可能对 Application Schemas 例如。

S3文件服务

S3文件服务为存储在S3兼容服务器上的栅格提供支持。

它们不需要通过应用程序上下文进行配置,而是从通过属性提供的属性文件中获取 s3.properties.location (see S3 DataStore )。

将为每个服务和每个bucket创建一个服务。我们必须为每个别名添加一行 s3.properties 文件:

alias.s3.rootfolder=comma,separated,list,of,buckets

上面的示例将创建五个S3文件服务:别名逗号、别名分隔、别名列表、别名和别名存储桶。

可以选择为指定角色 security 目的如下:

alias.bucket.s3.roles=comma,separated,list,of,roles

AWS文件服务

还支持Amazon AWS S3存储桶。

<bean class="org.geoserver.taskmanager.external.impl.AWSFileServiceImpl">
    <property name="rootFolder" value="/tmp"/>
    <property name="anonymous" value="false"/>
    <property name="awsRegion" value="us-west-1"/>
    <property name="roles">
      <list>
       <value>ROLE1</value>
       <value>ROLE2</value>
      </list>
    </property>
</bean>

除非将匿名设置为True,否则 default AWS client credential chain 使用的是。

准备脚本

任务管理器GUI允许立即将文件上载到文件服务以进行本地发布。在发布之前对上传的数据执行一些预处理任务(如GDAL命令)可能很方便。可以通过在taskmanager配置目录中创建名为 prepare.sh .如果用户在“上载”对话框中勾选“准备”复选框,则此脚本将以上载的文件作为其第一个参数运行。

安全性

每个配置和每个独立的批处理都与geoserver中的工作区关联(当工作区字段为空时,它将自动与geoserver中的默认工作区关联)。配置或批处理直接从此工作区获取其安全权限。

  • 如果用户对工作区具有读取权限,则可以查看配置或批处理。

  • 如果用户对工作区具有写入权限,则可以运行配置中的批或批。

  • 如果用户对工作区具有管理权限,则可以编辑配置/批处理。

每个数据库或文件服务都可以与角色列表相关联。如果这样做,则只有具有这些角色的用户才能访问所讨论的数据库或文件服务。如果要禁用安全限制,请不要包括 roles 属性(因为空列表将导致无法访问。)

图形用户界面

当前只能从geoserver webgui配置和操作geoserver任务管理器。

模板

在模板页面中,可以创建新模板(或从现有模板复制),可以编辑和删除现有模板。

模板

模板

打开新模板或现有模板后,可以编辑属性、任务和批。属性表根据“任务”表中的信息自动调整;只能填写值。在任务表中,可以编辑每个任务的名称和参数,并可以创建新任务。也可以从此处创建和编辑批,但是必须存在模板才能执行此操作(如果是新模板,则必须单击 apply 一次,然后才能创建新批处理)。还必须保存新任务(同样,通过 apply 按钮)。

模板数据库工作流

模板数据库工作流

配置

configurations 页面中,可以从头开始或从模板(或从现有配置复制)创建新配置,也可以编辑和删除现有配置。

配置

配置

删除配置时,必须选择执行 clean-up ,它将尝试删除此配置的(任务)创建的所有资源(数据库表、文件、层)。如果此操作(部分)失败,仍将删除配置并通知用户。

打开新的或现有的配置后,可以编辑属性、任务和批。

工作流配置2

工作流配置2

属性表根据任务表中的信息自动调整;并且只能填写值。在任务表中,可以编辑每个任务的名称和参数,并可以创建新任务。只有当任务不再是批处理的一部分时,才能将其删除。只有在批处理不在任何地方运行时才能删除它们。删除任务时,必须选择执行 clean-up ,它将尝试删除此任务创建的所有资源(数据库表、文件、层)。如果此(部分)失败,任务仍将被删除并通知用户。

也可以从这里创建和编辑批处理,但是配置必须存在才能执行此操作(如果是新配置,则必须单击 apply once before you can create new batches). New tasks must also be saved (again, via the apply button) before they can be added to a batch. In case that the conditions 满足时,可以启动批处理运行,并显示当前和过去批处理运行的状态/历史。当前批处理运行可以中断(不能保证立即发生)。

进出口

还可以将整个配置导入/导出到XML,例如将它们从一个geoserver传输到另一个geoserver。“导入”按钮位于“配置”页上,而“导出”按钮位于特定配置页上。用户负责确保配置与其他geoserver兼容(可用的任务扩展名、属性值…)。

batches 页面中,可以创建新的独立批处理(不与配置关联),可以编辑和删除现有批处理。显示所有现有的批处理(独立于配置,也属于配置),除非它们是特殊的(如果它们以 @) or if the configuration has not yet been completed (see initializing templates

批

以防 conditions 满足时,可以启动批处理运行,并显示当前和过去批处理运行的状态/历史。当前批处理运行可以中断(不能保证立即发生)。

批处理运行

批处理运行

批处理运行

批处理运行

打开新的或现有的批处理后,可以添加或删除其中的任务并更改任务的顺序。您还可以启用/禁用该批(如果禁用,则该批不会被调度)并选择调度时间。用户可以在每日计划(带时间)、每周计划(带星期和时间)、每月计划(带月和时间)或指定自定义 cron expression .

批处理同步

批处理同步

任务类型

  • CopyTableTask 将数据库表从一个数据库复制到另一个数据库。用户可以指定源数据库、源表名称、目标数据库和目标表名。源表名称也可以是视图。如果源不包含主键列(F.E.如果它是一个视图),则具有自动生成的主键的附加列‘Generated_id’将被添加到目标表中。该任务还将复制所有现有索引。如果源表包含几何列但不包含空间索引(F.E.如果是视图),则会自动将空间索引添加到目标表中。通过创建临时表支持提交/回滚。

  • CreateViewTask 基于单个表创建视图。用户可以指定数据库、表名、选定字段和(可选)where条件。通过创建临时视图支持提交/回滚。

  • CreateComplexViewTask 基于多个表创建视图。用户可以指定数据库和整个查询,其中可以使用‘${PLACEHOLDER}’形式的任何其他配置属性。通过创建临时视图支持提交/回滚。

  • CopyFileTask 将文件从一个文件服务复制到另一个文件服务。版本控制系统支持提交/回滚,将文件的版本插入到文件名中。版本号的位置在路径中指定为 ### (或将自动版本设置为 true 在扩展点之前自动添加占位符)。提交时,旧版本将被删除。回滚时,将删除较新版本。发布任务将自动发布最新版本。

  • LocalDbPublicationTask 在本地发布数据库层。用户可以指定数据库、表和图层名。支持通过公布或删除它创建的层来提交/回滚。

  • RemoteDbPublicationTask 将数据库图层发布到另一个地理服务器。用户可以指定目标地理服务器、源图层和目标数据库。所有信息都取自源层,但目标数据库可能不同。通过创建临时(未通知)层支持提交/回滚。此任务还支持版本占位符或自动版本控制,以便与 CopyFileTask .

  • LocalFilePublicationTask 本地发布文件层(栅格或形状文件)。用户可以指定文件服务、文件(可以上载到服务)和层名称。支持通过公布或删除它创建的层来提交/回滚。

  • RemoteFilePublicationTask 在本地发布文件层(品味者或形状文件)。用户可以指定目标地理服务器、源层和目标文件服务和路径(可选)。除了文件服务和路径可能不同之外,所有信息都是从源层获取的。通过创建临时(未授权)层支持提交/回滚。

  • MetaDataSyncTask 在本地层和另一个地理服务器上的层之间同步元数据(无需重新发布)。用户可以指定目标地理服务器、本地和远程层。不支持提交/回滚。

  • ConfigureCachedLayer 为具有内部GWC的远程地理服务器上的层配置缓存,将设置与本地地理服务器同步。此任务可能打开或关闭缓存,具体取决于本地配置。

  • ClearCachedLayer 使用内部GWC清除(截断)远程地理服务器上缓存层的所有瓦片。

  • LocalAppSchemaPublicationTask 发布 Application Schema 局部分层。这和 LocalFilePublicationTask 将应用程序架构映射文件作为要发布的文件,以及两个附加功能。

    • 映射文件可以作为模板提供,其占位符的形式为 ${{placeholder}} . 占位符将替换为作为任务参数提供的数据库连接参数的值。这使得为不同的地理服务器填充基础源数据库成为可能。例如:指定 ${{jndiReferenceName}} 作为映射文件中的源数据库连接参数。

    • 可以以ZIP文件的形式为单个层提供多个映射文件(当层映射使用包含的类型时)。主映射文件和ZIP文件在扩展名之前必须具有相同的名称。

  • RemoteAppSchemaPublicationTask 发布 Application Schema 远程分层。这和 LocalFilePublicationTask 将应用程序架构映射文件作为要发布的文件,以及两个附加功能:

    • 映射文件可以作为模板提供,其占位符的形式为 ${{placeholder}} . 占位符将替换为作为任务参数提供的数据库连接参数的值。这使得为不同的地理服务器填充基础源数据库成为可能。例如:指定 ${{jndiReferenceName}} 作为映射文件中的源数据库连接参数。

    • 可以以ZIP文件的形式为单个层提供多个映射文件(当层映射使用包含的类型时)。主映射文件和ZIP文件在扩展名之前必须具有相同的名称。

  • LayerSecuritySync 此任务将同步所有 data access security rules 与外部地理服务器的某一层相关联。警告:该任务假定两个地理服务器上存在相同的角色。不支持提交/回滚。

  • WorkspaceSecuritySync 此任务将同步所有 data access security rules 与工作空间相关联的外部Geoserver。警告:该任务假定两个地理服务器上存在相同的角色。不支持提交/回滚。

  • TimeStamp 更新图层元数据中表示上次更新图层数据的时间戳。由于数据时间戳是元数据的一部分,因此也可以更新元数据时间戳。任务必须通过其Spring Bean属性配置 timeStampTaskType.dataTimestampPropertytimeStampTaskType.metadataTimestampProperty 表示层的资源元数据中的键(或键路径)。如果您正在使用 Metadata Community Module 你应该设定 timeStampTaskType.metadataTimestampProperty=custom._timestamp .

  • MetadataTemplateSync 此任务需要 Metadata Community Module 以及 taskmanager-metadata 子模块。它将同步链接到特定元数据模板的所有元数据。更改模板时很有用。

散装作业

任务管理器通过GUI中的一个附加页面提供了许多批量操作工具。导入工具也可以通过REST服务获得。

运行批处理

一次可以安排一系列的批次。指定工作区、配置名称和批处理名称模式,以选择要计划的批处理序列。您可以指定在开始执行批处理之前等待多长时间。您可以指定在执行每个批处理之间等待多长时间。强烈建议此选项不要使软件过载并导致故障。

../../_images/bulk_runbatches.png

导入配置

导入工具允许基于模板和具有属性值的CSV文件批量创建无限数量的配置。与配置的其余部分相反,此功能仅通过rest服务而不是通过GUI公开。导入工具将为CSV文件中的每一行生成一个新配置,第一行除外。第一行必须指定属性名称,该名称应与模板中存在的属性匹配,另外 name (要求) description (可选) workspace (可选)用于配置元数据。CSV文件必须为每个必需的属性指定有效的属性值。

或者,您可以跳过验证(自行承担风险)。

作为使用GUI页面的替代方法,您可以 POST 您的CSV文件 http://{{geoserver-host}}/geoserver/taskmanager-import/{{template}}[validate=false]

../../_images/bulk_import.png

初始化配置

如果您已基于正在初始化的模板批量导入配置,则可能还需要对其进行批量初始化。这类似于批量运行批处理。配置将在初始化后进行验证。

../../_images/bulk_initialize.png

实例

考虑以下设置。

三个地质服务器:

  • work geoserver :地理服务器仅在本地网络中可用,仅由管理员使用。新的和更新的数据第一次在这里作为层发布,以测试数据的有效性和发布配置。

  • internal geoserver :仅在本地网络中为内部用户提供的地理服务器。

  • public geoserver :internet上为公众提供的地理服务器。

几个数据库:

  • multiple source databases :这些是合作伙伴提供的数据库,提供新的和更新的数据。它们不用于直接在地理服务器上发布。

  • work database :数据库由 work geoserver 它的矢量数据存储在哪里。

  • internal database :数据库由 internal geoserver 它的矢量数据存储在哪里。

  • public database :数据库由 public geoserver 它的矢量数据存储在哪里。

新层的典型工作流如下:

  1. 新表是从 source databasework database 然后发表在 work geoserver

  2. 在测试之后,表被复制到 internal database 并发表在 internal geoserver 或复制到 public database 并发表在 public geoserver .

  3. 每周,数据在三个数据库之间同步,元数据在两个地理服务器之间同步。

任务管理器只应安装在 work geoserver . 然后我们可以制作以下模板:

模板数据库工作流

模板数据库工作流

以下批次:

模板数据库工作流批

模板数据库工作流批

这个 @Initialize 批次:

批初始化

批初始化

这个 PublishRemotely 批次:

远程批发布

远程批发布

这个 Synchronize 批次:

批处理同步

批处理同步

当我们现在基于这个模板创建一个新的配置时,我们选择一个源数据库、表名和层名:

工作流配置

工作流配置

单击“应用”后,将初始化配置(在本地创建层)…

正在初始化…

正在初始化…

我们现在可以填写其余的详细信息,保存并制作远程发布。每周安排一次同步。

工作流配置2

工作流配置2

Previous: 基本概念