Latido (computación) - Enciclopedia
En la ciencia de la computación, un pulso (heartbeat) es una señal periódica generada por el hardware o el software para indicar el funcionamiento normal o para sincronizar otras partes de un sistema informático. El mecanismo de pulso es una de las técnicas más comunes en sistemas críticos para proporcionar alta disponibilidad y tolerancia a fallos de servicios de red mediante la detección de fallos de red o sistemas en nodos o demonios que pertenecen a un clúster de red —administrar por un servidor maestro— con el fin de adaptarse y reequilibrar automáticamente el sistema utilizando los nodos redundantes restantes en el clúster para tomar el carga de los nodos fallados para proporcionar servicios constantes. Usualmente, un pulso se envía entre las máquinas a intervalos regulares del orden de los segundos; un mensaje de pulso. Si el extremo no recibe un pulso durante un tiempo —generalmente unos pocos intervalos de pulso— se asume que la máquina que debía enviar el pulso ha fallado. Los mensajes de pulso se envían típicamente sin interrupción a un ritmo periódico o recurrente desde el inicio del originador hasta su apagado. Cuando el destino identifica una falta de mensajes de pulso durante un período de llegada anticipado, el destino puede determinar que el originador ha fallado, se ha apagado o ya no está disponible en general.
Protocolo de pulso
Un protocolo de pulso se utiliza generalmente para negociar y monitorear la disponibilidad de un recurso, como una dirección IP flotante, y el procedimiento implica enviar paquetes de red a todos los nodos en el clúster para verificar su accesibilidad. Tipicamente, cuando un pulso se inicia en una máquina, realiza un proceso de elección con otras máquinas en la red de pulso para determinar qué máquina, si alguna, posee el recurso. En redes de pulso de más de dos máquinas, es importante considerar la partición, donde dos mitades de la red podrían estar funcionando pero no poder comunicarse entre sí. En una situación como esta, es importante que el recurso sea poseído por una única máquina, no por una máquina en cada partición.
Como un pulso se utiliza para indicar la salud de una máquina, es importante que el protocolo de pulso y el transporte sobre el que se ejecuta sean tan confiables como sea posible. Provocar una transferencia de carga debido a una alarma falsa puede, dependiendo del recurso, ser sumamente indeseable. También es importante reaccionar rápidamente a una falla real, lo que también señala la fiabilidad de los mensajes de pulso. Por esta razón, a menudo es deseable tener un pulso en ejecución sobre más de un transporte; por ejemplo, un segmento de Ethernet utilizando UDP/IP, y un enlace serie.
Una "miembro del clúster" de un nodo es una propiedad de la accesibilidad de red: si el maestro puede comunicarse con el nodo
x
{\displaystyle x}
, se considera un miembro del clúster y "muerto" en caso contrario. Un programa de pulso como un todo consta de varios subsistemas:
Subsistema de Pulso (HS): El subsistema que monitorea la presencia del nodo en el clúster mediante una serie de mensajes de vida o "pulsos".
Gestor de Clúster (CM): El subsistema dentro del clúster —generalmente el servidor maestro— que se encarga de seguir a los "miembros del clúster" y registrar qué recursos están en qué nodos.
Transición de Clúster (CT): Cuando un nodo se une o sale del clúster, este subsistema se encarga de seguir estos eventos para activar eventos de reequilibrio y reconfiguración del maestro para distribuir la carga.
Los mensajes de pulso se envían de manera periódica mediante técnicas como el difusión o el multicasting en clústeres más grandes. Como los CM tienen transacciones a través del clúster, el patrón más común es enviar mensajes de pulso a todos los nodos y "esperar" respuestas de manera no bloqueante. Como los mensajes de pulso o vida son la mayoría abrumadora de los mensajes de control relacionados con el clúster —que también van a todos los miembros del clúster— los sistemas críticos también incluyen protocolos no IP como puertos serie para entregar pulsos.
= Diseño e implementación =
Cada CM en el servidor maestro mantiene una máquina de estados finitos con tres estados para cada nodo que administra: Apagado, Inicial y Vivo. Siempre que un nuevo nodo se une, el CM cambia el estado del nodo de Apagado a Inicial y emite un mensaje de "arranque", que el nodo recibe y ejecuta un conjunto de procedimientos de inicio. Luego responde con un mensaje de reconocimiento, el CM incluye al nodo como miembro del clúster y cambia el estado del nodo de Inicial a Vivo. Cada nodo en el estado Vivo recibiría un mensaje de pulso de broadcast periódico del subsistema HS y espera un mensaje de reconocimiento dentro de un rango de tiempo de espera. Si el CM no recibe un mensaje de pulso de reconocimiento, el nodo se considera no disponible, y el CM cambia el estado del nodo de Vivo a Apagado. Los procedimientos o scripts para ejecutar y las acciones a tomar entre cada transición de estado es un detalle de implementación del sistema.
Red de pulso
La red de pulso es una red privada que solo se comparte entre los nodos del clúster y no es accesible desde fuera del clúster. Se utiliza por los nodos del clúster para monitorear el estado de cada nodo y comunicarse entre sí mensajes necesarios para mantener la operación del clúster. El método de pulso utiliza la naturaleza FIFO de las señales enviadas a través de la red. Asegurándose de que se hayan recibido todos los mensajes, el sistema asegura que los eventos se pueden ordenar adecuadamente.
En este protocolo de comunicaciones, cada nodo envía un mensaje en un intervalo determinado, digamos delta, en efecto confirmando que está vivo y tiene un pulso. Estos mensajes se ven como mensajes de control que ayudan a determinar que la red no incluye mensajes retrasados. Un nodo receptor denominado "sync" mantiene una lista ordenada de los mensajes recibidos. Una vez que se recibe un mensaje con una marca de tiempo posterior al marcado dado de cada nodo, el sistema determina que todos los mensajes se han recibido, ya que la propiedad FIFO asegura que los mensajes están ordenados.
En general, es difícil seleccionar un delta que sea óptimo para todas las aplicaciones. Si delta es demasiado pequeño, requiere demasiado ancho de banda y si es grande, resulta en una degradación del rendimiento ya que todo espera la próxima señal de pulso.
Ver también
Temporizador de perro guardián, un temporizador electrónico utilizado para detectar y recover de fallos de computadora
Vulnerabilidad Heartbleed
Notas
Referencias
Nikoletseas, Sotiris; Rolim, José D.P., editores (2011). "Theoretical Aspects of Distributed Computing in Sensor Networks". Monographs in Theoretical Computer Science. An EATCS Series. Berlin, Heidelberg: Springer Berlin Heidelberg. Bibcode:2011tadc.book.....N. doi:10.1007/978-3-642-14849-1. ISBN 978-3-642-14848-4. ISSN 1431-2654.
Hou, Zonghao; Huang, Yongxiang (29 de marzo de 2003). Design and implementation of heartbeat in multi-machine environment. 17th International Conference on Advanced Information Networking and Applications, 2003. AINA 2003. China: IEEE Xplore. doi:10.1109/AINA.2003.1192949. ISBN 0-7695-1906-7.
Robertson, Alan (2000). Linux-HA Heartbeat System Design (PDF). USENIX Annual Technical Conference. SUSE Labs.
Li, Fei-Fei; Yu, Xiang-Zhan; Wu, Gang (11 de julio de 2009). Design and Implementation of High Availability Distributed System Based on Multi-level Heartbeat Protocol. 2009 IITA International Conference on Control, Automation and Systems Engineering (case 2009). China: IEEE. doi:10.1109/CASE.2009.115. ISBN 978-0-7695-3728-3.