how we run a 99,5% uptime sdi using...

31
How we run a 99,5% uptime SDI using Geoserver Roel Huybrechts, Niels Charlier, Timothy De Bock et. al.

Upload: others

Post on 01-Oct-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: How we run a 99,5% uptime SDI using Geoserverroel.huybrechts.re/2019/running-a-production-level-sdi-with-geoserver… · •allows publication on a remote Geoserver with a single

How we run a 99,5% uptime SDI

using Geoserver

Roel Huybrechts, Niels Charlier, Timothy De Bock et. al.

Page 2: How we run a 99,5% uptime SDI using Geoserverroel.huybrechts.re/2019/running-a-production-level-sdi-with-geoserver… · •allows publication on a remote Geoserver with a single

Databank Ondergrond Vlaanderen

soilgeology

geotechnics groundwatermineral

resources

geothermics

FLANDERS

OPEN DATA

INSPIRE

Page 3: How we run a 99,5% uptime SDI using Geoserverroel.huybrechts.re/2019/running-a-production-level-sdi-with-geoserver… · •allows publication on a remote Geoserver with a single

• 1602 layers• served with Geoserver using OGC standards

• 1602 WMS layers

• 732 WFS layers (i.e. vector data)

• 870 WCS layers (i.e. raster data)

• 1744 metadatarecords• served with Geonetwork using CSW + ISO standards

Data?

Page 4: How we run a 99,5% uptime SDI using Geoserverroel.huybrechts.re/2019/running-a-production-level-sdi-with-geoserver… · •allows publication on a remote Geoserver with a single

Users

http://www.dov.vlaanderen.be/verkenner

Page 5: How we run a 99,5% uptime SDI using Geoserverroel.huybrechts.re/2019/running-a-production-level-sdi-with-geoserver… · •allows publication on a remote Geoserver with a single

Users

Page 6: How we run a 99,5% uptime SDI using Geoserverroel.huybrechts.re/2019/running-a-production-level-sdi-with-geoserver… · •allows publication on a remote Geoserver with a single

Users

Page 7: How we run a 99,5% uptime SDI using Geoserverroel.huybrechts.re/2019/running-a-production-level-sdi-with-geoserver… · •allows publication on a remote Geoserver with a single

Users

Page 8: How we run a 99,5% uptime SDI using Geoserverroel.huybrechts.re/2019/running-a-production-level-sdi-with-geoserver… · •allows publication on a remote Geoserver with a single

Users

Page 9: How we run a 99,5% uptime SDI using Geoserverroel.huybrechts.re/2019/running-a-production-level-sdi-with-geoserver… · •allows publication on a remote Geoserver with a single

Users

Page 10: How we run a 99,5% uptime SDI using Geoserverroel.huybrechts.re/2019/running-a-production-level-sdi-with-geoserver… · •allows publication on a remote Geoserver with a single

2,5 million hits per week

Page 11: How we run a 99,5% uptime SDI using Geoserverroel.huybrechts.re/2019/running-a-production-level-sdi-with-geoserver… · •allows publication on a remote Geoserver with a single

Most of the time, it works

Page 12: How we run a 99,5% uptime SDI using Geoserverroel.huybrechts.re/2019/running-a-production-level-sdi-with-geoserver… · •allows publication on a remote Geoserver with a single

So, how?

• Multiple nodes• All our Geoserver machines are clusters of 2 or 4 nodes

• Multiple instances / environments:• Separated work environment and publication environment

• We have everything three times (dev, qa, production)

• Yes, this is a lot of machines. (around 25x3 servers)

Page 13: How we run a 99,5% uptime SDI using Geoserverroel.huybrechts.re/2019/running-a-production-level-sdi-with-geoserver… · •allows publication on a remote Geoserver with a single

Geoserver, batteries included

• Geoserver• WMS, WMTS, WFS, WCS, CSW

• Extensions• INSPIRE

• Community modules• JDBCConfig (improved!)• JDBCStore (improved!)• GWC S3• S3 Geotiff• Taskmanager (new!)• Metadata (new!)• CSW ISO

Page 14: How we run a 99,5% uptime SDI using Geoserverroel.huybrechts.re/2019/running-a-production-level-sdi-with-geoserver… · •allows publication on a remote Geoserver with a single

Release schedule

• Upstream Geoserver releases roughly every 6 months• Now at 2.16.0

• We have a custom version, following our own release needs• Now at 2.15.0-dov-4.3.0• https://github.com/DOV-Vlaanderen/geoserver/tree/2.15.0-dov-4.x

• Why?• To get improvements and fixes of our own community modules into production faster• To be able to fix important Geoserver issues in production faster

• All our improvements and fixes are pushed upstream and are included in thenext upstream release

Page 15: How we run a 99,5% uptime SDI using Geoserverroel.huybrechts.re/2019/running-a-production-level-sdi-with-geoserver… · •allows publication on a remote Geoserver with a single

Development workflow

• We have continuous integration using Bamboo

• All changes are deployed in dev and tested by a user

• We release when new stories are finished and/or all urgent bugs are fixed

• Release is deployed in QA and tested again

• When all is well we deploy in production

Page 16: How we run a 99,5% uptime SDI using Geoserverroel.huybrechts.re/2019/running-a-production-level-sdi-with-geoserver… · •allows publication on a remote Geoserver with a single

Standard Geoserver installation

Jetty

HTTP

Geoserver

Data

directoryDatabase

(map data)

SHP GeotiffConfig

(XML)

Page 17: How we run a 99,5% uptime SDI using Geoserverroel.huybrechts.re/2019/running-a-production-level-sdi-with-geoserver… · •allows publication on a remote Geoserver with a single

Not so great idea

Data

directory

Database

(map data)

GeotiffConfig

(XML)

