Los sistemas tolerantes a fallos pueden ser tan sencillos como usar duplicidad de elementos hardware, y tan complejos como redes enteras completamente replicadas en tiempo real entre dos ubicaciones físicamente distintas.

Veamos algunos ejemplos de sistemas tolerantes a fallos:

i) Duplicidad de hardware: instalar dos tarjetas de red en un equipo, o disponer de dos equipos idénticos con el mismo sistema operativo y aplicaciones instalados, constituye un ejemplo muy básico de sistema tolerante a fallos; en el primer caso si falla la tarjeta podemos configurar las aplicaciones y servicios para que utilicen la otra, en el segundo además de reconfigurar necesitaríamos recuperar datos y configuraciones que podrían estar sólo actualizados en uno de los equipos, por lo tanto ninguno de los dos nos da una disponibilidad del 100 %, pero sin duda aumentan el nivel de disponibilidad con respecto a no hacer nada.

ii) Sistemas redundantes: los sistemas redundantes se basan también en el uso de la duplicidad de hardware, pero de una manera gestionada e inteligente; cuando en un sistema redundante falla uno de los elementos físicos redundados el sistema puede seguir en funcionamiento, y además no se produce parada en ningún momento, ni es necesario realizar reconfiguración alguna.
Sistemas redundantes

Los sistemas redundantes más habituales son aquellos en los cuales un equipo crítico tiene duplicados, o triplicados, los componentes hardware que son más susceptibles de fallo, como pueden ser: discos duros, fuentes de alimentación, ventiladores, tarjetas de red, módulos de memoria...

Normalmente todos los equipos de tipo servidor específico contienen alguno o todos estos elementos redundantes, pero también algunas workstations; por supuesto un NAS profesional, o los componentes de una SAN, deben tener redundados los discos, pero es muy habitual que también tengan redundadas las fuentes; lo mismo es aplicable a los switches y otros dispositivos de red centrales.

Nota: es muy recomendable usar sistema redundantes en aquellos puntos de la red únicos por los que debe pasar todo el flujo de información; a este tipo de equipos en una red se les denomina puntos únicos de fallo o SPOF (Single Point Of Failure)

En algunos casos la redundancia de componentes se consigue exclusivamente mediante el uso de hardware: es el caso, por ejemplo, de la fuentes de alimentación: para el sistema operativo que se ejecuta en el equipo redundado es indiferente que la fuente esté o no redundada.
En otros casos sin embargo esto no es posible, y se requiere del uso de software adicional para proporcionar la redundancia; por ejemplo: disponer de dos discos en un sistema no sirve de nada si la información no está actualizada y sincronizada en ambos discos, ya que al producirse el fallo de un disco tendríamos un sistema con otro disco y capaz de seguir trabajando, pero sin datos válidos, con lo cual el efecto sería el mismo que si el sistema no estuviera redundado.
RAID

RAID son las iniciales de Redundant Array of Independent Disks, o sea, matriz redundante de discos independientes.

En esencia es un grupo de discos duros que en vez de conectarse por separado a un sistema operativo se conectan juntos, de tal manera que el sistema sólo ve un disco (volumen RAID), aunque sean varios.

Al usar un RAID el sistema operativo escribe, y lee, la información en el volumen RAID de la misma manera que lo haría en un único disco duro; el RAID se encarga de escribir esa información físicamente en los discos implementando, habitualmente, algún algoritmo de réplica de la información.

Nota: aunque el RAID se diseñó para obtener redundancia, hay algunos sistemas RAID que carecen de redundancia, y están orientados a obtener mayor rendimiento en lectura o en escritura, o a presentar al sistema la suma de la capacidad de varios discos como si fuera un sólo disco más grande.

Los discos de un RAID pueden ser discos normales, aunque se suele recomendar el uso de discos de gama empresarial de los distintos fabricantes , más rápidos y con menores tasas de errores de funcionamiento.

Para que las operaciones de lectura y escritura sean transparentes para el sistema operativo se necesita una controladora a la que se conectan los discos (en vez de directamente al sistema como se haría con discos normales), y drivers específicos de la controladroa RAID.

Atendiendo a esta necesidad los sistemas RAID pueden ser de 3 tipos:

