Este documento describe una arquitectura de servidores de mapas con alta disponibilidad utilizando JBoss, GeoServer, PostGIS y Apache. Explica conceptos como servidores de mapas, PostGIS, JBoss, clustering y alta disponibilidad. También incluye detalles sobre pruebas de estrés realizadas a la arquitectura propuesta.
3. 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&SERV
ICE=WMS&VERSION=1.1.1&REQUEST=GetMap&SRS=EPSG%3A26910&BBOX=483058.40000044,5413527.3132805,550605.1999987,54
65506.6867167&WIDTH=512&HEIGHT=394
4. 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)
5. 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)
6. 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.
7. 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
8. 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)
10. 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.
12. 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
14. 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
15. 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
17. 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.
18. 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.
25. 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
26. 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
27. 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/>
28. 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
30. JBOSS HA (III)
• Configurar Apache+modcluster
Cargar modcluster como un nuevo módulo
– (problemas en windows)
31. 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
32. 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.
33. 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
43. 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
44. 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
45. 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.
46. 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.
47. STRESS TEST: PRUEBAS AL CLUSTER
• 6 Clientes lanzando 300 hilos.
• Tiempos medios Vectorial: 0.8 seg/peticion
• Tiempos medios Raster: 1.1 seg/peticion