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.
fuente
Respuestas:
Hay algunas posibles soluciones para esto:
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.
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.
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.
fuente