i) RAID por hardware dedicado: utiliza controladoras específicamente diseñadas para implementar la función de RAID; disponen de procesador y memoria propios, y algunas incluso de batería; no solamente no afectan al rendimiento del sistema, sino que es posible configurarlas para que lo mejoren mucho.
ii) RAID por hardware integrado en placa base: todo el hardware y la lógica de control del RAID se basa en el uso de los recursos del propio sistema (procesador y memoria), aunque sin que intervenga el sistema operativo; esto penaliza el rendimiento global del sistema, aunque menos que el RAID por software. La placa base debe soportarlo, y en caso de fallo de la placa base puede ser complicado recuperar la información sino se dispone de otra igual o similar.
iii) RAID por software: algunos sistemas operativos, como algunas ediciones tanto de las plataformas servidor como las cliente de Microsoft, soportan la combinación de varios discos en un sólo volumen que implemente algún tipo de nivel de RAID. Este sistema es el menos recomendable desde todos los puntos de vista.

Nota: es errónea, y peligrosa, la idea de que al disponer de un sistema con RAID no es necesario una copia de seguridad, ya que los datos nunca se van perder. Efectivamente es muy difícil que en un sistema RAID se pierda la información (deberían producirse múltiples fallos simultáneos), pero el RAID no evita la pérdida de datos en caso de siniestro (robo, incendio...); también es importante tener en cuenta que el RAID redunda la información que tenemos, sea esta correcta o no, y las operaciones que hacemos sobre esa información; es decir, si un virus borra la información la borra del RAID, si accidentalmente perdemos una carpeta, el RAID también la pierde, y si después de un mes de trabajo decidimos que queremos volver al estado anterior de un ficheros de Excel no lo vamos a encontrar en el RAID (a no ser que tengamos activada la característica de versiones integrada en Windows). Un RAID es un sistema de alta disponibilidad, nunca un sistema de copia de seguridad, aunque si hay sistemas de copia de seguridad que implementan RAID en sus componentes físicos como medida adicional de protección.

El RAID puede configurarse de varias formas, llamadas niveles de RAID, y cada una de ellas tiene sus ventajas y sus desventajas. Veamos algunos de los niveles de RAID más frecuentes:

i) RAID 0: también llamado strip; presenta al sistema un único disco con capacidad igual a la suma de los discos que forman el strip; no tiene redundancia, pero sin un gran rendimiento; mínimo dos discos.
ii) RAID 1: también llamado mirror o espejo; todos los discos contienen la misma información; soporta el fallo de un disco; es costoso, ya que de la capacidad total de almacenamiento disponible el 50% no se puede usar. Mínimo dos discos, preferiblemente iguales, aunque no necesariamente (el volumen RAID será del tamaño del menor de ellos). Con respecto a un sólo disco tiene mejor rendimiento en lectura y peor en escritura.
iii) RAID 5: soporta el fallo de un disco, pero sin ser tan costoso como el RAID 0; sólo puede obtenerse a partir de, como mínimo, tres discos iguales. La capacidad de almacenamiento que se pierde, para obtener redundancia, es el equivalente a un disco entero, por lo tanto cuanto más discos existan más rentable es el RAID. Con respecto a un sólo disco tiene mejor rendimiento en lectura; en escritura el rendimiento depende de la información a escribir.
iv) RAID 10: combina dos volúmenes RAID 0 sin redundancia, pero de alto rendimiento, en un RAID 1, obteniendo así redundancia.


Nota: el impacto de la configuración RAID sobre el rendimiento de un sistema puede llegar a ser crítico, para bien o para mal. Es muy importante asesorarse bien a la hora de elegir el sistema RAID para un determinado uso, especialmente en el caso de bases de datos.
Sustitución en caliente

Dos conceptos a tener en cuenta a la hora de hablar de alta disponibilidad, y de sistemas tolerantes a fallos, son los de sustitución en caliente, también llamado hot-swap, y conexión en caliente, también llamado hot-plug. En ambos casos se trata de la posibilidad de realizar operaciones de mantenimiento hardware (como sustitución de un componente redundado que ha fallado, o ampliación de capacidad) sobre un sistema que está activo sin tener que apagarlo. Esto evidentemente aumenta el nivel de disponibilidad.


