Proxmox: Configurar storage con DRBD
Hoy os muestro un proyecto muy interesante para la gestión de un clúster Proxmox, y disponer de almacenamiento distribuido, replicado y sincronizado entre los nodos del clúster.
Es súper interesante cuando tienes un clúster de pocos nodos o pocos discos para montar un CephFS, por ejemplo, o no dispones de un NAS para montar un recurso NFS o ese NAS no tiene discos SSD´s y quieres usar los del host directamente.
Si no tienes un almacenamiento compartido en los nodos de Proxmox:
- No podrás migrar en vivo las máquinas virtuales y contenedores
Con DRDB podrás:
- Migrar en vivo extremadamente rápido máquinas virtuales (VM) y contenedores
- Máquinas virtuales y contenedores de alta disponibilidad, que en última instancia mitigan las fallas de los hosts virtuales
- Réplicas completas de datos (discos virtuales) en cada nodo
- Un número configurable de réplicas de datos. Por ejemplo, 3 réplicas de un disco virtual en un clúster de 5 nodos
Para montar DRBD en Proxmox usaremos un complemento llamado LINSTOR PROXMOX, el cual mantiene la empresa LINBIT mediante repositorios APT públicos.
Os dejo la URL del proyecto para poder profundizar que es en la que me he basado:
PROYECTO: https://linbit.com/drbd-user-guide/drbd-guide-9_0-en/
MANUAL DE INSTALACION: https://linbit.com/blog/linstor-setup-proxmox-ve-volumes/
Requerimientos de Hardware DRBD con Linbit
WEB OFICIAL: https://linbit.com/blog/drbd-hardware-environment-requirements/
Os dejo los datos más importante y revisar el enlace que será más completo:
- Para DRBD 9.0 la versión de kernel mínima es 2.6.32, con DRDB 9.1 la versión mínima es 3.10
- Un nodo puede tener 1048576 volúmenes por nodo como máximo
- El número máximo de volúmenes por recursos DRBD es 65535
- Un máximo de 32 nodos pueden acceder a la vez a un recurso DRBD (recomiendan clústers de no más de 5 nodos)
- CPU de 64 bits
- El consumo de RAM es de 32 MiB por cada 1TB de almacenamiento
Para probar estas configuraciones, voy a simular 3 nodos proxmox en modo nested (máquinas virtuales de proxmox sobre otro proxmox), para así realizar todas las pruebas y luego pasarlo a producción en mi laboratorio:
La configuración inicial de mis Proxmox es muy básica, un disco con el sistema y poco más. Así que adaptaré las máquinas simulando discos adicionales, agregando algún disco adicional:
Agrego un disco en cada máquina HARDWARE -> HARD DISK de unos 50GB:
Quedará de la siguiente forma:
Instalación DRBD en Proxmox
Instalamos el complemento en cada nodo, actualizar el sistema antes:
1 2 3 4 |
echo "deb http://packages.linbit.com/proxmox/ proxmox-8 drbd-9.0" > /etc/apt/sources.list.d/linbit.list wget -O- https://packages.linbit.com/package-signing-pubkey.asc | apt-key add - apt-get update apt-get install drbd-utils drbd-dkms |
Os dejo otra forma de hacerlo. Instalamos el repo necesario con los siguientes comandos:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
root@proxmox01:~# wget -O /tmp/package-signing-pubkey.asc https://packages.linbit.com/package-signing-pubkey.asc --2024-02-10 22:04:12-- https://packages.linbit.com/package-signing-pubkey.asc Resolving packages.linbit.com (packages.linbit.com)... 94.177.8.207, 2a0d:f302:119:f7b8::1 Connecting to packages.linbit.com (packages.linbit.com)|94.177.8.207|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 5369 (5.2K) [text/plain] Saving to: ‘/tmp/package-signing-pubkey.asc’ /tmp/package-s 100% 5.24K --.-KB/s in 0s 2024-02-10 22:04:13 (148 MB/s) - ‘/tmp/package-signing-pubkey.asc’ saved [5369/5369] root@proxmox01:~# gpg --yes -o /etc/apt/trusted.gpg.d/linbit-keyring.gpg --dearmor /tmp/package-signing-pubkey.asc root@proxmox01:~# PVERS=8.1.3 && echo "deb [signed-by=/etc/apt/trusted.gpg.d/linbit-keyring.gpg] http://packages.linbit.com/public/ proxmox-$PVERS drbd-9" > /etc/apt/sources.list.d/linbit.list |
En Internet disponemos de algunos paquetes, pero intentaremos hacerlo vía repo:
https://packages.linbit.com/dists/proxmox-8/drbd-9/pool/
Os enseño como se cargan otros repos gráficamente. Nodo -> Updates -> Repositories -> ADD:
Elegimos uno:
Configurar DRBD
- Crear archivo de configuración de DRBD: Configura el recurso DRBD en todos los nodos creando el archivo de configuración en /etc/drbd.d/r0.res:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
resource r0 { protocol C; on node1 { device /dev/drbd0; disk /dev/sdb; address 192.168.1.101:7789; meta-disk internal; } on node2 { device /dev/drbd0; disk /dev/sdb; address 192.168.1.102:7789; meta-disk internal; } on node3 { device /dev/drbd0; disk /dev/sdb; address 192.168.1.103:7789; meta-disk internal; } } |
- Inicializar y conectar DRBD: En cada nodo, ejecuta:
1 2 |
drbdadm create-md r0 drbdadm up r0 |
- Establecer un nodo como primario:
- Solo en el nodo que elijas como primario, ejecuta:
1 |
drbdadm primary r0 --force |
- Establecer un nodo como primario:
- Solo en el nodo que elijas como primario, ejecuta:
1 |
drbdadm primary r0 --force |
Formatear y Usar DRBD
Una vez que DRBD esté sincronizado y en estado UpToDate, puedes formatear el dispositivo DRBD y usarlo:
1 |
mkfs.ext4 /dev/drbd0 |
Montar el sistema de archivos:
1 |
mount /dev/drbd0 /mnt |
Configurar el montaje permanente:
- Añade una entrada en /etc/fstab para montar el dispositivo en el arranque.
Añadir Storage en Proxmox
Añade el nuevo almacenamiento montado a Proxmox a través de la interfaz de usuario web:
- Ve a “Datacenter” -> “Storage” -> “Add” -> “Directory”.
- Completa los campos necesarios, usando el punto de montaje que configuraste (por ejemplo, /mnt).
Te ha gustado la entrada SGUENOS EN TWITTER O INVITANOS A UN CAFE?