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 8193or 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! :)
vgreduce –removemissing –force pve
(cuando en pvscan hay un unknown, un disco que estaba y ahora no)