Servidores de mapas en alta disponibilidad CyLiconValley

48
Servidores de mapas en alta disponibilidad JBoss – Geoserver - PostGIS Carolina Moya Diez [email protected]

description

Charla para CyLicon Valley por Carolina Moya

Transcript of Servidores de mapas en alta disponibilidad CyLiconValley

Page 1: Servidores de mapas en alta disponibilidad CyLiconValley

Servidores de mapas en alta disponibilidad

JBoss – Geoserver - PostGIS

Carolina Moya Diez [email protected]

Page 2: Servidores de mapas en alta disponibilidad CyLiconValley

Qué es un servidor de mapas

Page 3: Servidores de mapas en alta disponibilidad CyLiconValley

SERVIDOR DE MAPAS (I)

• Un servidor de mapas, parte de: » Ortofotos (archivos de imágenes georreferenciadas)

» Información vectorial (puntos, lineas, poligonos, etc…)

» Información ráster (grids, tins…)

• Desde: » Ficheros (Shapefile, ArcGis Raster, GeoTiff,…)

» Bases de datos espaciales (PostGIS, Oracle Spatial,…)

» Orígenes de datos interoperables

• Y Genera: » Imágenes (jpg, png,…)

» Datos en formatos estándares (xml, json, …)

• Mediante peticiones HTTP estándar http://URLServidorDeMapas/geoserver/INCLAM/wms?LAYERS=INCLAM%3Ascc_canada&STYLES=&FORMAT=image%2Fjpeg&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&SRS=EPSG%3A26910&BBOX=483058.40000044,5413527.3132805,550605.1999987,5465506.6867167&WIDTH=512&HEIGHT=394

Page 4: Servidores de mapas en alta disponibilidad CyLiconValley

SERVIDORES DE MAPAS (II)

• Permite editar cómo visualizar la información

mediante estilos (SLD)

• También permite editar la información contenida

(WFS-T)

Page 5: Servidores de mapas en alta disponibilidad CyLiconValley

SERVIDORES DE MAPAS (III): OGC

• “Open Geospatial Consortium” (OGC) se ocupa de

estandarizar los protocolos de comunicación entre

geodatos

» Servidores de mapas

» Definición de sensores y transmisión de información

» Estándares para representar formas geográficas

» Etc…

• En los servidores de mapas define (principalmente):

» WMS (entidades a imagen)

» WFS (entidades a XML)

» WCS (entidades a ficheros raster)

Page 6: Servidores de mapas en alta disponibilidad CyLiconValley

SERVIDORES DE MAPAS (IV): PROBLEMAS

• Las transformaciones, de entidades geográficas a

imágenes o ficheros, son muy costosas en RAM y CPU

» Existen cachés para el protocolo WMS, conocidos

como Caché de Teselas (WMTS)

• Muchos orígenes de datos diferentes (formatos,

proyecciones, etc…), implican transformaciones

intermedias (mayor costo aún)

• Los clientes SIG no realizan (habitualmente) una sola

petición para mostrar un mapa (teselas). Alta carga

de los servidores.

• Clientes con SLA muy estrictos.

Page 7: Servidores de mapas en alta disponibilidad CyLiconValley

SERVIDORES DE MAPAS (V): EJEMPLO

• Componentes típicos de una Infraestructura de Datos Espaciales Open Source

» Servidor de base de datos: PostgreSQL

» Extensiones espaciales: PostGIS

» Servidor de mapas: Geoserver

» Servidor de caché: GeoWebCache

» Servidor de Servlets: Apache Tomcat

» Coste en licencias: 0€

• Componentes privativos » Servidor de base de datos: Oracle

» Extensiones espaciales: Oracle Spatial

» Servidor de mapas: ArcGis Server

» Servidor de Web: Microsoft IIS

» Coste en licencias: muy alto

• Funcionalidad y rendimiento: similares

Page 8: Servidores de mapas en alta disponibilidad CyLiconValley

SERVIDOR DE MAPAS (VI): EJEMPLOS

• Empresas u organismos que usan servidores de mapas

– Catastro http://www.catastro.meh.es/

– CartoCiudad http://www.cartociudad.es/portal/

– OpenStreetMap http://www.openstreetmap.org

– IDEE http://www.idee.es/

– NOAA

http://nowcoast.noaa.gov/help/mapservices.shtml

– …

– Google Maps https://www.google.com/maps (aunque

no se sabe mucho de su infraestructura, ni soporta

estándares)

Page 9: Servidores de mapas en alta disponibilidad CyLiconValley

Qué es PostGIS

Page 10: Servidores de mapas en alta disponibilidad CyLiconValley

POSTGIS

• Módulo para el soporte de objetos espaciales en

PostgreSQL

• Open Source

• Es la base de datos espacial de código abierto más

ampliamente utilizada.

Page 11: Servidores de mapas en alta disponibilidad CyLiconValley

Qué es JBoss

Page 12: Servidores de mapas en alta disponibilidad CyLiconValley

JBOSS

