[eside-ghost] Sincronizar directorios

Jon Bonilla (Manwe) manwe en aholab.ehu.es
Mie Jun 16 09:15:48 CEST 2010


El Wed, 2 Jun 2010 09:30:20 +0200
Jon Bonilla (Manwe) <manwe en aholab.ehu.es> escribió:

Bueno, quería poner un update de lo que he estado mirando para este caso.

Lo primero, daros las gracias por las sugerencias. Voy a explicar un poco mejor
en qué consiste el problema para razonar mejor las alternativas:

Tengo dos servidores en HA. Ambos, generan de forma alterna una especie de dumps
parciales de una base de datos en formato CSV. Estos ficheros han de estar
disponibles y sincronizados en ambos servidores porque han de estar siempre
accesibles en el nodo activo.

El realtime es deseable pero no imprescindible. Al ser dumps alternos en los
dos servidores, el dump que se genera en el nodo 2 ha de estar disponible en el
nodo 1 antes de que éste genere su siguiente dump.

La consistencia de los datos se puede valorar en muchos ceros. Es imperativo
que los datos no se pierdan y la replicación sea consistente en ambos
servidores.


* Cosas que he mirado:

drbd: Me gusta y me fío de él. Pero las splitbrain en caídas y recuperaciones
están a la orden del día. 

inosync: Script en python que hace sincronizaciones en base a inotify. Funciona
bastante bien en ambas direcciones y te da realtime. El problema es que no te
salva de que un server esté offline.

unison: No me da buen feeling. Lo he descartado sin razones objetivas.


* Cosas que tengo en la recámara:

Sistemas de ficheros distribuídos como decía Miguel Angel.


* Cosas con las que estoy enredando:

NoSQL. Estoy mirando tanto couchdb como mongodb. Por ahora he montado un par de
servidores con couchdb y los estoy replicando entre ellos. Muy sencillo de
montar por el momento. Con un script puedo hacer que el volcado a sistema de
ficheros se convierta en un volcado a bbdd.

Creo que de ambas nosql me voy a quedar con couchdb. Parece más consistente en
la replicación master-master, resuelve conflictos de forma magnífica y esta muy
preparado para la sincronización bidireccional tras una caída de enlace entre
servidores o de los propios servidores.

Mongodb parece que da más rendimiento, no es tan consistente con los datos y su
replicación está más orientada a maestro-esclavo. Para integración con otras
herramientas parece mucho mejor porque su API está orientada al uso de
conectores nativos en los lenguajes en vez de la interfaz REST que ofrece
couchdb.

Por otra parte couchdb está presente en los repos de debian. La versión de
lenny es la 0.8 pero en squeeze está la 0.11. Al no estar en la versión 1.0,
couchdb no garantiza la compatibilidad de API ni base de datos entre diferentes
versiones, pero por lo que he leído, la versión 0.11 es un freeze de la APi
para la futura versión 1.0.

Lo que me falta por ver es cómo hacer que la replicación sea permanente. Estoy
haciendo replicaciones pull pero supongo que para esto necesitaré replicaciones
push.


Parece que al final sí que voy a matar moscas a cañonazos :)



Más información sobre la lista de distribución eside-ghost