Tomcat

HTTP

Geoserver

Tomcat

Geoserver

Tomcat

Geoserver

Tomcat

Geoserver

Reverse proxy

Loadbalancer

Data

directory

GeotiffConfig

(XML)

Data

directory

GeotiffConfig

(XML)

Data

directory

GeotiffConfig

(XML)

HTTP

Page 18: How we run a 99,5% uptime SDI using Geoserverroel.huybrechts.re/2019/running-a-production-level-sdi-with-geoserver… · •allows publication on a remote Geoserver with a single

Our Geoserver clusters

Tomcat

HTTP

Geoserver

Database

(map data)Database

(config)

S3 file storage

(raster data)

Tomcat

Geoserver

Tomcat

Geoserver

Tomcat

Geoserver

Reverse proxy

Loadbalancer

S3 file storage

(geowebcache)

Page 19: How we run a 99,5% uptime SDI using Geoserverroel.huybrechts.re/2019/running-a-production-level-sdi-with-geoserver… · •allows publication on a remote Geoserver with a single

Our Geoserver clusters

Tomcat

HTTP

Geoserver

Database

(map data)Database

(config)

S3 file storage

(raster data)

Tomcat

Geoserver

Tomcat

Geoserver

Tomcat

Geoserver

Reverse proxy

Loadbalancer

S3 file storage

(geowebcache)

Page 20: How we run a 99,5% uptime SDI using Geoserverroel.huybrechts.re/2019/running-a-production-level-sdi-with-geoserver… · •allows publication on a remote Geoserver with a single

Lessons learned

• Database connections• Don’t use database parameters in store config directly

• Use PostGIS JNDI and define connection pools in Tomcat

• Hazelcast cache invalidation can be tricky• General rule is: it is not cluster-safe unless we have fixed it

• Transparent GWC caching is very powerful• WMS calls use WMTS tiles if they are available

• Allows to cache a layer without clientside changes!

Page 21: How we run a 99,5% uptime SDI using Geoserverroel.huybrechts.re/2019/running-a-production-level-sdi-with-geoserver… · •allows publication on a remote Geoserver with a single

Geoserver work environmentwith Taskmanager

Work database

Geoserver publication environment

Publication database

Our setup: basics

Page 22: How we run a 99,5% uptime SDI using Geoserverroel.huybrechts.re/2019/running-a-production-level-sdi-with-geoserver… · •allows publication on a remote Geoserver with a single

workpublish

app

Copy table Copy table

Remote dbpublication

Create view

work

Publiceren van boringgegevens

Taskmanager: integrated ETL

Page 23: How we run a 99,5% uptime SDI using Geoserverroel.huybrechts.re/2019/running-a-production-level-sdi-with-geoserver… · •allows publication on a remote Geoserver with a single

Geoserver Task Manager: concepts

Template: reusable blueprint for new configurations, containspredefines tasks, attributes and batches

Batch: series of tasks that can be executed manually or automatically, is transactional

Configuration: group of tasks, attributes and batches

Task: one specific and atomic action

Attribute: variable with a value, can be reused in different tasks within the configuration

Page 24: How we run a 99,5% uptime SDI using Geoserverroel.huybrechts.re/2019/running-a-production-level-sdi-with-geoserver… · •allows publication on a remote Geoserver with a single

Taskmanager: integrated ETL

Page 25: How we run a 99,5% uptime SDI using Geoserverroel.huybrechts.re/2019/running-a-production-level-sdi-with-geoserver… · •allows publication on a remote Geoserver with a single

Taskmanager: integrated ETL

Page 26: How we run a 99,5% uptime SDI using Geoserverroel.huybrechts.re/2019/running-a-production-level-sdi-with-geoserver… · •allows publication on a remote Geoserver with a single

• It creates stores and layers automatically• From database table

• Or by uploading a raster file

• This means new layers have a configuration by design• allows publication on a remote Geoserver with a single click

• Define your dataflows once and run them automatically every night

• Allows work and publication environments to be entirely separate• While keeping it easy for users to publish their new versions with a single click

Taskmanager advantages

Page 27: How we run a 99,5% uptime SDI using Geoserverroel.huybrechts.re/2019/running-a-production-level-sdi-with-geoserver… · •allows publication on a remote Geoserver with a single

Metadata: saved with layer

Page 28: How we run a 99,5% uptime SDI using Geoserverroel.huybrechts.re/2019/running-a-production-level-sdi-with-geoserver… · •allows publication on a remote Geoserver with a single

Metadata: INSPIRE compliant

Page 29: How we run a 99,5% uptime SDI using Geoserverroel.huybrechts.re/2019/running-a-production-level-sdi-with-geoserver… · •allows publication on a remote Geoserver with a single

Metadata: CSW built-in

Page 30: How we run a 99,5% uptime SDI using Geoserverroel.huybrechts.re/2019/running-a-production-level-sdi-with-geoserver… · •allows publication on a remote Geoserver with a single

Lessons learned

• Data and metadata are meant to be kept close together• Edit at the same time

• Publish at the same time

• Don’t duplicate information• Custom metadata fields are synced to native fields on save

• F.ex. metadata identificator, keywords, etc.

• Metadata templates are powerful• Most of us don’t like to fill in metadata forms

• Templates can be combined easily -> don’t duplicate information

Page 31: How we run a 99,5% uptime SDI using Geoserverroel.huybrechts.re/2019/running-a-production-level-sdi-with-geoserver… · •allows publication on a remote Geoserver with a single

More information

• Github: https://github.com/DOV-Vlaanderen/geoserver

• Documentation: https://docs.geoserver.org/

• DOV website: https://www.dov.vlaanderen.be/page/geoserver-task-manager

• Don’t hesitate to contact me or DOV if you have any questions!