Un cluster es un conjunto de ordenadores que se comportan como si fuesen uno sólo. Trabajar con un cluster nos puede ofrecer: alto rendimiento, alta disponibilidad, equilibrio de carga, escalabilidad.
Actualmente existen soluciones que nos permiten el montaje de cluster de manera muy sencilla y rápida ofreciendonos una potente solución para cada necesidad agilizando el arte de construir un cluster.

Alto rendimiento (High Performance): "Está diseñado para dar altas prestaciones en cuanto a capacidad de cálculo." Para valorar la necesidad de un cluster deberemos valorar dos factores principales: el tamaño del problema por resolver y el precio de la máquina necesaria para resolverlo. Para paralelizar el problema tenemos PVM (Parallel Virtual Machine) o MPI (Message Passing Interface) con varias implementaciones abiertas como OpenMPI, LAM/MPI, MPICH2, ...
Existen herramientas actualmente que nos permiten montar un cluster (HPC) de manera muy sencilla: Pelican HPC (sucesor de ParallelKnoppix), Bootable Cluster CD, Instant OpenMosix (utiliza OpenMosix), Beowulf, ...
Alta disponibilidad (High Availability): "Conjunto de máquinas que se caracteriza por mantener una serie de servicios compartidos y por estar constantemente monitorizándose entre sí." Para valorar la necesidad de este tipo de cluster debemos tener en cuenta cuan crítico es el servicio que vamos a ofrecer, un ejemplo simple es un servidor web que debe estar siempre online o el servidor de comunicaciones VoIP.
La herramienta libre más popular para ofrecer un servicio de alta disponibilidad es Heartbeat, de la que ya hablamos en su día y tenemos alguna guía para implementarlo junto a DRBD.
Equilibrio de carga (Load Balancing): "Técnica usada para compartir el trabajo a realizar entre varios procesos, ordenadores, discos u otros recursos." Este servicio (desde mi punto de vista) es en parte complementario a la alta disponibilidad y lo que se pretende realmente es repartir el trabajo entre los nodos de forma equitativa.
Una de las herramientas libres más populares es Linux Virtual Server, aplicable a servicios de red escalables como por ejemplo: web, cache, correo, ftp, multimedia y VoIP.
Si observamos que, como hemos dicho la alta disponibilidad y el balanceo o equilibrio de carga son complementarios podremos encontrar soluciones como UltraMonkey que engloben ambos servicios.
Escalabilidad (Scalability): "Es la propiedad deseable de un sistema, una red o un proceso, que indica su habilidad para, o bien manejar el crecimiento continuo de trabajo de manera fluida, o bien para estar preparado para hacerse más grande sin perder calidad en los servicios ofrecidos." En definitiva es un concepto inherente a cualquier tipo de implementación de un cluster que generalmente puede crecer añadiendo nuevos nodos al sistema.
En cuanto a Asterisk disponemos de un protocolo de localización de servicios telefónicos llamado DUNDI, que nos permite crear una red P2P de centralitas.

Existe un estupenda guía en castellano de Julián J. Menéndez que nos muestra como usar la red DUNDI en Asterisk, o DUNDI So Easy A Caveman Could Do It (Tan fácil que un cavernícola podría hacerlo). Por último no viene mal empezar a revisar las mejoras y novedades que trae Asterisk 1.6 en sistemas cluster.