1. Almacenamiento compartido o replicación de datos:
* Almacenamiento compartido: Ambas máquinas necesitan acceso a la misma ubicación de almacenamiento (por ejemplo, SAN, NAS, sistema de archivos compartidos). Esto permite que el servicio falle sin problemas en la otra máquina sin pérdida de datos porque los datos están fácilmente disponibles.
* Replicación de datos: Si el almacenamiento compartido no es factible o deseable, un mecanismo de replicación de datos (por ejemplo, DRBD, CEPH, bases de datos distribuidas con replicación) garantiza la consistencia de los datos entre las dos máquinas. Una máquina actúa como la primaria, mientras que la otra mantiene una copia sincronizada.
2. Software/marco de agrupación:
* Este software gestiona el proceso de conmutación por error, monitorea la salud de ambas máquinas y asegura que solo una máquina sirva al servicio en un momento dado. Los ejemplos incluyen:
* marcapasos/corosync: Una popular solución de agrupación de código abierto.
* Keepalived: A menudo se usa para la gestión de IP virtual (VIP).
* Heartbeat: Otra solución de código abierto para alta disponibilidad.
* Soluciones patentadas: Muchos proveedores ofrecen su propio software de agrupación adaptado a sus sistemas de hardware y operación.
3. Dirección IP virtual (VIP):
* Se asigna una sola dirección IP al servicio, administrada por el software de clúster. Esta dirección IP "flota" entre las dos máquinas. Cuando la máquina primaria falla, el software de agrupación cambia el VIP a la máquina secundaria, lo que hace que el servicio sea accesible de inmediato nuevamente.
4. Monitoreo de la salud:
* El software de agrupación monitorea continuamente la salud de ambas máquinas (uso de CPU, memoria, conectividad de red, estado del servicio). Si la máquina primaria falla la verificación de salud, se inicia el proceso de conmutación por error.
5. Mecanismo de conmutación por error:
* El software de clúster define y ejecuta el proceso de conmutación por error. Esto incluye:
* Detección de una falla de la máquina primaria.
* Apagando con gracia el servicio en la máquina fallida (si es posible).
* Iniciar el servicio en la máquina secundaria.
* Cambiar el VIP a la máquina secundaria.
6. Configuración de red:
* Ambas máquinas deben tener conectividad de red confiable. Una configuración de red redundante (por ejemplo, múltiples interfaces de red, interfaces unidas) aumenta la robustez del sistema.
7. Configuración consistente:
* Ambas máquinas deben tener una configuración idéntica para el servicio, incluidas las versiones de software, los archivos de configuración y las dependencias necesarias. Las herramientas de gestión de configuración (por ejemplo, Ansible, Puppet, Chef) pueden ayudar a mantener la consistencia.
8. Conciencia de la aplicación:
* La aplicación en sí debe ser idealmente consciente del entorno de agrupación y poder manejar la conmutación por error con gracia. Esto a menudo implica características como persistencia de sesión o mecanismos de bloqueo distribuido.
En esencia, la agrupación altamente disponible se basa en la redundancia en múltiples niveles (datos, red y el servicio en sí) administrado por un software inteligente que garantiza una conmutación sin problemas y un tiempo de inactividad mínimo.