Crear NAS exportar ISCSI y crear un Cluster con GFS2 con GNU/Linux
By: Date: noviembre 20, 2015 Categories: Consultoria y Manuales

En el artículo anterior sobre virtualización con software libre hable en una párrafo sobre migrar las maquinas vivas a otra máquina dentro del data center y por qué no incluso hasta en otros datacenter fuera del país o remotamente alejados. Mientras se tenga el suficiente ancho de banda todo se puede se recomienda una conexión Gigabit en los site o datacenter para un rendimiento óptimo aunque funcionara sin problemas con menos ancho de banda. En Septiembre 10, 2009 había hablado sobre GFS pero eso fue hace muchos años esa información podría ya no serle útil a nadie porque tanto la distro que use como las herramientas están obsoletas, es hora de actualizar el articulo al 2015, para lograrlo esta vez usare Internet SCSI

¿ Que es ISCSI y GFS2 ?

Internet SCSI ( ISCSI )

ISCSI es SCSI sobre IP como las llamadas telefónicas que son voz sobre internet ( VoIP ) ISCSI simplemente entrega un dispositivo por bloques de almacenamiento pero en lugar de ir en la placa de la tarjeta madre del servidor este llega vía TCP/IP una vez recibido los datos que transportan el SCSI se asigna como un disco duro más por ejemplo /dev/sdb

Una vez como dispositivo de bloques ( /dev/sdx ) podemos tratarlo como cualquier otro disco, particionarlo y formatearlo con el sistema de archivos que nos sea útil

¿ Sí puedo adjuntar vía red local o internet el mismo dispositivo SCSI a muchos servidores y formatearlo con NTFS, EXT2, EXT3, EXT4 o XFS, Por qué requiero GFS ?

La gran mayoría de los sistemas de archivos son monomontado es decir, están pensados para que un sistema operativo y solo uno los controle, podría montar un NTFS en 2 Windows Server usando el mismo dispositivo ISCSI pero cada Windows piensa que el disco duro esta solo a su disposición por lo que empiezan a manipular creando archivos, modificando valores de archivos uno sobre el otro sin percatarse de que hay otro Windows haciendo lo mismo sobre el mismo disco duro al final queda una sopa el NTFS y todos los datos terminan corruptos, cuando se hizo NTFS o EXT2 no pensaron que alguien los montaría al mismo tiempo en 2 máquinas diferentes, no tendría sentido porque sería difícil tomar un disco duro físico y conectarlo a 2 computadoras simultáneamente cada una con su propio sistema operativo, sin embargo ISCSI al ser un dispositivo lógico que se comporta como uno físico abre la posibilidad de que se pueda conectar un mismo disco duro a 2 servidores diferentes cada uno con su propio sistema operativo. Montar un mismo disco duro en diferentes servidores abre la necesidad de un nuevo sistema de archivos, uno que sea multimontado y que sistemas operativos diferentes puedan usarlo sin corromper sus datos.

ISCSI

Exportar un dispositivo de bloques ISCSI desde un archivo o desde un dispositvo de blques fisico

1 Instalar paquetes necesarios para clientes y servidores de ICSI

yum install targetcli iscsi-initiator-utils -y

2 Dispositivo de blques

Si es por archivo se tiene que crear una carpeta contenedora en el FS, ej /home/iscsi, en caso de que se use un disco fisico solo se requiere saber su link a dev ej /dev/sda#

3 Ejecutar targetcli, en su interior hay un FS virtual con directorios y archivos

