Buscar en SafeKit

Alta disponibilidad KVM con SafeKit: instale el módulo kvm.safe para la conmutación por error

Guía de instalación rápida de alta disponibilidad para KVM

Esta guía explica cómo configurar un clúster mirror para KVM utilizando SafeKit, garantizando la conmutación por error automática y la replicación síncrona sin necesidad de almacenamiento compartido.

Para obtener ayuda, puedes usar SafeKit AI 🤖.

1. Descripción general

  • Arquitectura: utiliza un sistema de dos nodos (primario/secundario).
  • Protección de datos: implementa la replicación síncrona en tiempo real para una pérdida de datos nula (RPO = 0).

2. Instalación

  • Software: Instale el motor SafeKit en ambos servidores.
  • Módulo: Descargue el módulo de aplicación kvm.safe preconfigurado.

3. Configuración

  • Consola web: configure las carpetas específicas que contienen los archivos KVM.
  • Supervisión: Inicie la supervisión y protección de la aplicación KVM.

Limitaciones de alta disponibilidad SafeKit

Límite / RequisitoMotivo e impactoAlternativa recomendada
Tamaño de la replicación: unos pocos TBTiempo de resincronización tras un fallo (paso 3):
• Red de 1 Gb/s ≈ 3 horas/TB
• Red de 10 Gb/s ≈ 1 hora/TB (dependiendo del rendimiento de escritura del disco)
• Utilizar almacenamiento compartido externo (más caro, más complejo).
Número de archivos: < 1 000 000• Rendimiento del tiempo de resincronización después de una falla (paso 3).
• Tiempo necesario para comparar cada archivo entre ambos nodos.
• Coloque los numerosos archivos que se van a replicar en un disco duro virtual o en una máquina virtual.
• En este caso, solo se replicarán y resincronizarán los archivos que representan el disco duro virtual o la máquina virtual.
Capacidad de conmutación por error: ≤ 32 máquinas virtuales• Cada máquina virtual se ejecuta en un módulo mirror independiente.
• Máximo de 32 módulos mirror que se ejecutan en el mismo clúster.
• Utilizar un almacenamiento compartido externo y otra solución de clúster de máquinas virtuales (más cara y más compleja).
Arquitectura de red: red LAN/VLAN entre sitios remotos• Conmutación por error automática de la dirección IP virtual con 2 nodos en la misma subred.
• Buen ancho de banda para la resincronización (paso 3).
• Baja latencia para la replicación sincrónica: normalmente < 5 ms RTT; los valores más altos deben validarse con la tasa de escritura de la aplicación.
• Si los dos nodos están en subredes diferentes (común en la nube), utilice otras opciones de reenvío: un balanceador de carga, las CLI del proveedor de la nube, BGP o la redirección de DNS.
• Utilice soluciones de copia de seguridad con replicación asíncrona para redes con alta latencia.

Descripción general de la solución SafeKit/KVM

La solución se describe aquí: 💡 Alta disponibilidad sencilla Linux KVM sin almacenamiento compartido

Instalación de la solución SafeKit/KVM en Linux (kvm.safe)

Requisitos previos

  • KVM instalado en 2 nodos Linux.
  • Aplicaciones críticas instaladas en una o varias máquinas virtuales.
  • Máximo de 32 máquinas virtuales por host KVM.
  • Los datos replicados totales se limitan a unos pocos terabytes; más allá de esto, el tiempo de resincronización se vuelve significativo.
  • Interconexión mínima de 1 Gb/s entre nodos (se recomiendan 10 Gb/s para una resincronización más rápida).
  • La conmutación por error de IP requiere que ambos nodos estén en la misma LAN o LAN extendida (L2); las redes L3 enrutadas no son compatibles (excepto con balanceadores de carga en la nube 🛠️).

Instalación de paquetes en Linux

  • Instale la versión gratuita de SafeKit en 2 nodos Linux. Nota: la versión de prueba gratuita incluye todas las funciones SafeKit. Al final del período de prueba, puede activar las claves de licencia permanentes sin desinstalar el paquete.
  • Después de descargar el paquete safekit_xx.bin, ejecútelo para extraer el rpm y el script safekitinstall y, a continuación, ejecute el script safekitinstall
  • Responda sí a la configuración automática del cortafuegos
  • Establezca la contraseña para la consola web y el usuario predeterminado admin. Establezca la misma contraseña en todos los nodos.

Descargar SafeKit (Linux) >

