Servidores de mapas en alta disponibilidad CyLiconValley

Post on 13-Jun-2015

1.233 views 4 download

description

Charla para CyLicon Valley por Carolina Moya

Transcript of Servidores de mapas en alta disponibilidad CyLiconValley

Servidores de mapas en alta disponibilidad

JBoss – Geoserver - PostGIS

Carolina Moya Diez carolina.moya@inclam.com

Qué es un servidor de mapas

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

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)

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)

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.

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

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)

Qué es PostGIS

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.

Qué es JBoss

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

ESTRUCTURA JBOSS

JBOSS_HOME/modules/org/postgresql/main

Distintos perfiles

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

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

Qué significa alta disponibilidad

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.

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.

Servidores de mapas con alta disponibilidad

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

EJEMPLO DE USO

EJEMPLO DE USO (II)

EJEMPLO DE USO (III)

Conceptos básicos de JBoss clustering

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

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

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/>

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

JBOSS HA (II)

• Varias instancias JBoss en activo-activo

JBOSS HA (III)

• Configurar Apache+modcluster

Cargar modcluster como un nuevo módulo

– (problemas en windows)

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

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.

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

Arquitecturas complejas

ARQUITECTURAS

• Varias instancias de JBoss en distintos cluster

– Cada cluster gestiona unas aplicaciones determinadas

ARQUITECTURAS (II)

ARQUITECTURAS (III)

ARQUITECTURAS (IV)

Nuestra solución

NODO

• Concepto de “nodo”

• Arquitectura basada en cluster de nodos

ARQUITECTURA PROPUESTA

Pruebas de rendimiento

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

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

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.

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.

STRESS TEST: PRUEBAS AL CLUSTER

• 6 Clientes lanzando 300 hilos.

• Tiempos medios Vectorial: 0.8 seg/peticion

• Tiempos medios Raster: 1.1 seg/peticion

PREGUNTAS