4 backstores ( aqui se ligan los dispositivos con discos virtual ISCSI

ir a /backstores con el comando cd. En su interior hay subcarpetas fileio es para archivos en el FS del sistema operativo que se almacenaran en /home/iscsi o en block

*** Con archivo imagen en disco (El tercer parametro especifica el tamaño del archivo a crear)

create Disco1 /home/iscsi/disco1.img 1G

*** Con disco fisco

create Disco1 /dev/sd#

5 Crear el iqn

cd /iscsi

create

Devolvera una respuesta similar a:

/iscsi> create
Created target iqn.2003-01.org.linux-iscsi.gfs.x8664:sn.d6fa7e969775.
Created TPG 1.
Global pref auto_add_default_portal=true
Created default portal listening on all IPs (0.0.0.0), port 3260.

Guardar el nombre del icq creado, en este caso iqn.2003-01.org.linux-iscsi.gfs.x8664:sn.d6fa7e969775

6 Crear el listener con la IP en la que escuchara, por default se ha creado 0.0.0.0 3260

ejemplo: cd /iscsi/nombreiqn/tpg1/portals

cd /iscsi/iqn.2003-01.org.linux-iscsi.gfs.x8664:sn.d6fa7e969775/tpg1/portals

Borrar el listener por default

delete 0.0.0.0 3260

Crear el nuevo listener con la IP donde se conectaran los clientes.

create 192.168.3.83 3260

Respondera:
Created network portal 192.168.3.83:6260.

7 Crear el lun ligandolo al dispositivo de bloques o el archivo imagen

ejemplo cd /iscsi/nombreiqn/tpg1/luns

cd /iscsi/iqn.2003-01.org.linux-iscsi.gfs.x8664:sn.d6fa7e969775/tpg1/luns

*** Para el archivo imagen

create /backstores/fileio/Disco1

*** Para el dispositivo de bloques

create /backstores/block/Disco1

8 Crear las claves de acceso para los clientes en acl

ejemplo cd /iscsi/nombreiqn/tpg1/acls
cd /iscsi/iqn.2003-01.org.linux-iscsi.gfs.x8664:sn.d6fa7e969775/tpg1/acls

ejemplo create nombredeliqn:etiqueta

create iqn.2003-01.org.linux-iscsi.gfs.x8664:sn.d6fa7e969775:Disco1

9 Asignar claves de acceso a la etiqueta

cd iqn.2003-01.org.linux-iscsi.gfs.x8664:sn.d6fa7e969775:disco1

set auth userid=usuario
set auth password=clave

10 Salir y preparar los servicios para que esten disponibles

exit

systemctl start target ; systemctl enable target

IMPORTAR el dispositivo ISCSI para maquinas remotas o incluso el mismo servidor

1 Editar el archivo /etc/iscsi/initiatorname.iscsi y asignarle el iqn con etiqueta

InitiatorName=iqn.2003-01.org.linux-iscsi.gfs.x8664:sn.d6fa7e969775:disco1

2 Editar el archivo /etc/iscsi/iscsid.conf para autenticar con el servidor

node.session.auth.authmethod = CHAP

node.session.auth.username = usuario
node.session.auth.password = clave

3 Descubrir si el ISCSI esta siendo exportado:

ej iscsiadm -m discovery -t sendtargets -p IpEnLaQueEsuchaElServidor

iscsiadm -m discovery -t sendtargets -p 192.168.3.83

4 Conectar al servidor

iscsiadm -m node –login

Si el login es exitoso, se creara un nuevo dispositivo de bloques en el cliente, para ver todos los dipositivos usar el comando parted -l

parted -l

Devolvera un bloque similar a:

Error: /dev/sda: unrecognised disk label
Model: LIO-ORG Disco1 (scsi)
Disk /dev/sda: 5369MB
Sector size (logical/physical): 512B/512B
Partition Table: unknown
Disk Flags:

Donde /dev/sda es el dispositivo de bloques o disco duro exportado del servidor ISCSI, Ahora puede ser tratado como cualquier disco duro

GFS2 sobre un disposivo de bloques ISCSI

1 Instalar los paquetes requeridos

yum install gfs2-utils lvm2-cluster cman modcluster rgmanager openais pcs fence-agents-all -y

2 Agregar al /etc/hosts las computadoras participantes

192.168.3.83 nodo1

3 Activar los procesos para el cluster GFS

systemctl start pcsd ; systemctl enable pcsd

4 Asignarle una clave al usuario de sistema operativo hacluster

passwd hacluster

5 Logearse al cluster

pcs cluster auth nodo1

6 Iniciar el cluster

ejemplo pcs cluster setup –start –name NombrecLuster Nodo1 Nodo2 Nodo3

pcs cluster setup –start –name clusterserver nodo1
pcs cluster enable –all

7 Crear el dispositivo de cluster sobre del dipositivo del ISCSI

pcs stonith create NombreDispositovo fence_scsi devices=”/dev/sda” meta provides=unfencing

6 Activar los volumenes en cluster

lvmconf –enable-cluster

7 Crear el protocolo de bloqueo de archivos y de claim para el volumen

pcs resource create dlm ocf:pacemaker:controld op monitor interval=30s on-fail=fence clone interleave=true ordered=true

pcs resource create clvmd ocf:heartbeat:clvm op monitor interval=30s on-fail=fence clone interleave=true ordered=true

8 Activar el protocolo de bloqueo y claim

pcs constraint order start dlm-clone then clvmd-clone
pcs constraint colocation add clvmd-clone with dlm-clone
pcs property set no-quorum-policy=freeze

9 Creacion del volumen fisico que va sobre el dispositivo ISCSI

pvcreate /dev/sda

10 Crear un nombre del grupo de volumenes en el dispositivo ISCSI -Ay es autobackup YES y cy es Cluster YES

vgcreate -Ay -cy volumenes_clusterizados /dev/sda

11 Activar el bloqueo y el claim para el grupo de volumenes

pcs resource debug-start dlm
pcs resource debug-start clvmd

11 Crear un volumen logico dentro del grupo de volumenes ( como particiones )

lvcreate -L 1G -n Volumen1 volumenes_clusterizados

12 Formatear Volumen1 con GFS

mkfs.gfs2 -p lock_dlm -t NombrecLuster:gfs -j 10 /dev/volumenes_clusterizados/Volumen1

13 Montar el Volumen1

pcs resource create Volumen1 Filesystem device=”/dev/volumenes_clusterizados/Volumen1″ directory=”/mnt” fstype=”gfs2″ options=”noatime,nodiratime” op monitor interval=10s on-fail=fence clone interleave=true

mount /dev/volumenes_clusterizados/Volumen1 /puntodemontura

Montar los volumenes despues de un reinicio… Debe ser hecho de forma manual, no en el fstab

pcs resource debug-start dlm
pcs resource debug-start clvmd

mount /dev/volumenes_clusterizados/Volumen1 /puntodemontura

Estado del cluster GFS para obtener nombre de cluster o de dispositivos creados en el cluster

pcs status

El siguiente vídeo muestra un GFS2 funcionando.

One thought on “Crear NAS exportar ISCSI y crear un Cluster con GFS2 con GNU/Linux

  1. Usa: Google Chrome Google Chrome 52.0.2743.82 en Linux Linux - Detectado...

    Hola, con esta configuracion no es necesario usar discos quorum?, o como se maneja el failover como sabra un nodo que el otro esta caido?

Deja un comentario

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