Instalación del módulo en Linux

  • Descargue el módulo kvm.safe.
    El módulo es gratuito. Contiene los archivos userconfig.xml y los scripts de reinicio.
  • Coloque kvm.safe en /opt/safekit/Application_Modules/generic/.

Descargar kvm.safe (Linux) >

Configuración paso a paso de la solución SafeKit/KVM

⚠️ La configuración KVM se presenta con una máquina virtual denominada VM1 y contiene la aplicación que se reiniciará en caso de error.

⚠️ Tendrás que repetir esta configuración para todas las máquinas virtuales que quieras replicar y reiniciar.

1. Requisitos previos

La imagen de la máquina virtual VM1 se encuentra en el archivo /var/lib/libvirt/images/vm1.qcow2. Antes de configurar SafeKit, debe realizar la siguiente configuración para colocar la máquina virtual en un directorio específico de vm1 que será replicado por SafeKit.

En el nodo 1:

  • Detener vm1:

    virsh shutdown vm1
    
  • Cree un directorio vm1/:

    mkdir -p /var/lib/libvirt/images/vm1/
    
  • Copie la imagen vm1 a la nueva ubicación:

    cp -a /var/lib/libvirt/images/vm1.qcow2 /var/lib/libvirt/images/vm1/
    

La imagen original vm1 puede eliminarse tan pronto como las pruebas con la nueva ubicación se realicen correctamente.

  • Edite el archivo de configuración vm1:

    EDITOR=vi virsh edit vm1
    

Y cambie la línea:

    <source file='/var/lib/libvirt/images/vm1.qcow2'>

por:

    <source file='/var/lib/libvirt/images/vm1/vm1.qcow2'>
  • Establezca la opción de caché en “ninguna” en el mismo archivo, para la integridad de los datos en caso de fallo:

    <disk type='file' device='disk'> <driver name='qemu' type='qcow2' **cache='none'** />
    
  • Cierre el archivo de configuración vm1

  • Deshabilitar el inicio automático de vm1:

    virsh autostart vm1 --disable
    
  • Cree un archivo de configuración vm1.xml para vm1:

    virsh dumpxml vm1 > vm1.xml
    

En el nodo 2:

  • Copie el archivo de configuración vm1.xml del nodo 1. Nota: cada vez que se cambie la configuración vm1 en el nodo 1, deberá volver a aplicar la nueva configuración en el nodo 2.

  • Cree la vm1, pero no la inicie:

    virsh define vm1.xml
    
  • Deshabilitar el inicio automático vm1:

    virsh autostart vm1 --disable
    
  • Cree el directorio para la ubicación de la imagen:

    mkdir -p /var/lib/libvirt/images/vm1/
    

2. Inicie la consola SafeKit

  • Inicie la consola web en un navegador en un nodo del clúster conectándose a http://localhost:9010.
  • Introduzca admin como nombre de usuario y la contraseña definida durante la instalación.

También puede ejecutar la consola en un navegador en una estación de trabajo externa al clúster.

⚠️ La configuración de SafeKit se realiza en ambos nodos desde un único navegador.

ℹ️ Para proteger la consola web, consulte 🛠️ 11. Protección del servicio web SafeKit en la Guía del usuario.

Inicie la consola web SafeKit para configurar el clúster KVM

3. Configurar las direcciones de los nodos

  • Introduzca las direcciones IP de los nodos, pulse la Tab key para comprobar la conectividad y rellene los nombres de los nodos. Si node1 o node2 tienen un color rojo, compruebe la conectividad del navegador con ambos nodos y compruebe el cortafuegos en ambos nodos para solucionar problemas 🛠️.
  • A continuación, haga clic en Save and apply para guardar la configuración.
  • Compruebe el mensaje Success ✅ en ambos nodos.
  • Si se produce un Failure de configuración ❌ en un nodo, abra el acordeón ▼ de ese nodo y revise los mensajes. Tenga en cuenta que puede utilizar la IA SafeKit 🤖 para obtener ayuda.

ℹ️ Si lo desea, puede agregar una nueva LAN and nodes (el primer ➕) para crear un segundo latido y una red de replicación dedicada.

ℹ️ Si hace clic en Advanced configuration, se mostrará el archivo cluster.xml. Este archivo se rellena automáticamente mediante la consola y se implementa en los nodos.

Introduzca los nodos del clúster de la KVM

4. Seleccione un módulo

  • En New module, haga clic en el módulo kvm.safe.

