Clúster Proxmox + añadir disco

El resumen de la de hoy, montar un clúster proxmox y luego añadir un disco addicional a /var/lib/vz2.

La primera es que partimos de 3 servidores, que es el mínimo recomendado para montar un clúster de proxmox. El motivo es que los nodos del clúster sincronizan continuamente los datos y si uno de los nodos se cae, si sólo hubiese dos podría dar problemas al reconstruir el nodo, ya que algunos datos se quedaron desactualizados o a medias en el nodo del clúster que está caído (que ha dejado de funcionar). Así que si montas cualquier tipo de clúster, el mínimo son 3 nodos, o 3 servidores distintos, en éste caso con instalaciones de proxmox.

Tengo 3 servidores con éstos nombres y éstas IPs (todos sin maquinas virtuales y se recomienda así para que no haya problemas de IDs duplicados)

– wezen-01.capa8.cat 10.90.226.90
– wezen-02.capa8.cat 10.90.226.91
– wezen-03.capa8.cat 10.90.226.92

Wezen-01 será el “master”, siempre que tengamos que levantar el clúster después de un corte de electricidad, vamos a levantar primero ésta máquina.

Entramos en el servidor wezen-01 y ejecutamos pvecm create nombredelcluster. Tenemos que tener en cuenta que se no se puede cambiar el nombre una vez creado y se recomienda no cambiar las IPs.

root@wezen-01:~# pvecm create wezen

Ahora entramos en los dos otros nodos y los conectamos con el nodo maestro. Nos pedirá el password de root del servidor maestro.

root@wezen-02:~# pvecm add 10.90.226.90
root@wezen-03:~# pvecm add 10.90.226.90

Y listos, ahora si miramos el estado del clúster nos dice que ya están conectados

root@wezen-01:~# pvecm status
Quorum information
------------------
Date:             Mon Oct 15 21:44:30 2018
Quorum provider:  corosync_votequorum
Nodes:            3
Node ID:          0x00000001
Ring ID:          1/12
Quorate:          Yes

Votequorum information
----------------------
Expected votes:   3
Highest expected: 3
Total votes:      3
Quorum:           2  
Flags:            Quorate 

Membership information
----------------------
    Nodeid      Votes Name
0x00000001          1 10.90.226.90 (local)
0x00000002          1 10.90.226.91
0x00000003          1 10.90.226.92

Y con ésto ya tenemos el clúster montado :)
Si en algun momento falla y nos dice que no hay quorum entre nodos, el secreto será en copiar el fichero /etc/corosync/corosync.conf de uno de los nodos que si que está en quorum a la máquina que está dando problemas y no puede entrar en quorum.

# cd /etc/corosync/
# mv corosync.conf{,.old}
# scp root@10.90.226.90:/etc/corosync/corosync.conf .
# service corosync restart

Si simplemente el problema es que el nodo no quiere entrar en quorum al añadirlo, podemos borrarlo desde el nodo principal con pvecm delnode wezen-04.capa8.cat, o pvecm delnode id. Mira dentro del fichero /etc/corosync/corosync.conf para saber el id del nodo que no se ha añadido correctamente.

# pvecm delnode 4

Ahora lo siguiente será montar un sistema de archivos distribuido como ceph o glusterfs o compartido como nfs, sshfs, etc.. Como de momento aún no tengo ningún sistema de éstos montados, voy a almacenar las maquinas virtuales en local, cosa que va a lentificar la migración de los contenedores entre máquinas al ser necesario copiar los ficheros de una a otra.
Además, proxmox deja sin montar la partición /dev/pve/data y están ahí unos datos que podríamos aprovechar en algún apuro perdidos… ¡una pena!

La configuración de los discos de las maquinas son:

# wezen-01
– RAID 0: 2 discos de 273Gb SAS de 15k RPM

# wezen-02
– 1 disco de 67Gb SAS de 15k RPM
– 1 disco de 1Tb SAS de 7200 RPM

# wezen-03
– RAID 0: 2 discos de 137Gb SCSI de 15k RPM
– RAID 0: 2 discos de 137Gb SCSI de 15k RPM

En wezen-01 no voy a añadir ningún disco addicional para pve-data, pero para wezen-02 y wezen-03 si.

Vamos a crear una partición de tipo lvm con fdisk con los discos que no hemos indicado donde instalar proxmox durante su instalación. Hacemos el mismo proceso tanto en wezen-02 como wezen-03.

root@wezen-0X:~# fdisk /dev/sdb
n + intro, intro, intro
t
8e
w

Añadimos la nueva partición creada al pv llamado pve y la añadimos al lv data.

