Intro

En nuestro cluster hemos decidido incluir dos discos SSD para contener las imágenes de los discos duros de las máquinas virtuales.

En estos discos no vamos a emplear lvm. Emplearemos la siguiente estrategia:

Crear la partición a compartir en los discos SSD

Crear el módulo ssd en drbd

Formatear la partición como GFS2

Incluir el módulo como recurso del cluster

 

Crear la partición a compartir en los discos SSD

Para ver que device le ha asignado el sistema (lo normal es que le haya asignado /dev/sdb) hacemos parted -l, de donde extraemos la siguiente información:

Error: /dev/sdb: unrecognised disk label
Model: ATA Crucial_CT250MX2 (scsi)
Disk /dev/sdb: 250GB
Sector size (logical/physical): 512B/4096B
Partition Table: unknown
Disk Flags:

 

De aquí se desprende que le ha asignado el device /dev/sdb

Creamos la partición:

# parted -a optimal /dev/sdb

De la salida anterior de parted -l vemos que el disco no tiene tabla de particiones, así que lo primero que haremos será crearle una. Como no vamos a arrancar desde él, decidimos crearle una tabla de particiones gpt, aunque no supera los 2TB ni por asomo:

(parted) mklabel gpt

Si ahora hacemos un print free:

(parted) print free
Model: ATA Crucial_CT250MX2 (scsi)
Disk /dev/sdb: 250GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:

Numero  Inicio  Fin    Tamaño  Sistema de ficheros  Nombre  Banderas
17,4kB  250GB  250GB   Free Space

 

Vemos que ya reconoce la tabla de particiones, con lo que podemos crear nuestra prartición:

(parted) mkpart primary 1GB 250GB

Para verla:

(parted) print
Model: ATA Crucial_CT250MX2 (scsi)
Disk /dev/sdb: 250GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:

Numero  Inicio  Fin    Tamaño  Sistema de ficheros  Nombre   Banderas
1      1000MB  250GB  249GB                        primary

Sospecho que en los discos SSD no será necesario alinear las particiones, pero por si acaso:

(parted) align-check opt 1
1 aligned

Hacemos lo mismo en el otro nodo.

 

Añadir el módulo a drbd

Crear el archivo de configuración del nuevo módulo

El nuevo módulo se llamará ssd. Para crearlo copiaremos en el directorio /etc/drbd.d el archivo discodatos.res a discossd.res y lo editaremos para que quede como sigue:

resource ssd { 
        # nombre del dispositivo
        device /dev/drbd1; 
        # indicamos la localización de los metadatos. Como posibles valores admite internal
        # y el dispositivo donde se van a almacenar los metadatos.
        meta-disk internal; 
        startup { 
                # Indicamos que vamos a poner los dos nodos en primario al arrancar. En nuestro caso será Pacemaker quien se encargue de esto.
                # become-primary-on both; 
        } 
		
        net { 
                # Indica al sistema que va a permitir el que los dos nodos sean primarios a la vez.
                allow-two-primaries; 
                # definimos las políticas de recuperación automática en caso de split-brain
                after-sb-0pri discard-zero-changes; 
                # after-sb-1pri discard-secondary; 
                after-sb-1pri consensus; 
                after-sb-2pri disconnect; 
				
                # Tunning: Auto-Ajuste del buffer de envío.
                # sndbuf-size 0;
                # Tunning: Opciones que afecta al rendimiento de escritura en el nodo secundario.
                # Para controladoras RAID de alto rendimiento suelen servir estos valores.
                # max-buffers 8000;
                # max-epoch-size 8000;
                # max-buffers 16000;
                # max-epoch-size 16000;
                # Tunning: Parámetro de optimización muy dependiente del hardware
                # unplug-watermark 16;
                # unplug-watermark 16000;
        } 
		
        disk {
               # Tunning: estas configuraciones son para optimizar/tunear el rendimiento de DRBD
               # y solo deben realizarse en sistemas donde las controladoras de disco disponen de 
               # batería de respaldo para la cache.
               # no-disk-barrier;
               # no-disk-flushes;
        }
		
        syncer  {
               # Tunning: Configurar en caso de que usemos sistemas con escritura intensiva
               # al-extents 3389;
        }
		
        # definimos las ip's, puerto de acceso y los discos en cada uno de los nodos.
        on nodo1 { 
                address    ip_de_gestión_del_nodo1:7789; 
                disk            /dev/sdb1; 
        } 
        on nodo2 { 
                address   ip_de_gestión_del_nodo2:7789; 
                disk            /dev/sdb1; 
        } 
}
Hemos de cambiar el puerto por el que se comunicarán los discos de este módulo respecto de los que había en el módulo datos, de otro modo, el sistema se quejará.

Checkeamos la configuración con drbdadm dump.

 

Inicializar el módulo

Para inicializar el módulo hemos de hacer lo siguiente en ambos nodos:

# drbdadm create-md ssd

Luego, también en ambos nodos, hemos de levantar el módulo:

# drbdadm up ssd

La salida de drbd-overview:

1:ssd/0    Connected Secondary/Secondary Inconsistent/Inconsistent C r—–

 

Marcar un nodo como primario

Para marcar uno de los nodos como primario, debemos de hacer:

# drbdadm primary –force ssd

De este modo en el nodo en el que se ejecuta se marca el módulo como primario y se comienza a replicar en el otro nodo.

 

Configurar los recursos

 

Configurar las restricciones

# pcs cluster cib cons
# pcs -f cons constraint order start dlm-clone then promote drbd_ssd-clone
Adding dlm-clone drbd_ssd-clone (kind: Mandatory) (Options: first-action=start then-action=promote)

De este  modo evitamos que se ponga como master el drbd_ssd antes de que arranque dlm

# pcs -f cons constraint order start clvmd-clone then start ssdFS-clone kind=Serialize
Adding clvmd-clone ssdFS-clone (kind: Serialize) (Options: first-action=start then-action=start)
# pcs -f cons constraint colocation add master drbd_ssd-clone with dlm-clone
# pcs -f cons constraint colocation add ssdFS-clone clvmd-clone

Así evitamos que trate de montar el sistema de ficheros ssd antes de tener el directorio /dev/vg_ssd

# pcs cluster cib-push cons