IT post header

Cluster de dos nodos en Proxmox VE con Raspberry Pi como QDevice

Para poder usar la función de Alta Disponibilidad (High Availability) de Proxmox VE con garantías de consistencia necesitamos un numero impar de nodos (al menos 3) en el clúster, pero en mi laboratorio casero solo dispongo de dos nodos.

Para solucionar esto usaremos lo que se llama un QDevice, en la nomenclatura de Corosync, con el fin de romper empates y mantener el quórum en el clúster. Esto permitirá que nuestro hipervisor funcione en condiciones de fallo que de otra forma causarían interrupciones. El uso de un QDevice no se recomienda en entornos de producción. Para nuestro Homelab, vamos a utilizar una Raspberry Pi como QDevice.

Entendiendo los beneficios

Proxmox VE utiliza el motor de clúster Corosync en segundo plano para comunicar los cambios de configuración entre los nodos del clúster.

Para mantener la sincronización entre los nodos, un requisito de Proxmox VE es que se deben agregar al menos tres nodos al clúster. Es posible que esto no sea factible en un laboratorio doméstico o una instalación de pruebas. En configuraciones de dos nodos, lo que sucede es que ambos nodos deben estar siempre operativos para que se realice cualquier cambio, como iniciar, detener o crear máquinas virtuales y contenedores.

Para solucionar esto, podemos usar un QDevice cuyo único propósito es resolver disputas durante los momentos de interrupción de uno de los nodos. Este QDevice no será un componente visible del clúster de Proxmox VE y no puede ejecutar ninguna máquina virtual o contenedor en él.

Algunos beneficios de agregar un QDevice a un clúster son:

  • Permitir modificaciones en el hipervisor en ejecución durante el tiempo de inactividad del segundo nodo en una implementación de dos nodos.
  • Resolver disputas en implementaciones cuando el número de nodos es par.

Crear el QDevice

Para crear el QDevice he utilizado una Rasberry Pi 3 Model B y la distribución Raspbian Lite (aquí podéis ver como instalarla). Mi clúster Proxmox VE está ejecutando la versión 6.3-6 que utiliza Corosync 3.

Instalando las dependencias en Raspberry Pi

Ejecutaremos los siguientes comandos en nuestra Raspberry Pi:

sudo apt-get update
sudo apt install corosync-qnetd
sudo apt install corosync-qdevice

En mi caso la instalación de las dependencias ha fallado varias veces por fallos de conexión con el repositorio raspbian.raspberrypi.org. Si os pasa lo mismo podéis elegir uno nuevo de esta lista (https://www.raspbian.org/RaspbianMirrors/) y reemplazar raspbian.raspberrypi.org dentro del archivo /etc/apt/sources.list

También necesitaremos habilitar el acceso SSH a la Raspberry Pi para el usuario root. Para ello haremos lo siguiente:

  • Crearemos un password para el usuario root si aún no lo hemos hecho:
sudo passwd root
  • Editaremos el archivo /etc/ssh/sshd_config y añadiremos la línea PermitRootLogin Yes
  • Reiniciaremos la Raspberry Pi y comprobaremos que nos podemos conectar a ella por SSH utilizando el usuario root

Con esto nuestra Raspberry Pi ya estaría preparada para unirse al clúster.

Crear un Clúster en Proxmox VE

Importante: El nodo secundario que vamos a añadir al clúster no puede tener ninguna máquina virtual ni container en él, así que si ya tenéis alguna de estas cosas en ese nodo tendréis que hacer una copia de seguridad, eliminarla del nodo y restaurar la copia de seguridad después de crear el clúster.

Para crear el clúster iniciaremos sesión en la interfaz web de la máquina que queremos tener como primaria en el clúster y haremos clic en «Datacenter», después en «Cluster» y por último en «Create Cluster».

Al hacer esto aparecerá una nueva ventana donde tendremos que elegir un nombre para el clúster y elegir la interfaz de red para la comunicación entre nodos del clúster.

Esta interfaz debería de ser siempre dedicada, en una subred aislada y solamente para la comunicación entre nodos del clúster y no la interfaz de red usada para la comunicación de las máquinas virtuales pero ya que mis nodos no disponen de una interfaz dedicada usaré la única de la que dispongo.

Pulsaremos el botón «Create» and y nuestro clúster ya estará creado, así de sencillo. Ahora veremos que nuestra pantalla Cluster ha cambiado un poco y nos muestra el nombre del clúster además de indicarnos que tiene un nodo.

Ahora pulsaremos sobre «Join Information» y aparecerá una ventana emergente con la información que necesitamos para añadir otros nodos al clúster.

Pulsaremos el botón «Copy Information» e iniciaremos sesión en la interfaz web del segundo nodo que queremos añadir al clúster. haremos clic en «Datacenter», después en «Cluster» y por último en «Join Cluster».

Aparecerá una nueva ventana donde pegaremos la información que hemos copiado del nodo 1; solo nos quedará seleccionar la interfaz de red correcta, rellenar el password de administrador y hacer clic en «Join Cluster».

Después de esto perderemos la conexión con la interfaz web del nodo 2. Volveremos al nodo 1 y veremos que la lista de nodos del clúster se habrá actualizado y nos mostrará ambos nodos.

Finalizar la configuración del Clúster

Nos conectaremos al nodo 1 con nuestro cliente SSH y comprobaremos la información del clúster:

pvecm status

Podremos ver que nuestro clúster se compone de dos nodos y dos votantes, por lo que aun necesitamos añadir nuestro tercer dispositivo (la Raspberry Pi) para poder utilizar las funciones de Alta Disponibilidad.

Comenzaremos ejecutando los siguientes comandos en el nodo 1 y en el nodo 2:

apt update
apt install corosync-qdevice

Y configuraremos nuestro 3er «nodo» ejecutando lo siguiente en el nodo principal, reemplazando la IP marcada en rojo con la de vuesta Raspberry Pi. Usaremos «-f» para asegurarnos de sobrescribir cualquier configuración de quorum antigua que pueda existir en la Raspberry Pi:

pvecm qdevice setup 192.168.17.37 -f

Nos pedirá aceptar el «fingerprint» de la Raspberry Pi y también el password del usuario root en la Raspberry Pi. Ejecutará un script y debería de finalizar sin ningún error.

Para comprobar que todo ha salido correctamente ejecutaremos lo siguiente en el nodo 1:

pvecm status

Y el resultado debería de mostrarnos que nuestro clúster está formado por 2 nodos y tres dispositivos con derecho a voto para el quorum

Con esto estaría listo nuestro clúster de dos nodos con Alta Disponibilidad!

Si habéis llegado hasta aquí, muchas gracias! Si tenéis alguna pregunta no dudéis en dejarla en los comentarios y haré todo lo posible por ayudar.

Y no olvidéis suscribiros para recibir un correo cuando se publiquen nuevos artículos.

No te pierdas los nuevos post!

We don’t spam! Read more in our privacy policy

Deja un comentario

Tu dirección de correo electrónico no será publicada.