Distribución de archivos en una granja de servidores: ¿Hay algo mejor que NFS por allí?

Mi problema es el siguiente: Tengo que distribuir archivos de manera rutinaria a más de 500 servidores los cuales corren Linux / Solaris. Ninguno de ellos es mayor de 10 MB por si sólo, pero tengo muchisimos de ellos y la distribución de los archivos debe ser lo más rapida posible además de tener cierta tolerancia a fallos.

Por ahora estas son mis opciones:

NFS: Más vale diablo por viejo que por diablo
NFS es muy conveniente; Es fácil de compartir información, y sin embargo tiene problemas de desempeño y seguridad. Si usted tiene una aplicación que requiere compartir datos com más de 500 servidores entonces ya seguramente sabe de lo que estoy hablando.

¿Entonces como se puede reemplazar a NFS? Una de las opciones más atractivas es AFS. El problema es que es más complejo de administrar, y esa es una barrera dificil de superar en el mundo corporativo (ojo, muchas compañias grandes lo utilizan).

Rsync: Preparence a escribir scripts

Rsync utiliza un novedoso algoritmo el cual envia por la red solamente diferencias entre el destino y la fuente, lo cual lo hace muy eficiente. Sin embargo si usted quiere utilizarlo para duplicar información entonces seguro se verá escribiendo un shell script para adaptarlo a sus necesidades. Otros inconvenientes: Si usted tiene muchos archivos entre la fuente y el destino entonces deberá esperar un buen tiempo mientras rsync decide que copiar. Otro problema es que es considerado inseguro por muchos administradores de sistemas (los cuales prefieren no lidiar con su configuración adecuada).

Secure Copy / Secure FTP: Scripts y la historia de la tortuga

¿Y que tal scp or sftp? Trabaja bien, es muy seguro pero no es más rápido que rsync. Preparese a echar código si quiere una solución a la medida. Por otro lado rsync y ssh pueden trabajar juntos (opción -rsh=ssh de rsync).

P2P: Suena bien, pero ¿sólo en papel?
Yo en particular no he visto casos de como distribuir archivos en una red corporativa usando P2P. Java en particular tiene su estandar llamado JXTA pero no he visto mucha acción allí. Algunos ejemplos interesantes incluyen el uso de clientes como Azureus los cuales utilizan el protocolo Bittorrent para lograr su cometido.

¿Y entonces, qué hago?

Por ahora estoy utilizando una combinación de NFS, Rsync y scp para copias pequeñas. Sin embargo estoy seguro de que existe una mejor manera de hacer esto.

¿Y ustedes conocen una mejor solución a este problema?

Buscar en otros sitios:

Blogalaxia:, , , , ,
Technorati:, , , , ,
To2blogs:, , , , ,
Del.icio.us:, , , , ,

3 thoughts on “Distribución de archivos en una granja de servidores: ¿Hay algo mejor que NFS por allí?

  1. Ciertamente, uno de los principales problemas que encontrarás con NFS es el de rendimiento. Pero el de seguridad no debería preocuparte tanto si hoy en día puedes configurar, e.g., una VPN entre tus servidores solo para esto.

    SMB es un protocolo interesante para transferir archivos. El rendimiento es aceptable y tiene algunos elementos de seguridad a nivel de shares y archivos.

    Hay algunos sistemas de archivos clusterizados que pueden venir a la mente, los más importantes son Global File System y OCFS — sin embargo creo que sería cuesta arriba portar esas cosas a Solaris.

    Puedes utilizar un configuration manager a-la-Puppet o cfengine para distribuir archivos. Por debajo usan rsync para la mayoría de las cosas, pero es una forma interesante de llevar la distribución de software.

    HTH,
    Jose M. Parrella

  2. si es para distribuir solo archivos de configuración que tal usar puppet?

    si es para pasar archivos grandes, que tal hacer un storage en SAN via red ?

    hay un proyecto de SAN opensource

  3. Hola a todos,

    Bureado: El problema es que quiero optimizar la copia de esos archivos, evitando los problemas clásicos de NFS (file locking, velocidad).

    En cuanto a puppet: No son sólo archivos de configuración, hay datos, ejecutables, etc.

    Richzendy: SAN (http://en.wikipedia.org/wiki/Storage_area_network) no escala bien si la distancia entre los servidores es considerable. Nosotros ya tenemos una solución NAS basada en NFS (la cual es por debajo un cluster SAN), sin embargo la única forma que tenemos para compartirlo es NFS.

    ¿Es este puppet del que están hablando los dos?:

    http://reductivelabs.com/trac/puppet/wiki/BigPicture

    ¿Que ventajas tiene en cuanto a la distribución de archivos a un número largo de servidores?

    En mi problema tengo dos grupos de archivos, uno de ellos cambia de manera esporadica. El otro cambia constantemente. Para empezar me puedo enfocar en resolver el problema del grupo #1 🙂

    Es un problema interesante 🙂

Comments are closed.