root@wezen-0X:~# pvcreate /dev/sdb1
root@wezen-0X:~# vgextend pve /dev/sdb1
root@wezen-0X:~# lvextend /dev/pve/data /dev/sdb1

Ahora con lvscan podremos ver por ejemplo la ampliación en wezen-02:

root@wezen-02:~# lvscan
  ACTIVE            '/dev/pve/swap' [8.00 GiB] inherit
  ACTIVE            '/dev/pve/root' [16.75 GiB] inherit
  ACTIVE            '/dev/pve/data' [32.37 GiB] inherit

root@wezen-02:~# lvextend /dev/pve/data /dev/sdb1
  Size of logical volume pve/data_tdata changed from 32.37 GiB (8287 extents) to 963.37 GiB (246622 extents).
  Logical volume pve/data_tdata successfully resized.

root@wezen-02:~# pvscan
  PV /dev/sda3   VG pve             lvm2 [67.50 GiB / 8.38 GiB free]
  PV /dev/sdb1   VG pve             lvm2 [931.00 GiB / 0    free]
  Total: 2 [998.49 GiB] / in use: 2 [998.49 GiB] / in no VG: 0 [0   ]

root@wezen-02:~# lvscan
  ACTIVE            '/dev/pve/swap' [8.00 GiB] inherit
  ACTIVE            '/dev/pve/root' [16.75 GiB] inherit
  ACTIVE            '/dev/pve/data' [963.37 GiB] inherit

Ahora comprobaremos la integridad de /dev/pve/data para saber si tenemos que darle formato.

root@wezen-02:/var/log# e2fsck -f /dev/pve/data
e2fsck 1.43.4 (31-Jan-2017)
ext2fs_open2: Bad magic number in super-block
e2fsck: Superblock invalid, trying backup blocks...
e2fsck: Bad magic number in super-block while trying to open /dev/pve/data

The superblock could not be read or does not describe a valid ext2/ext3/ext4
filesystem.  If the device is valid and it really contains an ext2/ext3/ext4
filesystem (and not swap or ufs or something else), then the superblock
is corrupt, and you might try running e2fsck with an alternate superblock:
    e2fsck -b 8193 
 or
    e2fsck -b 32768 

Si nos sale éste error es porqué aún no está formateada la partición /dev/pve/data, ya que aún no se ha configurado en proxmox. Para dar formato a /dev/pve/data hacemos lo siguiente:

root@wezen-02:~# mkfs.ext4 /dev/pve/data
mke2fs 1.43.4 (31-Jan-2017)
Discarding device blocks: done                            
Creating filesystem with 252540928 4k blocks and 63135744 inodes
Filesystem UUID: 3823a67d-40ad-463a-828b-a2e2ad39419d
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
	4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 
	102400000, 214990848

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (262144 blocks): done
Writing superblocks and filesystem accounting information: done     

root@wezen-02:~# mount -t auto /dev/pve/data /mnt/
root@wezen-02:~# umount /mnt

Las dos últimas líneas es para comprobar que se monta correctamente :)

Ahora vamos a configurar en fstab para que se monte /dev/pve/data en /var/lib/vz2 que es donde se almacenaremos todos los datos de las máquinas virtuales en proxmox.

root@wezen-02:~# vi /etc/fstab
#      
/dev/pve/root / ext4 errors=remount-ro 0 1
/dev/pve/data /var/lib/vz2 ext4 errors=remount-ro 0 1
/dev/pve/swap none swap sw 0 0
proc /proc proc defaults 0 0

Ahora montaremos /var/lib/vz2.

(Actualización: Acabo de omitir una parte del manual porque mi idea inicial era la de ampliar directamente /var/lib/vz pero al importar una máquina virtual en “local” me soltaba el error

  Using default stripesize 64.00 KiB.
  Logical volume pve/data contains a filesystem in use.
TASK ERROR: lvcreate 'pve/vm-102-disk-1' error:   Aborting. Could not deactivate thin pool pve/data.

No tenía ni pajotera idea a lo que se refería, he entendido que /var/lib/vz ya se estaba usando y tenía algún problema en montar una especie de lvm virtuales, así que simplemente he tratado de montar el /dev/pve/data a /var/lib/vz2 y el problema se ha resuelto.

Y listos! :)

One Comment

  1. vgreduce –removemissing –force pve
    (cuando en pvscan hay un unknown, un disco que estaba y ahora no)

    Respon

Deixa un comentari

L'adreça electrònica no es publicarà. Els camps necessaris estan marcats amb *

Aquest lloc utilitza Akismet per reduir els comentaris brossa. Apreneu com es processen les dades dels comentaris.