¿Qué es la alta disponibilidad?

Introducción
Con una mayor demanda de infraestructuras confiables y de alto rendimiento diseñadas para dar servicio a sistemas críticos, los términos escalabilidad y alta disponibilidad no podrían ser más populares. Si bien manejar una mayor carga del sistema es una preocupación común, reducir el tiempo de inactividad y eliminar los puntos únicos de falla son igualmente importantes. La alta disponibilidad es una cualidad del diseño de infraestructura a escala que aborda estas últimas consideraciones.
En esta guía, analizaremos qué significa exactamente la alta disponibilidad y cómo puede mejorar la confiabilidad de su infraestructura.
¿Qué es la alta disponibilidad?
En informática, el término disponibilidad se utiliza para describir el período de tiempo en el que un servicio está disponible, así como el tiempo que necesita un sistema para responder a una solicitud realizada por un usuario. La alta disponibilidad es una cualidad de un sistema o componente que asegura un alto nivel de rendimiento operativo durante un período de tiempo determinado.
Medición de la disponibilidad
La disponibilidad se expresa a menudo como un porcentaje que indica cuánto tiempo de funcionamiento se espera de un sistema o componente en particular en un período de tiempo determinado, donde un valor del 100 % indicaría que el sistema nunca falla. Por ejemplo, un sistema que garantiza un 99 % de disponibilidad en un período de un año puede tener hasta 3,65 días de inactividad (1 %).
Estos valores se calculan en función de varios factores, incluidos los períodos de mantenimiento programados y no programados, así como el tiempo de recuperación ante una posible falla del sistema.
¿Cómo funciona la alta disponibilidad?
La alta disponibilidad funciona como un mecanismo de respuesta ante fallos de la infraestructura. Su funcionamiento es bastante simple en términos conceptuales, pero normalmente requiere software y configuración especializados.
¿Cuándo es importante la alta disponibilidad?
Al configurar sistemas de producción robustos, minimizar el tiempo de inactividad y las interrupciones del servicio suele ser una prioridad. Independientemente de lo confiables que sean sus sistemas y software, pueden surgir problemas que puedan hacer que sus aplicaciones o sus servidores se caigan. Implementar alta disponibilidad para su infraestructura es una estrategia útil para reducir el impacto de este tipo de eventos. Los sistemas de alta disponibilidad pueden recuperarse automáticamente de fallas en servidores o componentes.
¿Qué hace que un sistema sea altamente disponible?
Uno de los objetivos de la alta disponibilidad es eliminar los puntos únicos de falla en su infraestructura. Un punto único de falla es un componente de su pila de tecnología que causaría una interrupción del servicio si no estuviera disponible. Como tal, cualquier componente que sea un requisito para el funcionamiento adecuado de su aplicación y que no tenga redundancia se considera un punto único de falla. Para eliminar los puntos únicos de falla, cada capa de su pila debe estar preparada para la redundancia. Por ejemplo, imagine que tiene una infraestructura que consta de dos servidores web idénticos y redundantes detrás de un balanceador de carga. El tráfico proveniente de los clientes se distribuirá equitativamente entre los servidores web, pero si uno de los servidores deja de funcionar, el balanceador de carga redirigirá todo el tráfico al servidor en línea restante.
La capa del servidor web en este escenario no es un único punto de falla porque:
- Hay componentes redundantes para la misma tarea
- El mecanismo sobre esta capa (el balanceador de carga) es capaz de detectar fallas en los componentes y adaptar su comportamiento para una recuperación oportuna.
¿Pero qué sucede si el balanceador de carga se desconecta?
En el escenario descrito, que no es poco común en la vida real, la capa de equilibrio de carga sigue siendo un único punto de falla. Sin embargo, eliminar este único punto de falla restante puede ser un desafío; aunque se puede configurar fácilmente un balanceador de carga adicional para lograr redundancia, no hay un punto obvio por encima de los balanceadores de carga para implementar la detección y recuperación de fallas.
La redundancia por sí sola no puede garantizar una alta disponibilidad. Debe existir un mecanismo para detectar fallas y tomar medidas cuando uno de los componentes de su pila deja de estar disponible.
La detección y recuperación de fallas en sistemas redundantes se puede implementar mediante un enfoque de arriba a abajo: la capa superior se hace responsable de monitorear la capa inmediatamente inferior para detectar fallas. En nuestro ejemplo anterior, el balanceador de carga es la capa superior. Si uno de los servidores web (capa inferior) deja de estar disponible, el balanceador de carga dejará de redirigir las solicitudes para ese servidor específico.
Este enfoque suele ser más simple, pero tiene limitaciones: habrá un punto en su infraestructura en el que no exista una capa superior o esté fuera de alcance, como es el caso de la capa de balanceador de carga. La creación de un servicio de detección de fallas para el balanceador de carga en un servidor externo simplemente crearía un nuevo punto único de falla.
En un escenario como este, es necesario adoptar un enfoque distribuido. Se deben conectar varios nodos redundantes entre sí como un clúster en el que cada nodo debe tener la misma capacidad de detección y recuperación de fallos.
Sin embargo, en el caso del balanceador de carga, existe una complicación adicional, debido a la forma en que funcionan los servidores de nombres. Recuperarse de una falla del balanceador de carga generalmente significa una conmutación por error a un balanceador de carga redundante, lo que implica que se debe realizar un cambio de DNS para apuntar un nombre de dominio a la dirección IP del balanceador de carga redundante. Un cambio como este puede tardar una cantidad considerable de tiempo en propagarse en Internet, lo que causaría un tiempo de inactividad grave para este sistema.
Una posible solución es utilizar el equilibrio de carga DNS round-robin . Sin embargo, este enfoque no es confiable, ya que deja la conmutación por error en la aplicación del lado del cliente.
Una solución más robusta y confiable es utilizar sistemas que permitan una reasignación flexible de direcciones IP, como las IP reservadas . La reasignación de direcciones IP a pedido elimina los problemas de propagación y almacenamiento en caché inherentes a los cambios de DNS al proporcionar una dirección IP estática que se puede reasignar fácilmente cuando sea necesario. El nombre de dominio puede permanecer asociado con la misma dirección IP, mientras que la dirección IP en sí se mueve entre servidores.
Así es como se ve una infraestructura de alta disponibilidad que utiliza IP reservadas:
¿Qué componentes del sistema son necesarios para la alta disponibilidad?
Existen varios componentes que deben tenerse muy en cuenta para implementar la alta disponibilidad en la práctica. Mucho más que una implementación de software, la alta disponibilidad depende de factores como:
- Entorno: si todos sus servidores están ubicados en la misma área geográfica, una condición ambiental como un terremoto o una inundación podría hacer que todo su sistema se caiga. Tener servidores redundantes en diferentes centros de datos y áreas geográficas aumentará la confiabilidad.
- Hardware: los servidores de alta disponibilidad deben ser resistentes a cortes de energía y fallas de hardware, incluidos los discos duros y las interfaces de red.
- Software: toda la pila de software, incluido el sistema operativo y la propia aplicación, debe estar preparada para manejar fallas inesperadas que podrían requerir un reinicio del sistema, por ejemplo.
- Datos: la pérdida y la inconsistencia de los datos pueden deberse a diversos factores, y no se limitan a fallas del disco duro. Los sistemas de alta disponibilidad deben tener en cuenta la seguridad de los datos en caso de falla.
- Red: las interrupciones no planificadas de la red representan otro posible punto de falla para los sistemas de alta disponibilidad. Es importante contar con una estrategia de red redundante para posibles fallas.
¿Qué software se puede utilizar para configurar la alta disponibilidad?
Cada capa de un sistema de alta disponibilidad tendrá diferentes necesidades en términos de software y configuración. Sin embargo, a nivel de aplicación, los balanceadores de carga representan un componente esencial del software para crear cualquier configuración de alta disponibilidad.
HAProxy (High Availability Proxy) es una opción común para equilibrar la carga, ya que puede manejar el equilibrio de carga en múltiples capas y para diferentes tipos de servidores, incluidos los servidores de bases de datos .
Al ascender en la pila del sistema, es importante implementar una solución redundante confiable para el punto de entrada de la aplicación, normalmente el balanceador de carga. Para eliminar este único punto de falla, como se mencionó anteriormente, necesitamos implementar un clúster de balanceadores de carga detrás de una IP reservada. Corosync y Pacemaker son opciones populares para crear una configuración de este tipo, tanto en servidores Ubuntu como CentOS .
Conclusión
La alta disponibilidad es un subconjunto importante de la ingeniería de confiabilidad, cuyo objetivo es garantizar que un sistema o componente tenga un alto nivel de rendimiento operativo en un período de tiempo determinado. A primera vista, su implementación puede parecer bastante compleja; sin embargo, puede aportar enormes beneficios para los sistemas que requieren una mayor confiabilidad.
Deja una respuesta