• Servidor de aplicaciones J2EE Open Source

• Multiplataforma

• Implementa todo el paquete de servicios J2EE

• Versión estable actual 7.1.1_Final

Bugs en la parte de clustering por lo que hay que bajarse

versiones posteriores para las que no se crea instalable.

La última es la 7.2.0.Final, y ya con la denominación

WildFly la 8.0.0.Alpha4

Nosotros trabajmos con la 7.1.3_Final

– https://github.com/jbossas/jboss-

as/releases/tag/7.1.3.Final

Page 13: Servidores de mapas en alta disponibilidad CyLiconValley

ESTRUCTURA JBOSS

JBOSS_HOME/modules/org/postgresql/main

Distintos perfiles

Page 14: Servidores de mapas en alta disponibilidad CyLiconValley

PERFILES

Domain Profile Name Standalone File

Name Description Clustered

default standalone.xml (default)

Java EE6 Web Profile + JCA + JAX-RS + JAX-WS + Javamail + Remote Connectivity

N

ha standalone-ha.xml

Java EE6 Web Profile + JCA + JAX-RS + JAX-WS + Javamail + Remote Connectivity

Y

full standalone-full.xml Java EE6 Full Profile N

full-ha standalone-full-ha.xml

Java EE6 Full Profile Y

Page 15: Servidores de mapas en alta disponibilidad CyLiconValley

GEOSERVER

• Para desplegar geoserver en Jboss

Instalar Java Advanced Imaging y Java Image IO

Hacer jars accesibles por el PATH, normalmente se copian

en $JAVA_HOME/jre/lib/i386

Instalarlas como módulo JBoss

Añadir en el war del geoserver

– En el web.xml la etiqueta <distributable/>

– Añadir fichero jboss-deplyment-structure.xml

Page 16: Servidores de mapas en alta disponibilidad CyLiconValley

Qué significa alta disponibilidad

Page 17: Servidores de mapas en alta disponibilidad CyLiconValley

ALTA DISPONIBILIDAD

• High Availability (HA)

• Definición (wikipedia):

Disponibilidad se refiere a la habilidad de la comunidad

de usuarios para acceder al sistema, someter nuevos

trabajos, actualizar o alterar trabajos existentes o

recoger los resultados de trabajos previos. Si un usuario

no puede acceder al sistema se dice que está no

disponible.

• JBoss:

Availability for a cluster means: If one node fails, all the

sessions on that node will be seamlessly served by

another node. This can be achieved through session-

replication.

Page 18: Servidores de mapas en alta disponibilidad CyLiconValley

ALTA DISPONIBILIDAD (II)

• Scalability vs. Availability

Scalability means if you add more nodes to your cluster

you get more computing power from your cluster. With

computing power we mean both: CPU-power and

memory.

Page 19: Servidores de mapas en alta disponibilidad CyLiconValley

Servidores de mapas con alta disponibilidad

Page 20: Servidores de mapas en alta disponibilidad CyLiconValley

REQUISITOS DE UN HA GIS

• Acceso en tiempo real a la información para su uso

en sistemas críticos

• Grandes cantidades de información

Page 21: Servidores de mapas en alta disponibilidad CyLiconValley

EJEMPLO DE USO

Page 22: Servidores de mapas en alta disponibilidad CyLiconValley

EJEMPLO DE USO (II)

Page 23: Servidores de mapas en alta disponibilidad CyLiconValley

EJEMPLO DE USO (III)

Page 24: Servidores de mapas en alta disponibilidad CyLiconValley

Conceptos básicos de JBoss clustering

Page 25: Servidores de mapas en alta disponibilidad CyLiconValley

DOMAIN

• Domain Conjunto de instancias de JBoss que comparten

“recursos”

En un mismo host puede haber varias instancias

Funcionando como Maestro – Esclavo

• Standalone Instancia única

Page 26: Servidores de mapas en alta disponibilidad CyLiconValley

DOMAIN (II)

• Configurar Maestro en un domain JBOSS-HOME/domain/configuration/domain.xml

– El Maestro no suele tener servidores asociados

– Definir el <server-group> a utilizar

Crear usuarios para los esclavos que se conecten

– JBOSS_HOME/bin/add-user

Page 27: Servidores de mapas en alta disponibilidad CyLiconValley

DOMAIN(III)

• Configurar esclavo en un domain

JBOSS-HOME/domain/configuration/host-slave.xml

– Definir host-name que coincida con el usuario creado

– Asignar la contraseña cifrada

– Indicar domain-controller

– Definir los servidores a instanciar en este nodo

• Web.xml

<distributable/>

Page 28: Servidores de mapas en alta disponibilidad CyLiconValley

JBOSS HA

• Domain son la solución de JBoss a la mejora de

rendimiento y la escalabilidad

• Esto no soluciona el problema de la HA de hecho el

Maestro es un punto crítico.

• Solución:

Cluster de JBoss con modcluster+Apache como

balanceador de carga

