Servidores de mapas en alta disponibilidad
JBoss – Geoserver - PostGIS
Carolina Moya Diez [email protected]
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