Compartir / inicio entre centros de datos

15

Tengo dos servidores, ubicados en centros de datos en Holanda y Francia. Ambos ejecutan Debian Wheezy. Necesito compartir / hogar entre ellos, con buen rendimiento. Hay 300 usuarios en los servidores, alrededor de 30 de ellos deberían poder tener procesos activos en un servidor determinado en un momento dado, cada uno con lecturas de 50 kbit y escrituras de 20 kbit / segundo, con picos cortos alrededor de 2000 kbit / s leyendo. medidas con iotop en el almacenamiento local. Tengo muchos archivos pequeños, alrededor de 500000 en total y necesito la menor latencia posible. El ping entre servidores es de 17 ms, y la conexión puede alcanzar alrededor de 20-30 MB / s cuando se usa scp y wget. Parece que debería haber suficiente ancho de banda disponible para que también funcione, pero ...

Lo que he dicho hasta ahora: sshfs: Parecía que tenía un mejor rendimiento que nfs, pero cambió los permisos de los archivos a la raíz, haciendo que la aplicación se bloquee.

nfs: Manera de reducir la velocidad, probé noatime y muchas otras opciones, pero sigue actuando lentamente, incluso cuando solo unos pocos procesos están activos.

drbd: 5 horas de trabajo sin salida, cuando me di cuenta de que en realidad no podía montar el sistema de archivos en ambos sistemas :-(

Glusterfs: Tener una copia local de todos los datos sonaba realmente prometedor, pero el acceso aleatorio a los archivos es realmente lento y después de ejecutarse un tiempo, se vuelve increíblemente lento y casi se bloquea. Noatime no ayuda.

nfs otra vez: todavía lento.

Llorando en el teclado: ninguna mejora en absoluto.

¿Qué probar a continuación? Cada una de las pruebas fallidas ha tomado una tarde o tal vez más durante la última semana, y realmente me gustaría que el próximo método funcione. Y sí, es crucial que los sistemas de archivos se compartan entre ambos servidores.

Gracias por cualquier idea nueva sobre este problema.

usuario3850506
fuente
66
"Llorando en el teclado: ninguna mejora en absoluto". OK, eso me da un +1.
ceejayoz
Probablemente querrás glusterfs o ceph. Un sistema de archivos distribuido. Además, puede montar drbd varias veces, pero solo una lectura y escritura, y de todos modos es una mala idea aterradora.
Sirex
Probé glusterfs, y aunque funciona muy bien con archivos grandes, se vuelve muy lento al leer o escribir archivos pequeños. Parece ser un problema común con los glusterfs, y no he podido encontrar una solución para ello. Investigaré a Ceph. ¿Lo has intentado tú mismo?
user3850506
3
Al montar el mismo dispositivo de bloque y sistema de archivos, incluso el RO en un sistema diferente es un mal juju a menos que el controlador del sistema de archivos comprenda que el dispositivo de bloque de respaldo puede cambiar arbitrariamente en cualquier momento. El dispositivo de bloqueo podría cambiar e invalidar por completo la memoria caché del inodo y el VFS leería felizmente los datos que ya no están donde creía. Los sistemas de archivos compatibles con discos compartidos como GFS2 y veritas pueden hacerlo en DRBD o en cualquier disco similar a SAN. Sin embargo, no puedo decir con certeza que el rendimiento de su pequeño archivo sea aceptable.
Andrew Domaszek

Respuestas:

2

Hay algunas posibles soluciones para esto:

  1. Puede optar por un almacenamiento de bloque replicado como DRBD (o MARS como se mencionó anteriormente), pero necesita configurar un sistema de archivos de clúster en la parte superior del almacenamiento de bloque. Dichos sistemas de archivos podrían ser GFS2 u OCFS2, ambos disponibles en el kernel de Debian afaik. DRBD puede manejar primario / primario y puede montarlo en ambos servidores al mismo tiempo. Pero si hace esto con un sistema de archivos estándar, un servidor no conoce al otro y destruiría su sistema de archivos en unos segundos. Un sistema de archivos de clúster en la parte superior manejaría la comunicación y el bloqueo para que ambos nodos puedan escribir en el mismo bloque.

  2. Use un sistema de archivos distribuido para / home. Encontrará una lista de dichos sistemas de archivos en http://en.wikipedia.org/wiki/Comparison_of_distributed_file_systems . Pero ten cuidado y elige sabiamente. Todos no pueden hacer magia y todos tienen sus inconvenientes. Gluster es un sistema de archivos así. Para algunos sistemas, es posible que necesite más que solo dos nodos.

  3. Si no tiene que replicarse en tiempo real y una sincronización de archivos casi en tiempo real sería suficiente, eche un vistazo a BitTorrent Sync ( http://www.getsync.com/ ), Dropbox o alternativas. Cada servidor tiene su propio / hogar, pero los cambios se replican en un archivo al otro servidor.

mgabriel
fuente
1
rsync ftw 123456
dmourati