Entendiendo la alta disponibilidad (HA) en SUSE Linux

La alta disponibilidad y la continuidad del negocio son cruciales para mantener las aplicaciones y servicios siempre operativos. Los clústeres de alta disponibilidad permiten que los servicios críticos sigan funcionando, incluso si fallan servidores o componentes de hardware. SUSE Linux ofrece un conjunto de herramientas robustas para la creación y gestión de estos clústeres. En este artículo, exploramos la alta disponibilidad en SUSE Linux: el estado actual de los clústeres en SUSE Linux, con un enfoque en tecnologías clave como Pacemaker, Corosync, DRBD y otras. Estas, con pequeñas diferencias están disponibles en x86 y en ppc64le.

Pacemaker: el cerebro del clúster

Pacemaker es el motor que gestiona los clústeres de alta disponibilidad en SUSE Linux. Su función principal es administrar los recursos del clúster, asegurando que los servicios críticos estén operativos y se recuperen rápidamente en caso de fallo. Pacemaker monitoriza continuamente los recursos (bases de datos, servicios web, sistemas de archivos, etc.) y, si detecta un problema, migra esos recursos a otros nodos del clúster para mantenerlos en funcionamiento.

Pacemaker destaca por su flexibilidad y capacidad para gestionar una amplia variedad de recursos. Desde servicios sencillos hasta sistemas distribuidos más complejos, es capaz de manejar la mayoría de los escenarios de alta disponibilidad que una empresa puede necesitar.

Corosync: el sistema nervioso del clúster

Corosync es responsable de la comunicación entre los nodos del clúster. Asegura que todos los nodos tengan la misma visión del estado del clúster en todo momento, lo cual es esencial para la toma de decisiones coordinadas. También gestiona el quorum, que determina si hay suficientes nodos activos para que el clúster opere de manera segura. Si se pierde el quorum, se pueden tomar medidas para evitar la pérdida de datos o incluso la caída del servicio.

DRBD: la columna vertebral de los datos

DRBD (Distributed Replicated Block Device) es una solución de replicación de almacenamiento a nivel de bloques que replica datos entre nodos en tiempo real. Con DRBD, los datos de un servidor se replican en otro servidor casi instantáneamente, creando una copia exacta. Esto es especialmente útil en escenarios donde es crucial que los datos críticos estén siempre disponibles, incluso si un nodo falla. Combinado con Pacemaker, DRBD permite que los servicios sigan operando con acceso a los mismos datos, aunque estén en diferentes nodos.

Otras tecnologías clave en clústeres SUSE Linux

Además de Pacemaker, Corosync y DRBD, existen otras tecnologías esenciales para construir clústeres robustos en SUSE Linux:

  • SBD (STONITH Block Device): SBD es una herramienta de fencing que aísla un nodo que no se comporta correctamente para evitar que cause problemas en el clúster. Esto se logra utilizando un dispositivo de almacenamiento compartido que los nodos usan para comunicarse su estado.
  • OCF (Open Cluster Framework): Los scripts OCF son la base de los recursos gestionados por Pacemaker. Definen cómo iniciar, detener y verificar el estado de un recurso, proporcionando la flexibilidad necesaria para integrar una amplia gama de servicios en el clúster.
  • Csync2: Es una herramienta para la sincronización de archivos entre nodos en un clúster. Asegura que los archivos de configuración y otros datos críticos estén siempre actualizados en todos los nodos.

Estado actual y tendencias futuras

Los clústeres en SUSE Linux han madurado y se están adaptando a nuevas demandas empresariales. Con la adopción creciente de entornos de contenedores y con partes en las diferentes nubes, los clústeres en SUSE Linux están evolucionando para integrarse mejor con ellos. Esto incluye soporte mejorado para la orquestación de contenedores y aplicaciones distribuidas que requieren alta disponibilidad más allá de replicar dos discos por DRBD y manter una IP virtual con vida :)

Aún así, en la actualidad, la combinación de Pacemaker, Corosync, DRBD y otras herramientas proporciona una base sólida para crear clústeres de alta disponibilidad que pueden escalar y adaptarse a las necesidades de SAP HANA y otras soluciones que requieren una alta cuando no total disponibilidad. Si necesitas ayuda, en SIXE te ayudamos.

Cheatsheet para la creación y administración de clústeres con Pacemaker en SUSE Linux

Aquí tienes los comandos más habituales para crear y administrar clústeres con Pacemaker en SUSE Linux.

TareaComando / Descripción
Instalación de paquetes
Instalar Pacemaker y Corosynczypper install -y pacemaker corosync crmsh
Configuración básica
Configurar CorosyncEdita /etc/corosync/corosync.conf para definir el transporte, las interfaces y la red.
Iniciar los serviciossystemctl start corosync && systemctl start pacemaker
Habilitar los servicios en el arranquesystemctl enable corosync && systemctl enable pacemaker
Administración del clúster
Ver el estado del clústercrm status
Listar los nodoscrm_node -l
Añadir un nodo (se ejecuta en el nodo nuevo)crm cluster join -c <nodo_existente>
Quitar un nodocrm cluster remove <nombre_nodo>
Ver los logs del clústerjournalctl -u pacemaker -u corosync
Configuración de recursos
Crear un recursocrm configure primitive <nombre_recurso> <agente> params <parametros>
Eliminar un recursocrm configure delete <nombre_recurso>
Modificar un recursocrm configure edit <nombre_recurso>
Mostrar la configuración completa del clústercrm configure show
Grupos y orden de arranque
Crear un grupo de recursoscrm configure group <nombre_grupo> <recurso1> <recurso2> ...
Definir el orden de arranquecrm configure order <nombre_orden> Mandatory: <recurso1> <recurso2>
Restricciones
Mantener dos recursos en el mismo nodocrm configure colocation <nombre_restriccion> inf: <recurso1> <recurso2>
Preferir un nodo para un recursocrm configure location <nombre_restriccion> <recurso> <puntuacion>: <nodo>
Failover y recuperación
Mover un recurso a otro nodocrm resource move <nombre_recurso> <nodo>
Quitar la restricción que deja el movimientocrm resource clear <nombre_recurso>
Limpiar los fallos de un recursocrm resource cleanup <nombre_recurso>
Dejar de gestionar un recurso (mantenimiento)crm resource unmanage <nombre_recurso>
Volver a gestionar un recursocrm resource manage <nombre_recurso>
Configuración avanzada
Qué hacer si se pierde el quorumcrm configure property no-quorum-policy=<stop|freeze|ignore>
Configurar el fencing con SBDcrm configure primitive stonith-sbd stonith:external/sbd params pcmk_delay_max=<tiempo>
Configurar timeouts y monitorización de un recursocrm configure primitive <nombre_recurso> <agente> op start timeout=<tiempo> op monitor interval=<intervalo> timeout=<tiempo>
Validación y pruebas
Validar la configuración del clústercrm_verify --live-check
Simular la próxima transición del clústercrm_simulate --live-check --simulate
Políticas
Fijar la stickiness por defectocrm configure rsc_defaults resource-stickiness=<valor>
Fijar la prioridad de un recursocrm resource meta <nombre_recurso> set priority <valor>
Parada y arranque del clúster
Parar todo el clústercrm cluster stop --all
Arrancar todo el clústercrm cluster start --all

Si tienes que montar o revisar un clúster así, lo hacemos con nuestro servicio de implantación y soporte de Pacemaker. Si ya se ha caído en producción, el soporte urgente 24/7 te contacta en menos de 15 minutos.