Implementaciรณn de almacenamiento LINSTOR para Proxmox

imagen


LINBIT lanzรณ recientemente su nueva soluciรณn para orquestar y administrar mรบltiples matrices DRBD.


Por ejemplo, puede tener varios nodos y cada uno tendrรก su propio grupo LVM o ZFS en el que LINSTOR crearรก automรกticamente nuevos volรบmenes y los replicarรก entre nodos utilizando el protocolo DRBD.


LINSTOR admite aprovisionamiento delgado, instantรกneas y muchas otras cosas interesantes.
Esta soluciรณn es adecuada para mรกquinas virtuales y contenedores.


Satรฉlites LINSTOR


Creo que ya tiene un clรบster Proxmox, tengo tres nodos pve1 , pve2 y pve3 .


Entonces, el primer paso es instalar drbd-utils y construir un mรณdulo de kernel en cada nodo.


Agregue el repositorio de linstor e instale los encabezados del nรบcleo , asรญ como todos los paquetes necesarios:


 wget -O- https://packages.linbit.com/package-signing-pubkey.asc | apt-key add - echo "deb http://packages.linbit.com/proxmox/ proxmox-5 drbd-9.0" \ > /etc/apt/sources.list.d/linbit.list apt-get update apt-get -y install pve-headers apt-get -y install drbd-dkms drbdtop 

Despuรฉs de la instalaciรณn, verifiquemos su versiรณn del mรณdulo del nรบcleo:


 modprobe drbd cat /proc/drbd 

Si ve la versiรณn 8, entonces algo saliรณ mal y el mรณdulo del รกrbol del nรบcleo se ha cargado, verifique el dkms status para obtener mรกs informaciรณn sobre cรณmo construir el mรณdulo dkms directamente.
Para LINSTOR debes usar DRBD versiรณn 9.


A continuaciรณn, en cada nodo, instale los paquetes linstor-proxmox y linstor-satellite :


 apt-get -y install linstor-proxmox linstor-satellite systemctl start linstor-satellite.service systemctl enable linstor-satellite.service 

Controlador LINSTOR


Implementaremos el controlador dentro del contenedor LXC.


Descargue la plantilla de Debian:


 wget http://download.proxmox.com/images/system/debian-9.0-standard_9.3-1_amd64.tar.gz -P /var/lib/vz/template/cache/ 

Ahora cree un contenedor para el controlador:


 pct create 100 local:vztmpl/debian-9.0-standard_9.3-1_amd64.tar.gz \ --hostname=linstor-controller \ --net0=name=eth0,bridge=vmbr0,gw=10.1.0.1,ip=10.1.0.123/16 

Ejecute el contenedor e ingrรฉselo:


 pct start 100 pct exec 100 bash 

Instalar actualizaciones:


 apt-get update apt-get -y upgrade 

Agregue el repositorio linstor e instale linstor-controller y linstor-client :


 wget -O- https://packages.linbit.com/package-signing-pubkey.asc | apt-key add - echo "deb http://packages.linbit.com/proxmox/ proxmox-5 drbd-9.0" \ > /etc/apt/sources.list.d/linbit.list apt-get update && apt-get install -y linstor-controller linstor-client systemctl start linstor-controller.service systemctl enable linstor-controller.service 

Linstor requiere una configuraciรณn regional configurada. Configurar configuraciรณn regional:


 sed -i '/en_US.UTF-8 UTF-8/ s/^# //' /etc/locale.gen locale-gen 

Configuremos la zona horaria de inmediato:


 dpkg-reconfigure tzdata 

Configuraciรณn de bรณveda


Crear nodos:


 linstor node create pve1 10.1.0.11 linstor node create pve2 10.1.0.12 linstor node create pve3 10.1.0.13 

Para cada nodo, describimos una interfaz adicional que se utilizarรก para la replicaciรณn DRBD:


 linstor node interface create pve1 data 10.2.0.11 linstor node interface create pve2 data 10.2.0.12 linstor node interface create pve3 data 10.2.0.13 

Ejemplo de salida del comando de linstor node list :


 โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ โ”Š Node โ”Š NodeType โ”Š Addresses โ”Š State โ”Š โ•žโ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ•ก โ”Š pve1 โ”Š SATELLITE โ”Š 10.0.1.11,10.0.2.11:3366 (PLAIN) โ”Š Online โ”Š โ”Š pve2 โ”Š SATELLITE โ”Š 10.0.1.12,10.0.2.12:3366 (PLAIN) โ”Š Online โ”Š โ”Š pve3 โ”Š SATELLITE โ”Š 10.0.1.13,10.0.2.13:3366 (PLAIN) โ”Š Online โ”Š โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ 

Crear piscinas:


En cada nodo, debe preparar lvm thin-pool para drbd:


 lvcreate -L 800G --thinpool drbdpool pve 

Ahora puedes agregarlos a linstor:


 linstor storage-pool create lvmthin pve1 drbdpool pve/drbdpool linstor storage-pool create lvmthin pve2 drbdpool pve/drbdpool linstor storage-pool create lvmthin pve3 drbdpool pve/drbdpool 