Clúster

Un clúster es el nivel más elevado de los sistemas tolerantes a fallos.

Los clúster nacen de una necesidad: existen ciertos elementos que no pueden ser redundados, como por ejemplo las placas base, o, en muchos sistemas, los procesadores. Para evitar que un fallo en uno de estos componentes pare el servicio se usan los clústeres, que en esencia lo que redundan son la totalidad de los sistemas. Cada uno de los sistemas que componen el clúster se llama nodo.

Los clústers pueden ser de hardware, de software o una combinación de ambos:

- Clúster de hardware: lo formarían, por ejemplo, dos switches de red idénticos configurados para dar servicio en conjunto al mismo grupo de equipos.

- Clúster de software: lo formarían, por ejemplo, algunas implementaciones de alta disponibilidad de Microsoft SQL Server que no requieren configuraciones específicas de hardware, aunque lógicamente sí requieren de la existencia de varios equipos distintos.

- Clúster de hardware y software: lo formarían, por ejemplo, dos servidores con Windows Server 2008 R2 Enterprise instalado y configurados para formar un servidor de archivos en clúster.


Figura 1.- Ejemplo de configuración de varios servidores funcionando en clúster

Los clústers también se clasifican por su manera de responder ante el fallo de en un nodo:

- Clústers manuales: requieren intervención manual para pasar el control a otro de los nodos; no se consideran realmente como clústers, ya que hay una pérdida de disponibilidad, aunque sea pequeña.

- Clústers automáticos: la caída de un nodo es totalmente transparente para el servicio ofrecido, que no se para en ningún momento.

Otra clasificación de los clústeres es en función de su comportamiento cuando no hay fallo:

- Clúster activo-pasivo: normalmente sólo funciona un nodo o grupo de nodos, y otro nodo o grupo de nodos está en espera de un fallo para entrar en funcionamiento.

- Clúster activo-activo: todos los nodos están en funcionamiento; cuando cae uno el resto simplemente se reparte la carga de trabajo del nodo que ha fallado.

Los sistemas basados en sistemas operativos Microsoft Server disponen de varias tecnologías para ofrecer servicio de clustering, entre ellas están Microsoft Cluster Service (MSCS) y Network Load Balancing (NLB).
Microsoft cluster service (MSCS)

Es la tecnología de Microsoft que permite crear clústers de servidores, incluyendo todos los servicios que estos ofrezcan y que sean compatibles con la tecnología de clúster.

El servicio de clúster de Microsoft se configura para usar varios servidores y un sistema de almacenamiento compartido por todos los nodos. Se trata de un clúster activo-pasivo en el sentido de que cada servicio que da el clúster sólo está activo en uno de los nodos a la vez.

Microsoft NLB es un tipo de clúster para servicios basados en IP que permite la distribución inteligente de las cargas de trabajo entre varios servidores (nodos del clúster) para un servicio determinado.

El servicio NLB, además de proveer un sistema de reparto de la carga de trabajo, también permite crear un sistema tolerante a fallos, ya que si se detecta que un nodo falla no se le asigna trabajo y reparte el que el nodo tenía entre el resto.

Puesto que NLB se ofrece sobre IP su implementación se basa en el uso de una IP virtual de servicio, que es a la que deben conectarse los clientes, mientras que el servicio NLB será el encargado de direccionar cada petición al nodo adecuado en cada momento.

Ejemplos típicos de uso de NLB son clústeres de servidores web o de servidores de terminal server.


La diferencia fundamental entre MSCS y NLB es que NLB maneja información sin estado, es decir las peticiones de servicio consecutivas son independientes unas de otras, y por lo tanto se puede asignar una a un nodo y la siguiente a otro nodo distinto. En cambio MSCS maneja peticiones que están relacionadas entre si, ya que forman parte de procesos.

MSCS típicamente se usa para clusterizar servidores de aplicaciones, servidores de bases de datos, servidores de ficheros..., mientras que NLB se usa para balancear carga y dar alta disponibilidad a servicios web, servicios de VPN...

NLB y MSCS se pueden usar de manera conjunta en entornos complejos, pero no pueden configurarse simultáneamente en un mismo nodo.

http://technet.microsoft.com/es-es/gg397922