Cómo montar un cluster de flexVDI con DRBD (sin almacenamiento compartido)

flexvdi+drbd
Habitualmente, para montar un cluster de flexVDI, es necesario disponer de un almacenamiento compartido con disco directo (una SAN FC o SAS).

Este almacenamiento compartido se emplea para almacenar la imagen de flexVDI Manager (el orquestador de la plataforma), las plantillas de escritorio y los diferenciales de los escritorio no volátiles.

De los tres elementos mencionados, el único que genera una carga de disco significativa es el último, los diferenciales no volátiles (las plantillas de escritorio, generalmente, se encuentran cacheadas en memoria del Host, gracias al sistema de caché de flexVDI). Por tanto, si estamos pensando en montar un sistema de VDI donde la mayor parte de las escritorios van a ser de tipo volátil, podemos plantearnos prescindir del almacenamiento compartido, sustituyéndolo por un sistema de almacenamiento definido por software, como DRBD.

 

Requerimientos

Para poder montar un cluster de flexVDI con DRBD, necesitaremos disponer de dos servidores con capacidades de virtualización (prácticamente, cualquier servidor vendido en los últimos 5 debería servirnos), provisto de una capacidad de cómputo y RAM apropiada para el número de Escritorios que planeamos virtualizar y, al menos, dos discos internos, uno mecánico y otro SSD (si ambos son SSD, aún mejor).

El primero lo usaremos para la instalación de flexVDI, y como backend de DRBD, mientras que el segundo será el almacén local de las imágenes diferenciales de los escritorios.

 

Descarga e instalación de flexVDI

Tras un breve registro en el portal, es posible descargar la imagen de instalación de flexVDI Server. Está disponibles en formato ISO, para grabarla en DVD o conectarla a través de una consola de acceso tipo ILO, y también en formato USB, para grabarla sobre un pendrive y conectarla directamente al equipo.

La Guía de Instalación contiene información detallada sobre cómo hacer una instalación limpia de flexVDI desde cero. Seguiremos dicha guía paso a paso, y nos detendremos al llegar al capítulo Configurar OCFS2.

En este punto, tendremos ambos servidores funcionando y con una configuración de red activa, por lo que podremos entrar por SSH y comenzar la instalación de DRBD.

 

Instalación y configuración de DRBD

Los repositorios de flexVDI incluyen una versión empaquetada de DRBD, por lo que podemos instalarla fácilmente haciendo uso de yum:

[root@flexpre01 ~]# yum install kmod-drbd84 drbd84-utils --user USUARIO --password PASSWORD

Debemos reemplazar USUARIO y PASSWORD por el usuario y contraseña con los que nos hemos registrado en el portal.

Una vez hecho esto, necesitamos preparar un espacio en disco para dárselo a DRBD. Si hemos seguido los pasos de la instalación recomendada de flexVDI, tendremos el disco principal bajo control de LVM, con un volumen bastante grande asignado a /home. Vamos a aprovechar este volumen, para usarlo como backend de DRBD. Para ello:

  • Editamos el fichero /etc/fstab, y eliminamos la línea correspondiente a este volumen
  • /dev/mapper/vg_flexpre01-lv_home /home ext4 defaults 1 2
  • Desmontamos el volumen
  • [root@flexpre01 ~]# umount /home
  • Sobreescribimos el volumen con ceros, para evitar que DRBD reconozca el sistema de ficheros. Cuidado, el nombre del dispositivo cambia entre Hosts.
  • [root@flexpre01 ~]# dd if=/dev/zero of=/dev/mapper/vg_flexpre01-lv_home bs=1M

Ahora que ya tenemos un volumen para usarlo con DRBD, necesitamos crear un fichero de configuración que describa nuestro cluster. Para ello, creamos el fichero /etc/drbd.d/flexdisk.res con un contenido similar a éste (nosotros usamos flexpre01 y flexpre02 como nombres de Host, correspondientes a las IPs 10.111.1.175 y 10.111.1.176, parámetros que hay que ajustar según convenga).

resource flexdisk1
{
    startup {
        become-primary-on both;
    }

    net {
        allow-two-primaries;
    }

    syncer {
        rate 100M;
    }

    on flexpre01 {
        device minor 1;
        disk /dev/mapper/vg_flexpre01-lv_home;
        address 10.111.1.175:7789;
        meta-disk internal;
    }

    on flexpre02 {
        device minor 1;
        disk /dev/mapper/vg_flexpre02-lv_home;
        address 10.111.1.176:7789;
        meta-disk internal;
    }
}

Para asegurarnos de que no tenemos problema en la resolución de nombres, vamos a editar el fichero “/etc/hosts” para relacionar los nombres de los Hosts con sus IPs, quedando así:

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6

10.111.1.175 flexpre01
10.111.1.176 flexpre02

Ahora que ya tenemos DRBD y la resolución de nombres configurados en ambos nodos, procedemos a inicializar el disco que acabamos de definir:

[root@flexpre01 ~]# /sbin/drbdadm create-md flexdisk1

Y, finalmente, habilitamos e iniciamos DRBD, para poder empezar a trabajar con nuestro nuevo disco replicado:

[root@flexpre01 ~]# chkconfig drbd on
[root@flexpre01 ~]# service drbd start

Tras este último comando, nos saldrán los siguientes errores en consola:

1: State change failed: (-2) Need access to UpToDate data
Command 'drbdsetup-84 primary 1' terminated with exit code 17

Estos mensajes son consecuencia de que queremos configurar ambos nodos como primarios, pero la información de los discos todavía no ha sido inicializada. Así que hacemos lo siguiente:

  • En el primer nodo, ordenamos que ignore los datos del peer:
  • drbdadm -- --overwrite-data-of-peer primary flexdisk1
  • En el segundo nodo, que tras el comando anterior habrá pasado a ser Secondary, le ordenamos que se convierta también en Primary:
  • drbdadm primary flexdisk1

Si todo ha ido bien, deberíamos tener un nuevo dispositivo presente, en el path /dev/drbd1

 

Usando DRBD en flexVDI

Teniendo el dispositivo DRBD disponible, podemos continuar con la Guía de Instalación desde donde la habíamos dejado, en el capítulo Configurar OCFS2. Haremos una nueva parada, esta vez en Clusterizar flexVDI Manager, momento que aprovecharemos para crear un volumen de flexVDI sobre DRBD.

Para ello, abrimos flexVDI Dashboard, y vamos a la sección de Almacenamiento. En ella, crearemos un nuevo Image Storage con el nombre drbd. Pasados unos segundos, en la tabla Physical disk info de nuestro nuevo Image Storage, deberíamos ver nuestro disco de DRBD.

dashboard-drbd

En este momento, ya podemos crear un volumen de flexVDI, seleccionado dicho disco como Primary disk. Una vez finalice el formateo, continuaremos con el capítulo Clusterizar flexVDI Manager, hasta el final de guía.

¡Enhorabuena, ya tienes listo tu propio cluster de flexVDI con DRBD! 🙂