Proxmox: Crear cluster de dos hosts y quorum con NAS o Raspberry
Yo dispongo de 3 nodos para mi laboratorio Proxmox, pero uno de ellos, el NucExtreme9 lo uso para otros menesteres y no tiene las mismas características en discos que los otros dos, que son unos Minis Forum.
Así que cuando monto el clúster de Proxmox, no me interesa tener el tercer nodo NucExtreme dentro de dicho clúster, pero tener 3 nodos es básico para la gestión.
Lo que haré es montar 2 nodos en dicho clúster y utilizaré un equipo que esté conectado 24×7 para el Quorum. Dicho equipo puede ser una simple Raspberry, una máquina virtual o el NAS que no apago, mientras se puedan instalar unos pocos paquetes. Lo haré con este último…
DOCUMENTACION: https://pve.proxmox.com/pve-docs/chapter-pvecm.html#_corosync_external_vote_support
Crear cluster con 2 nodos Proxmox
Crearemos el cluster desde Centro de datos -> Cluster -> Crear cluster:
Y agregamos el segundo nodo, con la información de unión que genera el primer nodo al crear el clúster:
Agregamos el nodo al clúster:
A los pocos segundos veremos los 2 nodos:
Crear quorum con tercer nodo en Proxmox
Una vez que tenemos el cluster con nuestros dos nodos, ahora vamos a agregar la máquina que hará el quorum. Comprobamos el estado:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
root@minis:~# pvecm status Cluster information ------------------- Name: NEGULAB Config Version: 2 Transport: knet Secure auth: on Quorum information ------------------ Date: Sat Jan 6 13:02:48 2024 Quorum provider: corosync_votequorum Nodes: 2 Node ID: 0x00000001 Ring ID: 1.9 Quorate: Yes Votequorum information ---------------------- Expected votes: 2 Highest expected: 2 Total votes: 2 Quorum: 2 Flags: Quorate Membership information ---------------------- Nodeid Votes Name 0x00000001 1 192.168.2.169 (local) 0x00000002 1 192.168.2.154 |
Instalamos el siguiente paquete en ambos nodos:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
root@minis:~# apt install corosync-qdevice -y Reading package lists... Done Building dependency tree... Done Reading state information... Done The following additional packages will be installed: libnss3-tools The following NEW packages will be installed: corosync-qdevice libnss3-tools 0 upgraded, 2 newly installed, 0 to remove and 29 not upgraded. Need to get 1,140 kB of archives. After this operation, 5,329 kB of additional disk space will be used. Get:1 http://ftp.es.debian.org/debian bookworm/main amd64 libnss3-tools amd64 2:3.87.1-1 [1,054 kB] Get:2 http://ftp.es.debian.org/debian bookworm/main amd64 corosync-qdevice amd64 3.0.3-1 [86.6 kB] Fetched 1,140 kB in 2s (550 kB/s) Selecting previously unselected package libnss3-tools. (Reading database ... 45486 files and directories currently installed.) Preparing to unpack .../libnss3-tools_2%3a3.87.1-1_amd64.deb ... Unpacking libnss3-tools (2:3.87.1-1) ... Selecting previously unselected package corosync-qdevice. Preparing to unpack .../corosync-qdevice_3.0.3-1_amd64.deb ... Unpacking corosync-qdevice (3.0.3-1) ... Setting up libnss3-tools (2:3.87.1-1) ... Setting up corosync-qdevice (3.0.3-1) ... Processing triggers for man-db (2.11.2-2) ... root@minis2:~# apt install corosync-qdevice -y Reading package lists... Done Building dependency tree... Done Reading state information... Done The following additional packages will be installed: libnss3-tools The following NEW packages will be installed: corosync-qdevice libnss3-tools 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. Need to get 1,140 kB of archives. After this operation, 5,329 kB of additional disk space will be used. Get:1 http://ftp.es.debian.org/debian bookworm/main amd64 libnss3-tools amd64 2:3.87.1-1 [1,054 kB] Get:2 http://ftp.es.debian.org/debian bookworm/main amd64 corosync-qdevice amd64 3.0.3-1 [86.6 kB] Fetched 1,140 kB in 0s (2,411 kB/s) Selecting previously unselected package libnss3-tools. (Reading database ... 45486 files and directories currently installed.) Preparing to unpack .../libnss3-tools_2%3a3.87.1-1_amd64.deb ... Unpacking libnss3-tools (2:3.87.1-1) ... Selecting previously unselected package corosync-qdevice. Preparing to unpack .../corosync-qdevice_3.0.3-1_amd64.deb ... Unpacking corosync-qdevice (3.0.3-1) ... Setting up libnss3-tools (2:3.87.1-1) ... Setting up corosync-qdevice (3.0.3-1) ... Processing triggers for man-db (2.11.2-2) ... |
Para el quorum voy a usar la máquina virtual que está corriendo en UNRAID que lleva la monitorización y que está encendida 24×7:
Instalo en ella ambos paquetes de corosync:
1 |
apt install corosync-qnetd corosync-qdevice -y |
Tenemos que tener acceso al sistema vía SSH. Y lanzamos el siguiente comando con la IP de la máquina virtual desde un nodo de Proxmox, que nos pedirá la contraseña:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
root@minis:~# pvecm qdevice setup 192.168.2.200 -f /bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub" /bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys root@192.168.2.200's password: Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'root@192.168.2.200'" and check to make sure that only the key(s) you wanted were added. INFO: initializing qnetd server Certificate database (/etc/corosync/qnetd/nssdb) already exists. Delete it to initialize new db INFO: copying CA cert and initializing on all nodes node 'minis': Creating /etc/corosync/qdevice/net/nssdb password file contains no data node 'minis': Creating new key and cert db node 'minis': Creating new noise file /etc/corosync/qdevice/net/nssdb/noise.txt node 'minis': Importing CA node 'minis2': Creating /etc/corosync/qdevice/net/nssdb password file contains no data node 'minis2': Creating new key and cert db node 'minis2': Creating new noise file /etc/corosync/qdevice/net/nssdb/noise.txt node 'minis2': Importing CA INFO: generating cert request Creating new certificate request Generating key. This may take a few moments... Certificate request stored in /etc/corosync/qdevice/net/nssdb/qdevice-net-node.crq INFO: copying exported cert request to qnetd server INFO: sign and export cluster cert Signing cluster certificate Certificate stored in /etc/corosync/qnetd/nssdb/cluster-NEGULAB.crt INFO: copy exported CRT INFO: import certificate Importing signed cluster certificate Notice: Trust flag u is set automatically if the private key is present. pk12util: PKCS12 EXPORT SUCCESSFUL Certificate stored in /etc/corosync/qdevice/net/nssdb/qdevice-net-node.p12 INFO: copy and import pk12 cert to all nodes node 'minis': Importing cluster certificate and key node 'minis': pk12util: PKCS12 IMPORT SUCCESSFUL node 'minis2': Importing cluster certificate and key node 'minis2': pk12util: PKCS12 IMPORT SUCCESSFUL INFO: add QDevice to cluster configuration INFO: start and enable corosync qdevice daemon on node 'minis'... Synchronizing state of corosync-qdevice.service with SysV service script with /lib/systemd/systemd-sysv-install. Executing: /lib/systemd/systemd-sysv-install enable corosync-qdevice Created symlink /etc/systemd/system/multi-user.target.wants/corosync-qdevice.service -> /lib/systemd/system/corosync-qdevice.service. INFO: start and enable corosync qdevice daemon on node 'minis2'... Synchronizing state of corosync-qdevice.service with SysV service script with /lib/systemd/systemd-sysv-install. Executing: /lib/systemd/systemd-sysv-install enable corosync-qdevice Created symlink /etc/systemd/system/multi-user.target.wants/corosync-qdevice.service -> /lib/systemd/system/corosync-qdevice.service. Reloading corosync.conf... Done |
Comprobamos que ya disponemos del quorum del cluster:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
root@minis:~# pvecm status Cluster information ------------------- Name: NEGULAB Config Version: 3 Transport: knet Secure auth: on Quorum information ------------------ Date: Sat Jan 6 14:12:00 2024 Quorum provider: corosync_votequorum Nodes: 2 Node ID: 0x00000001 Ring ID: 1.9 Quorate: Yes Votequorum information ---------------------- Expected votes: 3 Highest expected: 3 Total votes: 3 Quorum: 2 Flags: Quorate Qdevice Membership information ---------------------- Nodeid Votes Qdevice Name 0x00000001 1 A,V,NMW 192.168.2.169 (local) 0x00000002 1 A,V,NMW 192.168.2.154 0x00000000 1 Qdevice |
Te ha gustado la entrada SGUENOS EN TWITTER O INVITANOS A UN CAFE?
Hola Raúl, me gustaría hacerte una pregunta.
Me gustaría hacer un cluster con 2 nodos proxmox, sin fines HA, sólo para administrarlos desde el mismo interface y poder migrar máquinas de uno a otro fácilmente, sería posible?.
Por otro lado, si uno de los nodos se averiase, me quedaría sin sin interface de gestión web?.
Muchas gracias.
Hola Miguel,
Es posible pero no es la mejor opción…al final no separas el tráfico de gestión del de las máquinas virtuales, por ejemplo.
Al final tú puedes gestionar desde cualquier nodo el cluster, así que si se cae un nodo, usas la URL de otro diferente.
Salu2 y gracias a ti