ℹ️ En el banner azul de la parte superior, el nodo 🛜 node1 representa el nodo de conexión de la consola. Este nodo retransmite las solicitudes al node2 cuando es necesario.

ℹ️ La consola busca xxx.safe en el directorio Application_Modules/generic/ en el nodo de conexión (node1) si colocó un módulo allí durante la instalación.

Selecciona el módulo para KVM

5. Configurar el módulo

  • Elija el inicio Automatic del módulo al arrancar sin demora.
  • Normalmente, se tiene una única red Heartbeat en la que se realiza la replicación. Sin embargo, se puede definir una red privada si es necesario (añadiendo una LAN en el paso 3).
  • Introduzca en VM_PATH la ruta raíz del directorio replicado (/var/lib/libvirt/images).
  • Introduzca en VM_NAME el nombre de la máquina virtual (vm1).

Suponemos que los archivos de la VM1 están en /var/lib/libvirt/images/vm1/ (consulte los requisitos previos). Este directorio será replicado en tiempo real por SafeKit.

ℹ️ No es necesario configurar una dirección IP virtual. VM1 se reiniciará en la KVM secundaria con su dirección IP física, y esta dirección IP se redirigirá.

Introduzca los parámetros KVM

6. Verificador personalizado para detectar el mal funcionamiento de la máquina virtual

El verificador personalizado comprueba si la máquina virtual se está ejecutando (con el comando ‘virsh domstate’). Si la máquina virtual no se está ejecutando, el verificador personalizado reinicia automáticamente la máquina virtual en el mismo nodo KVM o en el otro.

  • Haga clic en Checkers / Custom (ver imagen).
  • Resource name identifica la máquina virtual con un nombre de recurso en SafeKit: custom.VM_NAME_check.
  • Con restart en Action, la máquina virtual se reinicia en el mismo nodo KVM. Después de 3 reinicios fallidos en 24 horas, el módulo SafeKit kvm se detiene en el nodo principal y se produce una conmutación por error de la máquina virtual en el nodo secundario.
  • Si configura stopstart en Action, se producirá una conmutación por error directa en el otro nodo KVM tan pronto como la máquina virtual no esté en funcionamiento.

ℹ️ Para el mantenimiento, si desea detener la máquina virtual, el verificador personalizado la reiniciará automáticamente. Para evitarlo, puede suspender temporalmente el verificador 🖼️. O puede eliminarlo borrando la línea de configuración en la consola.

Introduzca los parámetros del verificador personalizado KVM

7. Editar guiones (opcional)

  • No edite los guiones.

8. Cifrado de la comunicación (opcional)

  • Mantenga el cifrado de la comunicación entre los nodos.

Cifrado de la comunicación del módulo de la KVM

9. Guardar y aplicar

  • Save and apply la configuración y los scripts en ambos nodos.

Guarda y aplica la configuración del módulo KVM

10. Verifique que la configuración se haya realizado correctamente

  • Compruebe el mensaje Success ✅ en ambos nodos y haga clic en Monitor modules.
  • Si se produce un Failure de configuración ❌ en un nodo, abra el acordeón ▼ de ese nodo y revise los mensajes. Tenga en cuenta que puede utilizar la IA SafeKit 🤖 para obtener ayuda.

Compruebe que la configuración del módulo KVM se ha realizado correctamente

11. Inicie el nodo con los datos actualizados

  • Si el nodo 1 tiene el directorio replicado actualizado para vm1/, selecciónelo y ⋯ Force start ▶ As primary.

Cuando se inicie el nodo 2, todos los datos se copiarán del nodo 1 al nodo 2.

⚠️ Si elige la opción incorrecta, corre el riesgo de sincronizar datos obsoletos en ambos nodos.

⚠️ También se supone que VM1 está detenida en el nodo 1 para que SafeKit instale los mecanismos de replicación y luego inicie VM1 en el script start_prim.

⚠️ Utilice Start para los inicios posteriores: SafeKit conserva el servidor más actualizado. Iniciar As primary es un inicio especial la primera vez o durante operaciones excepcionales.

Inicie el nodo KVM como primario con los datos actualizados

12. Espere a que la transición sea a ALONE (verde)

  • El nodo 1 debe alcanzar el estado ALONE (verde), lo que significa que el script start_prim se ha ejecutado en el nodo 1.

