Con este artículo, aprenderás a configurar un clúster de servidores NFS redundante y altamente disponible utilizando iSCSI con DM-Multipath.

El objetivo de este escenario es crear un almacenamiento de NFS redundante y tolerante a fallos con una conmutación por error automática, asegurando casi siempre la máxima disponibilidad de las exportaciones NFS.

Esta entrada en particular cubrirá la configuración del iniciador iSCSI para ambos servidores NFS y la configuración para las multirutas de mapeo de dispositivos (DM-Multipath).

Para este entorno, hay dos servidores ejecutados en Ubuntu 14.04.2 LTS con dos tarjetas de red configuradas en cada servidor (uno de ellos proporciona el servicio de NFS a los clientes y el otro se conecta a la red de área de almacenamiento iSCSI). Para el dispositivo de almacenamiento de este ya se han configurado dos adaptadores físicos y dos interfaces de red para cada adaptador, para así tener acceso redundante a la red y proporcionar dos rutas físicas al dispositivo de almacenamiento.

Ambos servidores NFS tendrán el dispositivo LUN conectado usando un InitiatorName diferente y tendrán la configuración de las multirutas de mapeo de dispositivos (esto permite configurar múltiples rutas input/output entre los nodos del servidor y las matrices de almacenamiento en un solo dispositivo). Estas rutas input/output son conexiones de red de área de almacenamiento físicas que pueden incluir cables separados, interruptores y controladores. Básicamente, es como si los servidores NFS tuvieran un único dispositivo de bloque.

iSCSI Diagram

El software del clúster utilizado es Corosnyc y el gestor de recursos es Pacemaker. Pacemaker será el responsable de asignar una VIP (una dirección IP virtual), montar el sistema de archivos desde el dispositivo de bloque e iniciar el servicio NFS con las exportaciones específicas para los clientes en el nodo activo del clúster. En caso de fallo del nodo activo del clúster, los recursos se migrarán al nodo pasivo y los servicios continuarán funcionando como si no hubiera pasado nada. Hay un artículo secundario en opentodo.net que continúa con la explicación sobre cómo configurar Corosync y Pacemaker en particular. Puedes encontrarlo aquí.

¡Empecemos con la configuración!

Configuración del iniciador iSCSI

-Instala las dependencias:

# aptitude install multipath-tools open-iscsi

-Servidor 1
Modifica el archivo de configuración /etc/iscsi/initiatorname.iscsi:

InitiatorName=iqn.1647-03.com.cisco:01.vdsk-nfs1

-Servidor 2
-Modifica el archivo de configuración /etc/iscsi/initiatorname.iscsi:

InitiatorName=iqn.1647-03.com.cisco:01.vdsk-nfs2

NOTA: los identificadores del inciador en ambos servidores son diferentes, pero están asociados al mismo dispositivo LUN.

–Ejecuta un descubrimiento en dispositivos iSCSI:

# iscsiadm -m discovery -t sendtargets -p 10.54.61.35
# iscsiadm -m discovery -t sendtargets -p 10.54.61.36
# iscsiadm -m discovery -t sendtargets -p 10.54.61.37
# iscsiadm -m discovery -t sendtargets -p 10.54.61.38

–Conéctate e inicia sesión con el dispositivo iSCSI:

# iscsiadm -m node -T iqn.2054-
02.com.hp:storage.msa2012i.0390d423d2.a -p 10.54.61.35 -–login
# iscsiadm -m node -T iqn.2054-
02.com.hp:storage.msa2012i.0390d423d2.a -p 10.54.61.36 --login
# iscsiadm -m node -T iqn.2054-
02.com.hp:storage.msa2012i.0390d423d2.b -p 10.54.61.37 --login
# iscsiadm -m node -T iqn.2054-
02.com.hp:storage.msa2012i.0390d423d2.b -p 10.54.61.38 --login

–Comprueba las sesiones establecidas con el dispositivo iSCSI de la red de área de almacenamiento:

# iscsiadm -m node
10.54.61.35:3260,1 iqn.2054-
02.com.hp:storage.msa2012i.0390d423d2.a
10.54.61.36:3260,2 iqn.2054-
02.com.hp:storage.msa2012i.0390d423d2.a
10.54.61.37:3260,1 iqn.2054-
02.com.hp:storage.msa2012i.0390d423d2.b
10.54.61.38.38:3260,2 iqn.2054-
02.com.hp:storage.msa2012i.0390d423d2.b

–A estas alturas, los dispositivos de bloque deberían estar disponibles en ambos servidores como dispositivos locales conectados. Puedes comprobarlo simplemente ejecutando fdisk:

# fdisk -l

Disk /dev/sdb: 1000.0 GB, 1000000716800 bytes
255 heads, 63 sectors/track, 121576 cylinders, total
1953126400 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Device Boot Start End Blocks Id System
/dev/sdb1 63 1953118439 976559188+ 83 Linux

Disk /dev/sdc: 1000.0 GB, 1000000716800 bytes
255 heads, 63 sectors/track, 121576 cylinders, total
1953126400 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Device Boot Start End Blocks Id System
/dev/sdc1 63 1953118439 976559188+ 83 Linux 

En este caso, /dev/sda es el disco local para el servidor y /dev/sdb y /dev/sdc corresponden a los dispositivos de bloqueo iSCSI (un dispositivo para cada adaptador). Ahora, necesitamos configurar una multirruta de mapeo de dispositivos para estos dos, /dev/sdb y /dev/sdc. Esto es en caso de ue uno de los adaptadores falle y un dispositivo LUN continúe funcionando en nuestro sistema y la ruta múltiple cambie el disco utilizado por nuestro dispositivo de bloque.

Configuración de ruta múltiple:

–Primero necesitamos recuperar y generar un identificador SCSI único para conformar en la configuración de la ruta múltiple, ejecutando el siguiente comando para uno de los dispositivos iSCSI:

# /lib/udev/scsi_id --whitelisted --device=/dev/sdb
3600c0ff000d823e5ed6a0a4b01000000

–Crea la configuración del archivo de ruta múltiple /etc/multipath.conf con el siguiente contenido:

##
## This is a template multipath-tools configuration file
## Uncomment the lines relevent to your environment
##
defaults {
user_friendly_names yes
polling_interval 3
selector "round-robin 0"
path_grouping_policy multibus
path_checker directio
failback immediate
no_path_retry fail
}
blacklist {
devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
devnode "^hd[a-z][[0-9]*]"
}

multipaths{
multipath {
# id retrieved with the utility /lib/udev/scsi_id
wwid
3600c0ff000d823e5ed6a0a4b01000000
alias nfs
}
}

– Reinicia el servicio de herramientas multirruta:

# service multipath-tools restart

– Comprueba de nuevo los discos disponibles en el sistema:

# fdisk -l

Disk /dev/sdb: 1000.0 GB, 1000000716800 bytes
255 heads, 63 sectors/track, 121576 cylinders, total
1953126400 sectors
Units = sectors of 1 * 512 = 512 bytes6
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Device Boot Start End Blocks Id System
/dev/sdb1 63 1953118439 976559188+ 83 Linux

Disk /dev/sdc: 1000.0 GB, 1000000716800 bytes
255 heads, 63 sectors/track, 121576 cylinders, tota
1953126400 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Device Boot Start End Blocks Id System
/dev/sdc1 63 1953118439 976559188+ 83 Linux

Disk /dev/mapper/nfs: 1000.0 GB, 1000000716800 bytes
255 heads, 63 sectors/track, 121576 cylinders, total
1953126400 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Device Boot Start End Blocks Id
System
/dev/mapper/nfs1 63 1953118439 976559188+ 83
Linux

Disk /dev/mapper/nfs-part1: 1000.0 GB, 999996609024 bytes
255 heads, 63 sectors/track, 121575 cylinders, total
1953118377 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Como puedes ver ahora tenemos un nuevo dispositivo de bloque que utiliza la configuración de alias en el archivo de configuración multirruta /dev/mapper/nfs. El disco en el que he dividido e implementado el sistema de archivos es el dispositivo de bloque /dev/mapper/nfs-part1, por lo que puedes montarlo en tu sistema con la utilidad mount.

–Puedes comprobar el estado de salud del dispositivo de bloque multirruta y si ambos dispositivos están operativos ejecutando el siguiente comando:

# multipath –ll
nfs (3600c0ff000d823e5ed6a0a4b01000000) dm-3 HP,MSA2012i
size=931G features='1 queue_if_no_path' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=1 status=active
|- 6:0:0:0 sdb 8:16 active ready running
`- 5:0:0:0 sdc 8:32 active ready running

Referencias
Device Mapper Multipath
Setting up iSCSI Multipath in Ubuntu

La entrada original escrita por Iván Mora (SysOps Engineer @ CAPSiDE) puede encontrarse en opentodo.net.
Para ir a la segunda entrada de la serie sobre servidores en alta disponibilidad escrita por Iván, haz clic aquí.

TAGS: corosync, dm-multipath, how-to, iscsi, nfs server, pacemaker, storage, Ubuntu

speech-bubble-13-icon Created with Sketch.
Comentarios

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*
*