Configuremos los pools para usar la interfaz de data :


 linstor storage-pool set-property pve1 drbdpool PrefNic data linstor storage-pool set-property pve2 drbdpool PrefNic data linstor storage-pool set-property pve3 drbdpool PrefNic data 

Ejemplo de salida del comando de linstor storage-pool list :


 โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”Š StoragePool โ”Š Node โ”Š Driver โ”Š PoolName โ”Š FreeCapacity โ”Š TotalCapacity โ”Š Support โ•žโ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„ โ”Š drbdpool โ”Š pve1 โ”Š LvmThinDriver โ”Š hv1/drbdpool โ”Š 800 GiB โ”Š 800 GiB โ”Š true โ”Š drbdpool โ”Š pve1 โ”Š LvmThinDriver โ”Š hv1/drbdpool โ”Š 800 GiB โ”Š 800 GiB โ”Š true โ”Š drbdpool โ”Š pve3 โ”Š LvmThinDriver โ”Š hv3/drbdpool โ”Š 800 GiB โ”Š 800 GiB โ”Š true โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ 

Ahora podemos agregar nuestro nuevo almacenamiento a la configuraciรณn de Proxmox:


 cat >> /etc/pve/storage.cfg <<EOF drbd: drbdpool content rootdir,images controller 10.1.0.123 controllervm 100 redundancy 3 EOF 

Configuraciรณn de HA para el controlador


Ahora transferiremos nuestro contenedor linstor al almacenamiento linstor.


Primero necesitamos crear un disco virtual para ello:


 pct exec 100 bash linstor resource-definition create vm-100-disk-0 linstor volume-definition create vm-100-disk-0 4G linstor resource create vm-100-disk-0 --auto-place 3 -s drbdpool 

Ejemplo de salida del comando linstor resource list :


 โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ โ”Š ResourceName โ”Š Node โ”Š Port โ”Š State โ”Š โ•žโ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ•ก โ”Š vm-100-disk-0 โ”Š pve1 โ”Š 7000 โ”Š UpToDate โ”Š โ”Š vm-100-disk-0 โ”Š pve2 โ”Š 7000 โ”Š UpToDate โ”Š โ”Š vm-100-disk-0 โ”Š pve3 โ”Š 7000 โ”Š UpToDate โ”Š โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ 

De forma predeterminada, linstor-satellite elimina las configuraciones de todos los recursos en el momento en que se inicia el servicio, luego espera una nueva configuraciรณn de linstor-controller , pero si mantenemos linstor-controller en el mismo lugar que los datos, debemos hacer una excepciรณn para su recurso agregando una opciรณn --keep-res=vm-100 para linstor-satellite en todos los nodos:


 echo -e "[Service]\nExecStart=\nExecStart=/usr/share/linstor-server/bin/Satellite --logs=/var/log/linstor-satellite --config-directory=/etc/linstor --keep-res=vm-100" | SYSTEMD_EDITOR=tee systemctl edit linstor-satellite.service 

Esta acciรณn deberรญa evitar que el recurso vm-100-disk-0 se elimine cada vez que se inicia.


Ahora detenemos el contenedor del controlador linstor y transferimos todos los datos del disco local al disco drbd.


 pct shutdown 100 dd if=/var/lib/vz/images/100/vm-100-disk-0.raw of=/dev/drbd/by-res/vm-100-disk-0/0 bs=8M status=progress e2fsck -f /dev/drbd/by-res/vm-100-disk-0/0 resize2fs /dev/drbd/by-res/vm-100-disk-0/0 

Actualice la configuraciรณn del contenedor:


 sed -i '/^rootfs:/d' /etc/pve/lxc/100.conf echo 'rootfs: drbdpool:vm-100-disk-0,size=4G' >> /etc/pve/lxc/100.conf 

Ejecute el contenedor y, si todo estรก bien, elimine el disco anterior:


 pct start 100 rm -f /var/lib/vz/images/100/vm-100-disk-0.raw 

Ahora solo necesitamos agregar nuestro contenedor a proxmox ha-manager :


 ha-manager add ct:100 --max_relocate=3 --max_restart=3 

BENEFICIO


Rendimiento y puesta a punto


En este momento, para cambiar la configuraciรณn global del controlador, deberรก deshabilitar la autenticaciรณn en el controlador:



Para resolver automรกticamente situaciones de cerebro dividido, agregue las siguientes opciones para el controlador:


 linstor controller drbd-options \ --after-sb-0pri=discard-zero-changes \ --after-sb-1pri=discard-secondary \ --after-sb-2pri=disconnect 

Para mi red 10G, encontrรฉ la siguiente configuraciรณn mรกs รณptima para una sincronizaciรณn rรกpida:


 linstor controller drbd-options \ --max-buffers=36864 \ --rcvbuf-size=2097152 \ --sndbuf-size=1048576 linstor controller drbd-options \ --c-fill-target=10240 \ --c-max-rate=737280 \ --c-min-rate=20480 \ --c-plan-ahead=10 

Source: https://habr.com/ru/post/es423101/


All Articles