⚠️ Si no se alcanza ALONE (verde) o si no se inicia VM1, analice el motivo con el registro del módulo 🖼️ del nodo 1.

  • Haga clic en el icono de registro 🔍 del node1 para abrir el registro del módulo y buscar mensajes de error, como un verificador que detecta un error y detiene el módulo.
  • Haga clic en start_prim en el registro: los mensajes de salida del script se muestran a la derecha y se pueden detectar errores como VM1 iniciado incorrectamente.
  • Utiliza la IA SafeKit 🤖 para obtener ayuda con los mensajes de registro.

⚠️ Si el clúster está en estado WAIT (red) not uptodate, STOP (red) not uptodate, detenga el nodo WAIT y fuerce su inicio como primario 🖼️.

El primer nodo KVM se inicia como primario y se convierte en ALONE

13. Iniciar nodo 2

  • ⋯ Start el nodo 2 con su menú contextual.
  • Espere al SECOND estado (verde).

ℹ️

  • El nodo 2 permanece en el SECOND estado (naranja) mientras se resincronizan los directorios replicados (copia del nodo 1 al nodo 2).
  • Esto puede tardar un tiempo, dependiendo del tamaño de los archivos que se van a resincronizar en los directorios replicados y del ancho de banda de la red.
  • Para ver el progreso de la copia, consulte el registro del módulo 🖼️ y los recursos de replicación 🖼️ del nodo 2. Utilice la IA SafeKit 🤖 para obtener ayuda con los mensajes de registro.

Inicie el nodo 2 KVM

14. Compruebe que el clúster está operativo

  • Compruebe que el clúster esté en verde/verde con VM1 ejecutándose en el nodo PRIM y no en el nodo SECOND.

En este estado, solo los cambios dentro de los archivos se replican en tiempo real.

El nodo KVM 2 es SECOND (verde)

15. Pruebas

  • Detenga el nodo PRIM desplazándose hacia abajo en su menú contextual y haciendo clic en Stop.
  • Verifique que haya una conmutación por error en el SECOND nodo, que debería quedar ALONE (en verde).
  • Compruebe con las herramientas KVM que VM1 se está ejecutando en el nodo 2.

⚠️ Si no se alcanza ALONE (verde) en node2 o si no se inicia VM1, analice el motivo con el registro del módulo 🖼️ del nodo 2.

  • Haga clic en el icono de registro 🔍 del node2 para abrir el registro del módulo y buscar mensajes de error, como un verificador que detecta un error y detiene el módulo.
  • Haga clic en start_prim en el registro: los mensajes de salida del script se muestran a la derecha y se pueden detectar errores como VM1 iniciado incorrectamente.
  • Utiliza la IA SafeKit 🤖 para obtener ayuda con los mensajes de registro.

⚠️

  • Si todo está bien, inicie un inicio en node1, que resincronizará los directorios replicados desde node2.
  • Si las cosas van mal, detenga node2 y fuerce al nodo 1 a iniciarse como primario 🖼️, que se reiniciará con sus datos localmente saludables en el momento de la detención.

ℹ️ Ten en cuenta que tienes una 🕒 línea de tiempo 🖼️ que puede ser útil para entender lo que sucede en el clúster.

Detenga el módulo KVM en el servidor PRIM

16. Si es necesario, configure un verificador de división de clúster

  • Consulte ¿Cuáles son los diferentes escenarios en caso de aislamiento de red en un clúster? para saber si necesita configurar un verificador de división de clúster.
  • Vaya a la configuración del módulo y haga clic en Checkers / Splitbrain (ver imagen) para editar los parámetros de splitbrain.
  • Save and apply la nueva configuración para volver a implementarla en ambos nodos (el módulo debe detenerse en ambos nodos para guardar y aplicar).

Parámetros:

  • Resource name identifica el testigo con un nombre de recurso: splitbrain.witness. Puede cambiar este valor para identificar el testigo.
  • Witness address es el argumento para un ping cuando un nodo pasa de PRIM a ALONE o de SECOND a ALONE. Cambie este valor con la IP del testigo (un elemento robusto, normalmente un router).
  • Nota: puede establecer varias direcciones IP separadas por espacios en blanco. Tenga en cuenta que las direcciones IP deben ser accesibles desde un nodo, pero no desde el otro en caso de aislamiento de la red.

Introduzca los parámetros de división de clúster KVM

17. Replicación de instantáneas

El directorio que contiene los archivos XML de la instantánea es:

/var/lib/libvirt/qemu/snapshot/%VM_NAME%

donde VM_NAME es el nombre de la máquina virtual (vm1).

