[LUG.ro] Sistemas de archivos cluster
Martin A. Troncoso
tincho.tgz en gmail.com
Mar Mar 18 12:04:58 ART 2014
Buenas gente, escribo para expresar un poco las pruebas que realize sobre
distintos sistemas de archivos para cluster y tambien para recibir sus
opiniones sobre los mismo, a continuacion voy a hacer un listado de las
siguientes soluciones que investigue/probe y las cosas buenas y negativas que
encontre, me gustaria que aquellos que tengan experiencia en este tema puedan
aportar un poco mas al respecto.
Como nota aclaro que mi evaluacion es desde el punto de vista de 2 o a lo sumo
3 servidores.
DRDB:
DRBD no es en si un sistema de archivos, este funciona creando un dispositivo
virtual en el sistema y realiza una copia a nivel de bloques, o sea funciona
como un raid 1 pero en red, sobre este dispositivo se crea el sistema de
archivos y de esta forma podemos tener el mismo en 2 equipos.
Tener un raid 1 a travez de red es algo muy copado y sumamente util en los
casos en que se desee tener un segundo servidor como Fail Over ya que como
dije DRBD crea solo el dispositivo con el raid 1, sobre este debemos crear el
sistema de archivos y los sistemas de archivos tradicionales como EXT3/4 XFS,
etc no permiten que sean montados en multiples equipos de forma simultanea (en
realidad si lo hicieramos correriamos un gran riesgo de corromper el sistema)
Sin embargo DRBD tiene un modo de funcionamiento que permite realizar un
split-brain (permitir que montemos el mismo dispositivo en multiples equipos)
pero para esto ya necesitamos un sistema de archivos de cluster como ser GFS2
u OCFS
GFS2:
Global File System esta pensado para ser usado en dispositivos que sean
accedidos a travez de multiples dispositivos, una de las cosas que realiza es
por ejemplo un journal independiente por cada cliente, garantizando de esta
forma la integridad de los datos, ademas de necesitar un Lock Manager
distribuido (para el bloqueo de archivos), usando DRBD y GFS2 es posible que
los 2 equipos accedan al mismo sistema de archivos y de fondo con un RAID1 a
nivel de bloques a travez de la red, esto es maravilloso (sin tener en cuenta
la perdida de performance que generar DRBD) , pero asi tambien plantea sus
problemas, los sistemas de control de cluster que necesitamos para un GFS no
estan muy pensados para cluster de 2 equipos, sino que trabajan con un sistema
de votos para la integracion diseñado para un minimo de 3 equipos, entonces al
tener solo 2 podemos tener problemas ante la caida de uno de nuestros nodos.
Ejemplo: nodo1 muere, nodo2 esta dentro del cluster no pasa nada
Ejemplo2: cae el sistema electrico, nodo1 vuelve nodo2 no, si la configuracion
no esta bien afinada para esta situacion nos encontraremos en que al no tener
la cantidad de votos necesarios el nodo1 no puede ingresar en el cluster (que
en ese momento estaria compuesto por el solo) y a pesar de tener todos los
datos en el dispositivo DRBD no podriamos acceder al sistema de archivos GFS2,
volviendo inservible la replica hasta que no se recupere el nodo2
Se pueden realizar configuraciones para evitar estos problemas, pero es darle
un uso mas alla del pensado, en mi opinion es un sistema de archivos hermoso
para usar en dispositivos iSCSI con replicacion interna y conectar decenas(o
mas) de servidores que accedan a ese dispositivo.
GlusterFS:
Este es el ultimo del que les voy a hablar ya que es el ultimo que probe como
sistema de archivos, Gluster funciona en la capa usuario con FUSE, tiene
algunas cosas realmente interesantes, Gluster crea un dispositivo virtual
tomando como base un directorio del sistema raiz (o sea, nosotros le decimos a
gluster que forme su dev a partir de por ejemplo /home) en cada servidor donde
pongamos Gluster debemos realizar la misma operacion y definir que tipo de
replica queremos hacer, gluster soporta varios modos como ser :
Replicacion: cada archivo que se escriba en cada dispositivo se replicara
entero en los demas
Split: cada archivo que se escriba se realizara un split guardando una porcion
en cada servidor
bueno, no voy a decir mas ya que en mi caso me interesaba la replicacion,
Gluster como tal no funciona a nivel bloque, sino que funciona a nivel
archivos.
El dispotivo virtual debe ser montado con el sistema de archivos Gluster
(fuse) y podremos operar sobre este de forma totalmente transparente, al
escribir en este punto de montaje Gluster capturara los eventos y realizara
las acciones correspondientes, por ejemplo en el caso de replicacion copiara
el mismo a los otros nodos o en el caso de split realizara un split en la
cantidad de nodos y lo repartira (como nota , el split puede ser por cantidad
de nodos o por tamaño) pudiendo acceder a todos los archivos en todos los
servidores, en el caso de la replicacion algo curioso y fantastico que veremos
es que en el directorio que seteamos para gluster (/home en este caso)
podremos ver todos los archivos que se crearon y accederlos de forma
transparente, eso si, si realizamos algun cambio ahi este no se vera reflejado,
y en el caso del split veremos las partes de los archivos.
Particularmente Gluster fue el que me parecio mas apto para un cluster chico,
ya que a pesar de ser un sistema de archivos sobre FUSE es muy simple de
configurar, no requiere control de cluster y la performance es bastante buena
(aunque mete una carga de red mayor a la de drbd) ademas en caso de catastrofe
los archivos son accesibles a nivel del sistema de archivos principal (EXT3/4
XFS, etc) por lo que recuperar los mismos es simple y no tiene grandes
complicaciones.
Bueno, si alguien tiene experiencia o quiere aportar algo bienvenido sea, un
saludo
PD: Hadoop que seguramente se preguntaran porque no lo inclui, bueno, segun lo
que investigue sobre este para tener una performance mas o menos aceptable se
requieren una gran cantidad de equipos, cosa que escapa a mis requeriemientos,
si bien es cierto que este deberia ser sumamente escalable en cantidades
grandes de servidores y muy tolerante a fallos
PD2: tambien realize pruebas con LSYNCD pero en este caso no es un sistema de
archivos como tal, sino que uno dispara los eventos a traves del servicio (que
detecta a traves de imon cuando se modifica un bloque del sistema de archivos),
por eso no lo considere para incluirlo, aunque esta muy piola y permite hacer
muchas cosas, ejemplo de esto es una conf que puse para copiar ciertas cosas a
un ramdisk y cambiar permisos sobre ciertos tipos de archivos
un saludo
Más información sobre la lista de distribución Lugro