Configurar la replicación de contenido entre dos instancias de OpenKM
El sistema sigue un modelo origen → destino: una instancia de OpenKM actúa como origen (monitoriza una o varias carpetas y registra los cambios), mientras que otra actúa como destino (se conecta a un origen, descarga los eventos y aplica los cambios localmente). Una carpeta siempre se replica en un único sentido; si necesita que el contenido fluya en ambas direcciones entre dos instancias, configure dos pares independientes, uno para cada sentido, cada uno sobre carpetas distintas.
Cada Replication Pair lleva su propia conexión a un servidor de origen, de modo que una única instancia destino puede centralizar contenido procedente de varios servidores de origen distintos a la vez (por ejemplo, varias instancias satélite replicando carpetas seleccionadas hacia una instancia central) — no solo varias carpetas del mismo origen.
Configuración
Sección titulada «Configuración»En cada servidor de origen, vaya a Administration > Utilities > Content Replication > Monitored Folders y cree una entrada por cada carpeta que quiera monitorizar, indicando su UUID. La ruta de la carpeta se resuelve y valida automáticamente.
En el servidor de destino, vaya a Administration > Utilities > Content Replication > Replication Pairs y cree una entrada por cada carpeta que quiera recibir:
- Source Folder UUID: el UUID de la carpeta monitorizada, tal como está registrada en su servidor de origen.
- Target Folder UUID: la carpeta local bajo la que replicarla.
- Source URL: URL base de la instancia de origen de esa carpeta (por ejemplo,
http://source-server:8080/openkm/). - Source Username / Source Password: credenciales para autenticarse contra ese origen.
Cada par mantiene su propio cursor de sondeo y su propia conexión de origen, de modo que se pueden ejecutar varios pares de forma independiente — apunten al mismo servidor de origen o a servidores distintos. La contraseña se guarda cifrada con una clave derivada del UUID del clúster de esta instancia; déjela en blanco al editar un par para mantener la contraseña actual sin cambios.
Cómo funciona
Sección titulada «Cómo funciona»En la instancia ORIGEN (ContentReplicationManager)
Sección titulada «En la instancia ORIGEN (ContentReplicationManager)»Cada vez que se realiza cualquier operación sobre contenido dentro de una carpeta monitorizada, se registra un evento en la tabla OKM_CONTENT_REPLICATION_EVENT, etiquetado con el UUID de la carpeta monitorizada a la que pertenece. Los tipos de evento admitidos son:
- Documentos: crear, actualizar, eliminar, purgar, renombrar, mover
- Carpetas: crear, eliminar, purgar, renombrar, mover
- Registros: crear, eliminar, purgar, renombrar, mover
- Correos: crear, eliminar, purgar, mover
- Grupos de propiedades: añadir, establecer, eliminar
Mover contenido entre dos carpetas monitorizadas distintas del mismo origen se descompone en un evento PURGE sobre la carpeta que se abandona y un evento CREATE sobre la carpeta a la que se entra.
En la instancia DESTINO (ContentReplicationScheduler)
Sección titulada «En la instancia DESTINO (ContentReplicationScheduler)»El planificador se ejecuta cada 5 minutos (0 */5 * * * *) y, para cada par configurado, realiza dos fases:
Fase 1 — Obtención de eventos
Sección titulada «Fase 1 — Obtención de eventos»- Lee el cursor propio del par (la marca de tiempo del último evento que obtuvo).
- Llama al endpoint REST del origen para la carpeta de ese par:
GET /rest/content-replication/events/since/{timestamp}?folderUuid={uuid}. El origen comprueba que el usuario que llama tiene acceso de lectura a esa carpeta antes de devolver nada. - Almacena los nuevos eventos como
PENDINGenOKM_CONTENT_REPLICATION_STATEy avanza el cursor del par.
Fase 2 — Procesamiento de eventos
Sección titulada «Fase 2 — Procesamiento de eventos»- Marca todos los eventos que están actualmente en estado
ERRORcomoPENDING(reintento automático). - Procesa cada evento pendiente invocando al gestor correspondiente (
DocumentReplicationHandler,FolderReplicationHandler, etc.). - Cada gestor descarga el contenido real desde el origen vía REST (
GET /rest/documents/{uuid}/content, etc.) y lo aplica localmente. - El evento se marca como
DONEsi tiene éxito, o comoERROR(con un mensaje) si falla.
Tablas de base de datos
Sección titulada «Tablas de base de datos»El mecanismo de replicación se apoya en las siguientes tablas de base de datos:
| Tabla | Servidor | Descripción |
|---|---|---|
| OKM_CONTENT_REPLICATION_FOLDER | Origen | Las carpetas monitorizadas para replicación (una fila por carpeta). |
| OKM_CONTENT_REPLICATION_EVENT | Origen | Almacena todos los eventos de replicación generados cuando se crea, modifica o elimina contenido dentro de una carpeta monitorizada, etiquetados con la carpeta a la que pertenecen. |
| OKM_CONTENT_REPLICATION_PAIR | Destino | Los pares carpeta-origen/carpeta-destino configurados, cada uno con su propia conexión de origen y cursor de sondeo. |
| OKM_CONTENT_REPLICATION_STATE | Destino | Realiza un seguimiento del estado de procesamiento de los eventos de replicación (PENDING, DONE, ERROR). |
Estados de evento (tabla OKM_CONTENT_REPLICATION_STATE)
Sección titulada «Estados de evento (tabla OKM_CONTENT_REPLICATION_STATE)»| Nombre | Evento |
|---|---|
| PENDING | Esperando a ser procesado |
| DONE | Procesado correctamente |
| ERROR | Falló; se reintentará en la siguiente ejecución del planificador |