Software de alta disponibilidad


El software de alta disponibilidad es un software que se utiliza para garantizar que los sistemas estén funcionando y disponibles la mayor parte del tiempo. La alta disponibilidad es un alto porcentaje de tiempo que el sistema está funcionando. Puede definirse formalmente como (1 - (tiempo de inactividad / tiempo total)) * 100%. Aunque la disponibilidad mínima requerida varía según la tarea, los sistemas normalmente intentan lograr una disponibilidad del 99,999% (5 nueves). Esta característica es más débil que la tolerancia a fallas , que típicamente busca brindar un 100% de disponibilidad, aunque con importantes penalizaciones de precio y desempeño.

El software de alta disponibilidad se mide por su rendimiento cuando falla un subsistema, su capacidad para reanudar el servicio en un estado cercano al estado del sistema en el momento de la falla original y su capacidad para realizar otras tareas que afectan el servicio (como software actualización o cambios de configuración) de una manera que elimine o minimice el tiempo de inactividad. Todas las fallas que afectan la disponibilidad: hardware, software y configuración deben ser abordadas por el software de alta disponibilidad para maximizar la disponibilidad.

Un servicio no está disponible si no puede atender todas las solicitudes que se le hacen. La propiedad de "escalamiento horizontal" de un sistema se refiere a la capacidad de crear múltiples copias de un subsistema para abordar la creciente demanda y distribuir eficientemente el trabajo entrante a estas copias ( equilibrio de carga (computación) ) preferiblemente sin apagar el sistema. El software de alta disponibilidad debe permitir el escalamiento horizontal sin interrumpir el servicio.

Habilitar la comunicación activa / en espera (en particular Checkpointing) : los subsistemas activos deben comunicarse con los subsistemas en espera para asegurarse de que la espera esté lista para asumir el control donde lo dejó el activo. El software de alta disponibilidad puede proporcionar abstracciones de comunicaciones como colas de eventos y mensajes redundantes para ayudar a los subsistemas activos en esta tarea. Además, un concepto importante llamado "punto de control" es exclusivo del software de alta disponibilidad. En un sistema de puntos de control, el subsistema activo identifica todo su estado crítico y actualiza periódicamente el modo de espera con cualquier cambio en este estado. Esta idea se abstrae comúnmente como una tabla hash distribuida- el activo escribe registros de clave / valor en la tabla y los subsistemas activo y en espera leen de ella. A diferencia de una tabla hash distribuida en "nube" ( Chord (peer-to-peer) , Kademlia , etc.), un punto de control se replica por completo. Es decir, todos los registros de la tabla hash del "punto de control" son legibles siempre que se esté ejecutando una copia. [1] Otra técnica, llamada [punto de control de la aplicación], guarda periódicamente el estado completo de un programa. [2]

Habilitar actualizaciones en servicio : la actualización de software en servicio es la capacidad de actualizar el software sin degradar el servicio. Por lo general, se implementa en sistemas redundantes mediante la ejecución de lo que se denomina una actualización "continua": actualizar el modo de espera mientras el activo brinda servicio, realizar una conmutación por error y luego actualizar el activo anterior. Otra característica importante es la capacidad de volver rápidamente a una versión anterior del software y la configuración si falla la nueva versión. [3] [4]


Arquitectura de sistema de ejemplo de software de alta disponibilidad