Ir al contenido
Otras versiones

Cargando…

Configuración de clúster

Este tipo de arquitectura proporciona distribución de carga, así como alta disponibilidad. Veamos la arquitectura propuesta. Varios servidores OpenKM y uno (o varios) servidores HAProxy distribuirán las peticiones de los usuarios entre estos servidores OpenKM. HAProxy también puede configurarse para detectar qué servidor OpenKM está caído y evitar enviarle peticiones hasta que vuelva a estar operativo.

Opcionalmente, puede configurar varios servidores de base de datos replicados (gestionados también por otro HAProxy), lo que evita que el servicio se interrumpa si cae un nodo de base de datos. De forma predeterminada, OpenKM almacena los documentos en disco para maximizar el rendimiento, por lo que necesita que estos ficheros estén replicados entre sus servidores OpenKM. Una opción es GlusterFS, una solución de software para crear sistemas de ficheros distribuidos, pero NFS es bastante adecuado en la mayoría de las situaciones y más fácil de configurar en el caso de servidores Linux.

Recuerde que esto es solo una propuesta y usted es libre de implementar la infraestructura que desee para lograr los mismos resultados. Para evitar una configuración excesiva y compleja, describiremos una arquitectura simplificada que ofrecerá el mismo objetivo: el nodo maestro, la base de datos y el servidor NFS están en la misma máquina.

Si examina el directorio TOMCAT_HOME/repository, verá lo siguiente:

  • cache: son ficheros generados que se utilizan principalmente para la vista previa. Si se eliminan, se volverán a crear.
  • Datastore: estos ficheros son el contenido binario de los documentos almacenados en OpenKM. Debe cuidarlos y siempre se recomienda una copia de seguridad.
  • Index: es donde Lucene almacena los índices utilizados en la búsqueda de documentos y metadatos. En caso de eliminación, puede reindexar el repositorio desde Administration > Utilities.

Según esta información, puede ubicar las carpetas cache y datastore en otro servidor como recursos compartidos. De media, el 80 % de las acciones de los usuarios son lecturas de documentos y solo el 20 % son escrituras (crear o actualizar documentos). La carpeta problemática es la carpeta index, porque los índices de Lucene no se pueden compartir entre varias instancias de OpenKM. Entonces, ¿qué podemos hacer? La solución es que cada instancia de OpenKM tenga su propio índice y que se envíen mensajes entre ellas para mantener actualizado su índice local. Si un nodo necesita actualizar el índice, también envía un mensaje a los demás nodos, que procesarán la modificación localmente.

Este es el único nodo que debe ser accesible para los usuarios y que despachará las peticiones a los nodos esclavos. La parte más importante es la configuración de HAProxy. Este formato de configuración funciona en HAProxy v1.5.

frontend LB
bind 192.168.0.220:80
reqadd X-Forwarded-Proto:\ http
default_backend LB
backend LB 192.168.0.220:80
mode http
stats enable
stats hide-version
stats uri /stats
stats realm HAProxy\ Statistics
stats auth admin:admin
balance roundrobin
option httpchk
option httpclose
option forwardfor
cookie LB insert
server node1 192.168.0.222:8080 cookie node1 check
server node2 192.168.0.223:8080 cookie node2 check

Según esta configuración, las peticiones de los usuarios se balancearán mediante el algoritmo round-robin entre los dos servidores OpenKM. Si alguno de los servidores OpenKM falla, las peticiones solo se reenviarán al servidor que esté funcionando. En http://proxy/stats (usuario predeterminado: admin, contraseña: admin) podrá ver el estado de los nodos y otras estadísticas. Hay disponible un manual completo de HAProxy en http://cbonte.github.io/haproxy-dconv/configuration-1.5.html. Si utiliza otra versión de HAProxy, es posible que algunas opciones hayan cambiado.

Este tipo de nodo no es muy diferente de los esclavos, y la única diferencia real es que puede ejecutar tareas de crontab, entre otras acciones administrativas. Como dijimos anteriormente, para simplificar la configuración, este nodo maestro almacenará también los ficheros de cache y datastore.

Creemos estos directorios:

Ventana de terminal
$ sudo mkdir /mnt/okm_cache
$ sudo mkdir /mnt/okm_dstore
$ sudo mkdir /mnt/okm_extraction
$ sudo mkdir /mnt/okm_ocr_template
$ sudo chown openkm:openkm /mnt/okm_*

Vamos a exportar estos directorios mediante NFS, por lo que necesitamos instalar el soporte correspondiente:

Ventana de terminal
$ sudo apt-get install nfs-kernel-server

