Montaje de un cluster: conclusiones

Finalmente después de disponer de dos máquinas he cubierto uno de los objetivos principales y es ofrecer el servicio web de forma ininterrumpida. No obstante debo decir que el servidor primario (AMD K7) esta casi siempre en funcionamiento mientras que el espejo (Intel P III) está mayormente ocioso.

Así están las cosas en el AMD:

top - 17:44:27 up 2 days,  3:41,  1 user,  load average: 0.00, 0.00, 0.00
Tasks: 102 total,   2 running, 100 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0%us,  0.3%sy,  0.0%ni, 97.3%id,  0.0%wa,  2.3%hi,  0.0%si,  0.0%st
Mem:    516860k total,   500448k used,    16412k free,    38900k buffers
Swap:   184708k total,       60k used,   184648k free,    84384k cached

Y así en el Intel:

top - 17:49:43 up 3 days,  6:55,  1 user,  load average: 0.00, 0.00, 0.00
Tasks:  73 total,   1 running,  72 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.1%us,  0.0%sy,  0.0%ni, 99.8%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:    776576k total,   199252k used,   577324k free,    69964k buffers
Swap:  2329384k total,        0k used,  2329384k free,    61668k cached

Por este motivo creo que sería más apropiado tener un balanceador de carga y que se repartieran el trabajo de manera más equitativa, ya que el AMD se queda sin memoria pues tiene más procesos pesados en ejecución. Sería interesante también que se atendieran las peticiones que llegan al sitio por la máquina que tiene menos carga.

Para tal finalidad tengo en mente Linux Virtual Server (LVS). Linux Virtual Server es una solución avanzada de balanceo de carga válida para construir servicios de red de alta disponibilidad y muy escalables tales como web, cache, correo, ftp, VoIP.

Uno de los principales problemas del sistema actual viene por el manejo de los datos, tenemos por un lado Heartbeat que controla si los nodos están activos y en función de ello actúa una máquina u otra. DRBD solo permite montar la partición con los datos sincronizados en un solo servidor a la vez, ya que cuando este cae le pasa los datos al otro nodo, este ultimo toma el control y se monta la partición como primaria. Es por esto que no tenemos los datos sincronizados permanentemente en las dos particiones. Para gestionar los datos existen opciones como un cluster MySQL, otra solución es la herramienta rsync, otra solución (y esta es la que me ha parecido más interesante) puede venir por el sistema de ficheros distribuido coda.

URL para hacer trackback a este post:

http://bytecoders.net/trackback/211