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 (Storage-Based Death): 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 os ayudamos.
Cheatsheet para la creación y administración de clústeres con Pacemaker en SUSE Linux
Aquí te dejamos una modesta cheatsheet para ayudarte en la creación y administración de clústeres con Pacemaker en SUSE Linux. Sharing is caring!
Tarea | Comando / Descripción |
---|---|
Instalación de paquetes | |
Instalar Pacemaker y Corosync | zypper install -y pacemaker corosync crmsh |
Configuración básica | |
Configurar el archivo de Corosync | Edita /etc/corosync/corosync.conf para definir el transporte, las interfaces y la red. |
Iniciar servicios | systemctl start corosync && systemctl start pacemaker |
Habilitar servicios en el arranque | systemctl enable corosync && systemctl enable pacemaker |
Administración del clúster | |
Ver estado del clúster | crm status |
Ver detalles de los nodos | crm_node -l |
Añadir un nuevo nodo | crm node add <nombre_del_nodo> |
Expulsar un nodo | crm node remove <nombre_del_nodo> |
Ver logs del clúster | crm_mon --logfile <ruta_del_log> |
Configuración de recursos | |
Crear un recurso | crm configure primitive <nombre_recurso> <tipo_agente> params <parámetros> |
Eliminar un recurso | crm configure delete <nombre_recurso> |
Modificar un recurso | crm configure edit <nombre_recurso> |
Mostrar configuración completa del clúster | crm configure show |
Configuración de grupos y conjuntos | |
Crear un grupo de recursos | crm configure group <nombre_grupo> <recurso1> <recurso2> ... |
Crear un conjunto ordenado | crm configure colocation <nombre_conjunto> inf: <recurso1> <recurso2> |
Crear una orden de ejecución | crm configure order <orden> <recurso1> then <recurso2> |
Restricciones y colocaciones | |
Crear restricción de colocación | crm configure colocation <nombre_restricción> inf: <recurso1> <recurso2> |
Crear restricción de ubicación | crm configure location <nombre_ubicación> <recurso> <puntaje> <nodo> |
Failover y recovery | |
Forzar migración de un recurso | crm resource migrate <nombre_recurso> <nombre_nodo> |
Limpiar estado de un recurso | crm resource cleanup <nombre_recurso> |
Inhabilitar un recurso temporalmente | crm resource unmanage <nombre_recurso> |
Habilitar un recurso después de deshabilitarlo | crm resource manage <nombre_recurso> |
Configuración avanzada | |
Configurar el quorum | `crm configure property no-quorum-policy=<freeze |
Configurar fencing | crm configure primitive stonith-sbd stonith:external/sbd params pcmk_delay_max=<tiempo> |
Configurar timeout de un recurso | crm configure primitive <nombre_recurso> <tipo_agente> op start timeout=<tiempo> interval=<intervalo> |
Validación y pruebas | |
Validar configuración del clúster | crm_verify --live-check |
Simular una falla | crm_simulate --run |
Gestión de políticas | |
Configurar política de recuperación | crm configure rsc_defaults resource-stickiness=<valor> |
Configurar prioridad de recursos | crm configure resource default-resource-stickiness=<valor> |
Detención y arranque del clúster | |
Detener todo el clúster | crm cluster stop --all |
Arrancar todo el clúster | crm cluster start --all |