Una vez instalado, edite el fichero /etc/exports y añada estas líneas:

/mnt/okm_cache *(rw,sync,no_root_squash,no_subtree_check)
/mnt/okm_dstore *(rw,sync,no_root_squash,no_subtree_check)
/mnt/okm_extraction *(rw,sync,no_root_squash,no_subtree_check)
/mnt/okm_ocr_template *(rw,sync,no_root_squash,no_subtree_check)

Después de guardarlo, debe ejecutar este comando (cada vez que modifique este fichero, debe ejecutarlo):

Ventana de terminal
$ sudo exportfs -ra

Ahora creemos los enlaces simbólicos:

Ventana de terminal
$ sudo ln -s /mnt/okm_cache TOMCAT_HOME/repository/cache
$ sudo ln -s /mnt/okm_dstore TOMCAT_HOME/repository/datastore
$ sudo ln -s /mnt/okm_extraction TOMCAT_HOME/repository/extraction
$ sudo ln -s /mnt/okm_ocr_template TOMCAT_HOME/repository/ocr_template
$ sudo chown -h openkm:openkm TOMCAT_HOME/repository/cache
$ sudo chown -h openkm:openkm TOMCAT_HOME/repository/datastore
$ sudo chown -h openkm:openkm TOMCAT_HOME/repository/extraction
$ sudo chown -h openkm:openkm TOMCAT_HOME/repository/ocr_template

En lugar de crear enlaces, puede configurar OpenKM para que cree estos directorios en otras ubicaciones:

repository.extraction.home=/mnt/okm_extraction
repository.datastore.home=/mnt/okm_dstore
repository.cache.home=/mnt/okm_cache
repository.ocr.template.home=/mnt/okm_ocr_template

Para habilitar esta configuración, edite el fichero TOMCAT_HOME/openkm.properties y descomente esta parte:

# Cluster - Mastercluster.enabled=true
cluster.node=master

Estos nodos pueden escribir en las carpetas cache y datastore. Aquí también necesitamos crear los directorios compartidos que se utilizarán como puntos de montaje:

Ventana de terminal
$ sudo mkdir /mnt/okm_cache
$ sudo mkdir /mnt/okm_dstore
$ sudo mkdir /mnt/okm_extraction
$ sudo mkdir /mnt/okm_ocr_template
$ sudo chown openkm:openkm /mnt/okm_*

Instale el soporte de cliente NFS:

Ventana de terminal
$ sudo apt-get install nfs-common

Queremos que se monten automáticamente, así que edite el fichero /etc/fstab y añada al final:

# Cluster
master:/mnt/okm_cache /mnt/okm_cache nfs auto,noatime,rsize=8192,wsize=8192,timeo=14,intr
master:/mnt/okm_dstore /mnt/okm_dstore nfs auto,noatime,rsize=8192,wsize=8192,timeo=14,intr
master:/mnt/okm_extraction /mnt/okm_extraction nfs auto,noatime,rsize=8192,wsize=8192,timeo=14,intr
master:/mnt/okm_ocr_template /mnt/okm_ocr_template nfs auto,noatime,rsize=8192,wsize=8192,timeo=14,intr

Ahora montémoslos:

Ventana de terminal
$ sudo mount -a

Creemos los enlaces simbólicos:

Ventana de terminal
$ sudo ln -s /mnt/okm_cache TOMCAT_HOME/repository/cache
$ sudo ln -s /mnt/okm_dstore TOMCAT_HOME/repository/datastore
$ sudo ln -s /mnt/okm_extraction TOMCAT_HOME/repository/extraction
$ sudo ln -s /mnt/okm_ocr_template TOMCAT_HOME/repository/ocr_template
$ sudo chown -h openkm:openkm TOMCAT_HOME/repository/cache
$ sudo chown -h openkm:openkm TOMCAT_HOME/repository/datastore
$ sudo chown -h openkm:openkm TOMCAT_HOME/repository/extraction
$ sudo chown -h openkm:openkm TOMCAT_HOME/repository/ocr_template

En lugar de crear enlaces, puede configurar OpenKM para que cree estos directorios en otras ubicaciones:

repository.extraction.home=/mnt/okm_extraction
repository.datastore.home=/mnt/okm_dstore
repository.cache.home=/mnt/okm_cache
repository.ocr.template.home=/mnt/okm_ocr_template

Para habilitar esta configuración, edite el fichero TOMCAT_HOME/openkm.properties y descomente esta parte:

# Cluster - Slavecluster.enabled=true
cluster.node=slave