Eliminar un nodo de un clúster Proxmox VE sin reinstalar
En el artículo Crear un clúster a partir de dos servidores Proxmox explicábamos que, básicamente, un clúster es un conjunto de ordenadores que colaboran para ofrecer una funcionalidad compartida. En ese artículo, explicábamos cómo crear un clúster a partir de dos servidores Proxmox VE independientes.
Pues bien, en el artículo de hoy explicaremos cómo realizar la operación inversa. Es decir, cómo separar un nodo de un clúster al que se encuentra vinculado.
Antes de comenzar
Como es lógico, lo primero que necesitaremos serán un clúster correctamente construido y funcional. Esto es lo que aprendimos a realizar en el artículo mencionad arriba.
Si necesitas ayuda con otras tareas relacionadas con Proxmox VE, puedes consultar los artículos publicados en SomeBooks.es sobre el tema.
Separar el nodo del clúster sin necesidad de reinstalar
Antes de continuar, debes tener en cuenta que, cualquier fallo durante la puesta en práctica del artículo, podría derivar en una perdida irreparable de tus datos. Una buena idea es realizar una copia de seguridad de toda la instalación.
Otra precaución importante será evitar que el nodo que estamos a punto de separar, siga compartiendo ningún medio de almacenamiento con el clúster después del proceso. Esto haría que los mecanismos de bloqueo y la asignación de identificadores para las nuevas máquinas virtuales, dejaran de funcionar correctamente.
Lo ideal es establecer un nuevo medio de almacenamiento exclusivo para el nodo, donde llevar cualquier dato o máquina virtual que se encuentre ubicada en el almacenamiento compartido del clúster.
Una vez resuelto este aspecto… Comienza el rock and roll.
Paso 1: Detener los servicios
Lo primero será abrir la página de administración de Proxmox VE desde el ordenador cliente que usemos habitualmente para hacerlo. Y lo haremos empleando la dirección IP del nodo que pretendemos separar.
A continuación, haremos clic en el panel izquierdo sobre dicho nodo y, en el panel central, elegiremos la opción Shell.
Una vez que nos encontremos en la terminal del nodo, lo primero será detener el servicio que gestiona el clúster. Lo haremos con el siguiente comando:
systemctl stop pve-cluster
A continuación, detendremos también el servicio que se encarga de la comunicación entre los nodos del clúster:
systemctl stop corosync
Y para que todo siga funcionando, iniciamos el sistema de archivos del clúster, pero de forma local. Algo que conseguiremos aplicando el siguiente comando:
pmxcfs -l
Paso 2: Eliminar archivos
A continuación, borraremos el archivo de configuración de corosync, que se encuentra en /etc/pve:
rm /etc/pve/corosync.conf
Y eliminamos también la carpeta con todos sus archivos:
rm -r /etc/corosync/*
Paso 3: Iniciar el sistema de archivos en modo normal
Más arriba, hemos iniciado el sistema de archivos del clúster en modo local, pero ya estamos listos para devolverlo a la normalidad. Y para lograrlo, comenzaremos deteniendo el proceso que hemos iniciado antes:
killall pmxcfs
Si ahora iniciamos el servicio pve-cluster, también se iniciará el sistema de archivos, y todo volverá a la normalidad:
systemctl start pve-cluster
Con esto, prácticamente habremos terminado la tarea. Ahora, el nodo está completamente separado del clúster. De hecho, podemos comprobarlo fácilmente actualizando la ventana del navegador.
Veremos que ahora, en el panel izquierdo solo aparece el nodo en el que nos encontramos. Además, si en el panel central elegimos la opción Clúster, comprobaremos que no existe ningún clúster pare este nodo.
Ajustes en el clúster
Hasta el momento, hemos visto el mundo desde la perspectiva del nodo que se independiza, pero, ¿qué pasa con el resto del clúster que teníamos? Pues, básicamente, que detectará la pérdida del nodo y nos lo hará saber.
Para comprobarlo, basta con abrir una nueva pestaña en el navegador que hemos venido utilizando, y navegar hasta la dirección del otro nodo.
Comprobaremos que aquí aún aparece el nodo que hemos separado.
Para resolverlo, comenzaremos eligiendo el nodo que aun permanece en el clúster y, seleccionando en el panel central su terminal.
Una vez en ella, tratamos de eliminar el nodo separado, usando el siguiente comando:
pvecm delnode somebooks-02
Puede que, como a mí, el comando te devuelva un error avisando de que no están presentes todos los nodos. Para solventarlo, basta con indicarle al clúster que ahora hay un nodo menos. Lo hacemos con el siguiente comando:
pvecm expected 1
Después, volvemos a tratar de eliminar el nodo:
pvecm delnode somebooks-02
Si ahora actualizamos la ventana del navegador…
Ahora, un poco de limpieza
Ya casi hemos terminado. Solo nos queda asegurarnos de que ya no quedan restos de la relación entre el nodo que hemos separado y el clúster que aún sigue existiendo (aunque en nuestro ejemplo, solo mantiene un nodo).
Comenzaremos por el clúster
Si consultamos el contenido de la carpeta donde el clúster guarda información sobre los nodos que lo forman (/etc/pve/nodes), comprobaremos que aún aparece el nodo antiguo. Para ello, basta con usar el siguiente comando:
ls -l /etc/pve/nodes
Para eliminar la información sobre el nodo, podemos ejecutar algo así:
rm -rf /etc/pve/nodes/somebooks-02
Asegúrate de escribir el nombre del nodo correcto porque, de lo contrario, el clúster quedará inconsistente.
Otro aspecto del que debemos preocuparnos, son las claves SSH, que aún permiten conectarse a los nodos entre ellos mediante su clave pública. Estas claves se encuentran en el archivo authorized_key, y podemos ver su contenido escribiendo lo siguiente:
cat /etc/pve/priv/authorized_keys
Como ves en la imagen, tenemos dos claves: la del nodo actual y la del nodo que ya hemos separado (que hemos marcado en verde). Aunque ambas son bastante largas, en realidad cada una ocupa solo una línea. Es decir, en el archivo solo hay un salto de línea al final de cada clave, lo que hará que la editarlo en nano, solo veamos dos líneas y parecerá que se trata de un contenido diferente. Veamos a qué me refiero:
nano /etc/pve/priv/authorized_keys
Como te decía, en el área de trabajo del editor vemos una línea por cada clave. Como tratamos de eliminar la segunda, nos desplazamos con el cursor hasta ella.
Una vez conseguido, pulsamos Ctrl + X para salir y nos aseguramos de guardar los cambios.
Y ahora, en el nodo separado
Ya casi estamos. Solo nos queda hacer otro poco de limpieza en el nodo que hemos separado.
Comenzaremos eliminando todos los archivos que aún quedan del clúster:
rm /var/lib/corosync/*
Como en el apartado anterior, podemos consultar la carpeta donde se guarda la información sobre los nodos que forman el clúster (/etc/pve/nodes). Para ello, basta con usar el siguiente comando:
ls /etc/pve/nodes
Por lo tanto, procedemos a eliminar la información del nodo que aún forma parte del clúster:
rm -rf /etc/pve/nodes/somebooks
Por último, también aquí debemos eliminar las claves SSH para impedir la conexión entre los nodos usando su clave pública.
Como antes, comenzamos comprobando el contenido del archivo authorized_key:
cat /etc/pve/priv/authorized_keys
De nuevo, editamos el archivo:
nano /etc/pve/priv/authorized_keys
Y cuando hayamos acabado, cerramos el editor asegurándonos de guardar los cambios.
Y con esto, hemos terminado la tarea de hoy. Espero que te resulte útil.