Page 29: Servidores de mapas en alta disponibilidad CyLiconValley

JBOSS HA (II)

• Varias instancias JBoss en activo-activo

Page 30: Servidores de mapas en alta disponibilidad CyLiconValley

JBOSS HA (III)

• Configurar Apache+modcluster

Cargar modcluster como un nuevo módulo

– (problemas en windows)

Page 31: Servidores de mapas en alta disponibilidad CyLiconValley

JBOSS HA (IV)

• Configurar instancia JBoss

Tenemos que usar un perfil HA

Configurar donde se encuentra el Apache en el subsystem

del modcluster del perfil seleccionado

Definir la métrica que queremos usar como balanceo de

carga

– Métricas personalizadas

Page 32: Servidores de mapas en alta disponibilidad CyLiconValley

JBOSS HA (V)

• Sticky session

Definir sso para acceso a la aplicación en el subsystem de

security

– security-domain

En el subsystem WEB indicar que la cache usada por el

sso es <sso cache-container="web"/>

En el fichero jboss-web.xml definir el tipo de política a

usar.

Page 33: Servidores de mapas en alta disponibilidad CyLiconValley

JBOSS HA (VI)

• Replication trigger: cuando una sesión tiene que ser

replicada

SET

SET_AND_GET

SET_AND_NO_PRIMITIVE_GET

ACCESS

• Replication granularity: tamaño de la unidad

replicada

ATTRIBUTE: problema con referencias entre los atributos

SESSION:

FIELD: requiere cambios a nivel de aplicación

Performance

Page 34: Servidores de mapas en alta disponibilidad CyLiconValley

Arquitecturas complejas

Page 35: Servidores de mapas en alta disponibilidad CyLiconValley

ARQUITECTURAS

• Varias instancias de JBoss en distintos cluster

– Cada cluster gestiona unas aplicaciones determinadas

Page 36: Servidores de mapas en alta disponibilidad CyLiconValley

ARQUITECTURAS (II)

Page 37: Servidores de mapas en alta disponibilidad CyLiconValley

ARQUITECTURAS (III)

Page 38: Servidores de mapas en alta disponibilidad CyLiconValley

ARQUITECTURAS (IV)

Page 39: Servidores de mapas en alta disponibilidad CyLiconValley

Nuestra solución

Page 40: Servidores de mapas en alta disponibilidad CyLiconValley

NODO

• Concepto de “nodo”

• Arquitectura basada en cluster de nodos

Page 41: Servidores de mapas en alta disponibilidad CyLiconValley

ARQUITECTURA PROPUESTA

Page 42: Servidores de mapas en alta disponibilidad CyLiconValley

Pruebas de rendimiento

Page 43: Servidores de mapas en alta disponibilidad CyLiconValley

STRESS TEST: ESCENARIO (I)

• 3 Nodos montados sobre máquinas virtuales Vmware

ESXi

• 2 CPU, 4 Gb de RAM

• Ethernet 100 Mbs, compartida con el resto de la

oficina

• Ubuntu Server 12.04 LTS (2 nodos) y Windows 7 (1

nodo)

• Jmeter como software de estrés.

• 6 Equipos clientes lanzando peticiones

simultáneamente

Page 44: Servidores de mapas en alta disponibilidad CyLiconValley

STRESS TEST: ESCENARIO (II)

• Las pruebas son:

» Peticiones WMS a diferentes BBOX

» Con y sin caché (WMS vs WMTS)

» Una prueba para cartografía vectorial, otra para

raster

» Numero de threads en diferentes pruebas: 300

» Se lanzan en bucles de 250

Page 45: Servidores de mapas en alta disponibilidad CyLiconValley

STRESS TEST: ESCENARIO (III)

• Se usaran dos cartografías diferentes

Raster: Geotiff, mosaico de 90 ficheros, 13 Gb

Vectorial: Shapefiles cargados en la base de datos Postgis.

Composición de varias capas. Todo el callejero de una

ciudad española.

Page 46: Servidores de mapas en alta disponibilidad CyLiconValley

STRESS TEST: PRUEBA A UN NODO

Hilos

Raster Vectorial

Tiempo medio de respuesta con caché

Tiempo medio de respuesta sin caché

Tiempo medio de respuesta con caché

Tiempo medio de respuesta sin caché

100 0,7 seg. 1,4 seg. 0,4 seg. 0,6 seg.

128 0,8 seg. 1 seg. 0,6 seg. 0,8 seg.

150 1 seg. 1,7 seg. 0,8 seg. 1 seg.

200 1,4 seg. 1,9 seg. 1,3 seg. 1,4 seg.

Page 47: Servidores de mapas en alta disponibilidad CyLiconValley

STRESS TEST: PRUEBAS AL CLUSTER

• 6 Clientes lanzando 300 hilos.

• Tiempos medios Vectorial: 0.8 seg/peticion

• Tiempos medios Raster: 1.1 seg/peticion

Page 48: Servidores de mapas en alta disponibilidad CyLiconValley

PREGUNTAS