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.
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?