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.safepreconfigurado.
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 / Requisito | Motivo e impacto | Alternativa recomendada |
|---|---|---|
| Tamaño de la replicación: unos pocos TB | Tiempo 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.
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/.
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 vm1Cree 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 --disableCree un archivo de configuración
vm1.xmlpara vm1:virsh dumpxml vm1 > vm1.xml
En el nodo 2:
Copie el archivo de configuración
vm1.xmldel 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.xmlDeshabilitar el inicio automático vm1:
virsh autostart vm1 --disableCree 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
admincomo 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.

3. Configurar las direcciones de los nodos
- Introduzca las direcciones IP de los nodos, pulse la
Tab keypara 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 applypara guardar la configuración. - Compruebe el mensaje
Success✅ en ambos nodos. - Si se produce un
Failurede 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.

4. Seleccione un módulo
- En
New module, haga clic en el módulokvm.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.

5. Configurar el módulo
- Elija el inicio
Automaticdel módulo al arrancar sin demora. - Normalmente, se tiene una única red
Heartbeaten 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_PATHla ruta raíz del directorio replicado (/var/lib/libvirt/images). - Introduzca en
VM_NAMEel 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á.

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 nameidentifica la máquina virtual con un nombre de recurso en SafeKit:custom.VM_NAME_check.- Con
restartenAction, 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
stopstartenAction, 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.

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.

9. Guardar y aplicar
Save and applyla configuración y los scripts en ambos nodos.

10. Verifique que la configuración se haya realizado correctamente
- Compruebe el mensaje
Success✅ en ambos nodos y haga clic enMonitor modules. - Si se produce un
Failurede 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.

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.

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_primse 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
node1para 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_primen 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 🖼️.

13. Iniciar nodo 2
- ⋯
Startel 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.

14. Compruebe que el clúster está operativo
- Compruebe que el clúster esté en verde/verde con
VM1ejecutá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.

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
VM1se 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
node2para 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_primen 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.

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 applyla 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 nameidentifica el testigo con un nombre de recurso:splitbrain.witness. Puede cambiar este valor para identificar el testigo.Witness addresses 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.

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 editaruserconfig.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 applyla 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-nameLa línea de comandos para listar todas las instantáneas de vm1 es:
virsh snapshot-list vm1

18. Soporte
- Para obtener soporte, haga 2
SnapshotsSafeKit (2 archivos .zip), una para cada nodo.
ℹ️ Más información sobre el soporte aquí.

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
- 🎬 Descripción general de la arquitectura: 2 nodos Hyper-V y 2 máquinas virtuales (0:49)
- 🎬 Configuración del clúster y de los módulos hyperv.safe (1:59)
- 🎬 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
- 🛠️ Lee la guía para configurar un clúster mirror Hyper-V en Windows.
- 🛠️ Lee la guía para configurar un clúster mirror KVM en Linux.
🔍 Explora SafeKit
Encuentre información sobre las características, arquitecturas, vídeos, documentación y la prueba gratuita de SafeKit.
| Recurso | Descripción | Enlace |
|---|---|---|
| Características principales | Descubra por qué SafeKit es una solución de alta disponibilidad sencilla y rentable. | Descubre las características clave |
| Casos de uso | Descubra cómo SafeKit mantiene disponibles las aplicaciones y la infraestructura críticas. | Explora los casos de uso |
| Modelo de implementación | SafeKit proporciona alta disponibilidad sin necesidad de una SAN o almacenamiento compartido. | Explore el modelo de implementación |
| Estrategias de alta disponibilidad | Compare la alta disponibilidad de las máquinas virtuales con la alta disponibilidad de las aplicaciones. | Compare las dos estrategias |
| Especificaciones técnicas | Compruebe los requisitos técnicos y las limitaciones de los clústeres de SafeKit. | Lea las especificaciones técnicas |
| Vídeos | Vea demostraciones de la configuración de SafeKit y de la conmutación por error automática. | Mira los vídeos técnicos |
| Arquitectura | Aprenda cómo el clúster mirror replica archivos en tiempo real y gestiona la conmutación por error. | Explora la arquitectura Mirror |
| Arquitectura | Descubra 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 productos | Compare SafeKit con los clústeres tradicionales de alta disponibilidad. | Compare las soluciones |
| Recursos técnicos | Encuentre 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ón | Utilice los módulos SafeKit preconfigurados para configurar la alta disponibilidad de sus aplicaciones. | Explora los módulos de la aplicación |