Intro
Estoy montando un nuevo cluster de HA y en este caso he decidido montar lo último de lo último. Me refiero al kernel y a drbd. Voy a contar como me va y a poner los errores que estoy encontrando y como los voy resolviendo. Sobre todo para no tener que perder de nuevo el tiempo si tengo que montar otro cluster de HA y eso.
Instalando el kernel
He elegido la versión 4.4.x del kernel. En el momento de la instalación estaba la 4.4.9
La configuración ha sido copiando el archivo config del kernel actual (config-3.10.0-327.13.1.el7.x86_64) el archivo .config en /usr/src/kernels/linux-4.4.9/ y luego haciendo make menuconfig && make -j 6 && make modules_install && make install
He modificado la configuración del kernel para que carge drbd como módulo tal y como se explica en el libro de Aurelio.
No existe el archivo /boot/grub2/grub.conf
Lo que no he podido hacer es encontrar el archivo /boot/grub2/grub.conf para poder buscar la entrada de menuentry correspondiente al kernel recién compilado y ponerlo por defecto. El motivo es que el archivo /boot/grub2/grub.conf no existía. Echando mano de google he conseguido encontrar la forma de generarlo:
# grub2-mkconfig -o /boot/grub2/grub.cfg
Luego ya he buscaodo la entrada y la he puesto por defecto con grub2-set-default.
Instalando drbd
drbd 9
Comenzamos tratando de instalar drbd 9, que habíamos instalado con éxito en un cluster de prueba formado por máquinas KVM.
Bajadmos drbd-9.0.1-1
Compilamos con:
# make KDIR=/usr/src/kernels/linux-4.4.9
Instalamos las herramientas de drbd (drbd-utils-8.9.6) compilando con:
# ./configure && make && make install
Problemas en la configuración de drbd 9
Al testar la configuración de drbd mediante drbdadm dump el sistema arrojaba el siguiente error:
drbd.d/global_common.conf:77: Parse error: 'resync-rate | c-plan-ahead | c-delay-target | c-fill-target | c-max-rate | c-min-rate' expected,
but got 'fencing'
Después de darle muchas vueltas y unas cuantas visitas a google resulta que la causa es que la línea ‘fencing resource-and-stonith;
‘ que figuraba en la sección disk debería ir en la sección net del archivo de configuración.
Parece que drbd-9.0 no permite la configuración dual.primay. Ese puede ser el motivo por el que fallaba el recurso cuando trataba de activarlo el cluster.
Por ese motivo compilamos e instalamos drbd-8.4.7-1
drbd 8
Bajamos drbd-8.4.7-1
Al compilar con make KDIR=/usr/src/kernels/linux-4.4.9
obtuvimos el siguiente error:
/root/almacen/drbd-8.4.7-1/drbd/drbd_bitmap.c: En la función ‘bm_page_io_async’:
/root/almacen/drbd-8.4.7-1/drbd/drbd_bitmap.c:1033:60: error: ‘__GFP_WAIT’ no se declaró aquí (primer uso en esta función)
page = mempool_alloc(drbd_md_io_page_pool, __GFP_HIGHMEM|__GFP_WAIT);
^
/root/almacen/drbd-8.4.7-1/drbd/drbd_bitmap.c:1033:60: nota: cada identificador sin declarar se reporta sólo una vez para cada función en el que aparece
make[3]: *** [/root/almacen/drbd-8.4.7-1/drbd/drbd_bitmap.o] Error 1
make[2]: *** [_module_/root/almacen/drbd-8.4.7-1/drbd] Error 2
make[1]: *** [kbuild] Error 2
make[1]: se sale del directorio `/root/almacen/drbd-8.4.7-1/drbd'
make: *** [module] Error 2
La solución al problema, tal y como se indica en el siguiente enlace (Instalación DRBD en Amazon Linux Ami) es la siguiente:
$ find ~/drbd-8.4.7-1 -type f -exec sed -i s/__GFP_WAIT/__GFP_RECLAIM/g {} \;
Repetimos el make y esta vez se instala correctamente.
Como ya teníamos instalados los módulos del kernel hay que repetir la instalación haciendo un make modules_install
en el directorio del kernel en /usr/src/kernels