Nota: Si no se ha creado ninguna instantánea, cree una para generar el directorio (de lo contrario, la configuración SafeKit fallará).

Para replicarlo:

  • En la configuración del módulo, haga clic en Advanced Configuration (ver imagen) para editar userconfig.xml.

  • Inserte las siguientes líneas en la sección <rfs> de userconfig.xml:

    <replicated dir="/var/lib/libvirt/qemu/snapshot/%VM_NAME%" mode="read_only"> </replicated>
    
  • Save and apply la nueva configuración para volver a implementar el archivo userconfig.xml modificado en ambos nodos (el módulo debe detenerse en ambos nodos para guardar y aplicar).

  • Cree instantáneas en el nodo PRIM a través de virt-manager o de una línea de comandos:

    virsh snapshot-create-as vm1 snapshot-name
    

Nota: al crear una instantánea con una línea de comandos, debe actualizar la vista de instantáneas en virt-manager.

Las instantáneas creadas en el nodo PRIM están operativas en el nodo 2 después de la conmutación por error, pero no aparecen en la lista del nodo 2.

  • Para importar una instantánea en el nodo 2, debe ejecutar el comando:

    virsh snapshot-create --redefine vm1 /var/lib/libvirt/qemu/snapshot/vm1/snapshot-name
    
  • La línea de comandos para listar todas las instantáneas de vm1 es:

    virsh snapshot-list vm1
    

Introduzca los parámetros KVM

18. Soporte

  • Para obtener soporte, haga 2 Snapshots SafeKit (2 archivos .zip), una para cada nodo.

ℹ️ Más información sobre el soporte aquí.

Toma capturas de pantalla de la KVM para obtener ayuda

Demostración de una solución de alta disponibilidad a nivel de máquina virtual

Vídeo SafeKit: Agrupación en clúster a nivel de máquina virtual con Hyper-V (5:15)

En este vídeo, descubra cómo SafeKit implementa la alta disponibilidad para Hyper-V sin la complejidad de una SAN. Aprenda a configurar la replicación de máquinas virtuales entre dos nodos para garantizar una conmutación por error sin interrupciones para sus cargas de trabajo virtualizadas críticas. Aunque esta demostración utiliza Hyper-V en Windows, la solución funciona de forma idéntica con KVM en Linux.

Capítulos

  1. 🎬 Descripción general de la arquitectura: 2 nodos Hyper-V y 2 máquinas virtuales (0:49)
  2. 🎬 Configuración del clúster y de los módulos hyperv.safe (1:59)
  3. 🎬 Prueba en vivo: replicación, migración y conmutación por error automática de máquinas virtuales en caso de fallo (2:26)

Implementación paso a paso

🔍 Explora SafeKit

Encuentre información sobre las características, arquitecturas, vídeos, documentación y la prueba gratuita de SafeKit.

RecursoDescripciónEnlace
Características principalesDescubra por qué SafeKit es una solución de alta disponibilidad sencilla y rentable.Descubre las características clave
Casos de usoDescubra cómo SafeKit mantiene disponibles las aplicaciones y la infraestructura críticas.Explora los casos de uso
Modelo de implementaciónSafeKit proporciona alta disponibilidad sin necesidad de una SAN o almacenamiento compartido.Explore el modelo de implementación
Estrategias de alta disponibilidadCompare la alta disponibilidad de las máquinas virtuales con la alta disponibilidad de las aplicaciones.Compare las dos estrategias
Especificaciones técnicasCompruebe los requisitos técnicos y las limitaciones de los clústeres de SafeKit.Lea las especificaciones técnicas
VídeosVea demostraciones de la configuración de SafeKit y de la conmutación por error automática.Mira los vídeos técnicos
ArquitecturaAprenda cómo el clúster mirror replica archivos en tiempo real y gestiona la conmutación por error.Explora la arquitectura Mirror
ArquitecturaDescubra cómo el clúster farm equilibra el tráfico de la red y gestiona la conmutación por error.Explora la arquitectura Farm
Comparación de productosCompare SafeKit con los clústeres tradicionales de alta disponibilidad.Compare las soluciones
Recursos técnicosEncuentre la documentación técnica, descargue SafeKit y acceda a la versión de prueba gratuita.Acceda a la documentación y a la prueba gratuita
Módulos de aplicaciónUtilice los módulos SafeKit preconfigurados para configurar la alta disponibilidad de sus aplicaciones.Explora los módulos de la aplicación
SafeKit AI Chat SafeKit AI