Diferencia entre revisiones de «ISCSI»
| Línea 75: | Línea 75: | ||
Copyright 2011-2013 by Datera, Inc and others. | Copyright 2011-2013 by Datera, Inc and others. | ||
For help on commands, type 'help'. | For help on commands, type 'help'. | ||
</syntaxhighlight> | |||
<syntaxhighlight lang="bash"> | |||
Crear el backstore y el target iSCSI: | |||
/> cd backstores/fileio | /> cd backstores/fileio | ||
/backstores/fileio> create disk01 /var/lib/iscsi_disks/disk01.img 8G | /backstores/fileio> create disk01 /var/lib/iscsi_disks/disk01.img 8G | ||
Created fileio disk01 with size 8589934592 | Created fileio disk01 with size 8589934592 | ||
/backstores/fileio> cd /iscsi | /backstores/fileio> cd /iscsi | ||
/iscsi> create iqn.2027-04.icecube:storage.target00 | /iscsi> create iqn.2027-04.icecube:storage.target00 | ||
| Línea 85: | Línea 91: | ||
Global pref auto_add_default_portal=true | Global pref auto_add_default_portal=true | ||
Created default portal listening on all IPs (0.0.0.0), port 3260. | Created default portal listening on all IPs (0.0.0.0), port 3260. | ||
</syntaxhighlight> | |||
Crear el LUN y asociarlo al target: | |||
<syntaxhighlight lang="bash"> | |||
/iscsi> cd iqn.2027-04.icecube:storage.target00/tpg1/luns | /iscsi> cd iqn.2027-04.icecube:storage.target00/tpg1/luns | ||
/iscsi/iqn.20...t00/tpg1/luns> create /backstores/fileio/disk01 | /iscsi/iqn.20...t00/tpg1/luns> create /backstores/fileio/disk01 | ||
Created LUN 0. | Created LUN 0. | ||
</syntaxhighlight> | |||
Configurar ACLs y autenticación CHAP: | |||
<syntaxhighlight lang="bash"> | |||
/iscsi/iqn.20...t00/tpg1/luns> cd ../acls | /iscsi/iqn.20...t00/tpg1/luns> cd ../acls | ||
| Línea 102: | Línea 115: | ||
/iscsi/iqn.20...e:www.icecube> set auth password=PASSWORD2020 | /iscsi/iqn.20...e:www.icecube> set auth password=PASSWORD2020 | ||
Parameter password is now 'PASSWORD2020'. | Parameter password is now 'PASSWORD2020'. | ||
</syntaxhighlight> | |||
Salir y guardar la configuración: | |||
<syntaxhighlight lang="bash"> | |||
/iscsi/iqn.20...e:www.icecube> exit | /iscsi/iqn.20...e:www.icecube> exit | ||
Global pref auto_save_on_exit=true | Global pref auto_save_on_exit=true | ||
Revisión del 11:48 2 ene 2026
Introducción
El protocolo iSCSI es un protocolo que nos proporciona acceso a dispositivos de bloques sobre la red (TCP/IP). A diferencia de otros protocolos como NFS o Samba, no proporciona ficheros o directorios, sino dispositivos de bloques de forma íntegra, es decir, se conecta un nuevo disco duro y es posible compartir el disco duro en bruto a través de la red, habilitando su uso de forma remota, sin necesidad de crear una tabla de particiones ni introducir un sistema de ficheros en el mismo, pues esa será labor del extremo que actúe como cliente, que tendrá control total sobre dicho dispositivo de bloques.
Otra de las grandes características es que nos permite montar el mismo dispositivo de bloques en varios equipos clientes de forma simultánea (puede llegar a provocar un problema de concurrencia que habría que solventar a otro nivel, pero como tal, está soportado), de una forma mucho más económica que Fibre Channel, teniendo en cuenta además que tiene soporte en la mayoría de sistemas operativos.
Dicho protocolo suele utilizarse en redes de almacenamiento, ya que nos proporcionan un aislamiento adecuado para compartir dichos dispositivos de una forma más segura, aunque tal y como veremos a continuación, dicho protocolo nos ofrece sus propios mecanismos de autenticación.
Antes de empezar a hacer uso de forma práctica de dicho protocolo, es necesario conocer una serie de términos:
Unidad lógica (LUN): Dispositivo de bloques a compartir por el servidor iSCSI (discos duros, particiones, volúmenes lógicos…). Target: Recurso a compartir desde el servidor, que incluye una o varias LUN. Por ejemplo, podemos conectar a la máquina servidora 3 discos duros e incorporarlos dentro de un mismo target, al que posteriormente se conectará un cliente mediante una única conexión y podrá hacer uso de dichos discos. Dependiendo del caso, también podrían haberse creado 3 targets, uno por cada disco, y distribuirlos de distinta manera. Initiator: Cliente iSCSI que realiza la conexión. Multipath: Permite garantizar la disponibilidad del dispositivo de bloques remoto en caso de haber más de una ruta posible entre el target y el initiator, pues en caso de perder la conexión mediante una ruta, dicha conexión se mantendría a través de otra. Como es lógico, depende de la infraestructura que tengamos. IQN: Formato utilizado para la descripción única de los recursos que se comparten. Se suele utilizar una regla para nombrarlos de la forma iqn.(año)-(mes).(nombre de dominio invertido):(nombre único). Por ejemplo, iqn.2021-02.com.alvarovf:target1. iSNS: Protocolo que permite gestionar recursos iSCSI como si fueran Fibre Channel.
Creación de un clúster Pacemaker
Introducción
En este laboratorio se configura un clúster Pacemaker utilizando almacenamiento compartido vía iSCSI. Para ello se emplean un mínimo de tres máquinas:
- Dos nodos que formarán el clúster Pacemaker
- Una máquina adicional que actuará como servidor de almacenamiento SAN
El objetivo es simular el uso de discos compartidos de una cabina de almacenamiento en una infraestructura real.
---
Topología del laboratorio
Máquinas
- Servidor SAN
- Icecube —
192.168.0.80
- Icecube —
- Nodos Pacemaker
- Nodo1 —
192.168.0.81 - Nodo2 —
192.168.0.82
- Nodo1 —
---
Configuración del almacenamiento SAN
Para simular una cabina de almacenamiento se compartirá un disco mediante iSCSI hacia ambos nodos del clúster Pacemaker.
---
Instalación de paquetes requeridos
En el servidor SAN:
yum --enablerepo=epel install -y \
scsi-target-utils \
targetcli \
policycoreutils-python
---
Configuración del iSCSI Target (targetcli)
Acceder a la consola de configuración:
[root@icecube ~]# targetcli
Warning: Could not load preferences file /root/.targetcli/prefs.bin.
targetcli shell version 2.1.53
Copyright 2011-2013 by Datera, Inc and others.
For help on commands, type 'help'.
Crear el backstore y el target iSCSI:
/> cd backstores/fileio
/backstores/fileio> create disk01 /var/lib/iscsi_disks/disk01.img 8G
Created fileio disk01 with size 8589934592
/backstores/fileio> cd /iscsi
/iscsi> create iqn.2027-04.icecube:storage.target00
Created target iqn.2027-04.icecube:storage.target00.
Created TPG 1.
Global pref auto_add_default_portal=true
Created default portal listening on all IPs (0.0.0.0), port 3260.
Crear el LUN y asociarlo al target:
/iscsi> cd iqn.2027-04.icecube:storage.target00/tpg1/luns
/iscsi/iqn.20...t00/tpg1/luns> create /backstores/fileio/disk01
Created LUN 0.
Configurar ACLs y autenticación CHAP:
/iscsi/iqn.20...t00/tpg1/luns> cd ../acls
/iscsi/iqn.20...t00/tpg1/acls> create iqn.2027-04.icecube:www.icecube
Created Node ACL for iqn.2027-04.icecube:www.icecube
Created mapped LUN 0.
/iscsi/iqn.20...t00/tpg1/acls> cd iqn.2027-04.icecube:www.icecube
/iscsi/iqn.20...e:www.icecube> set auth userid=bonzo
Parameter userid is now 'bonzo'.
/iscsi/iqn.20...e:www.icecube> set auth password=PASSWORD2020
Parameter password is now 'PASSWORD2020'.
Salir y guardar la configuración:
/iscsi/iqn.20...e:www.icecube> exit
Global pref auto_save_on_exit=true
Configuration saved to /etc/target/saveconfig.json
[root@icecube ~]# ss -napt | grep 3260
LISTEN 0 256 *:3260 *:*
[root@icecube ~]#
[root@icecube ~]# firewall-cmd --add-service=iscsi-target --permanent
success
[root@icecube ~]# firewall-cmd --reload
success
Crear el backstore y el target iSCSI:
cd backstores/fileio
create disk01 /var/lib/iscsi_disks/disk01.img 8G
cd /iscsi
create iqn.2027-04.icecube:storage.target00
Crear el LUN y asociarlo al target:
cd iqn.2027-04.icecube:storage.target00/tpg1/luns
create /backstores/fileio/disk01
Configurar ACLs y autenticación CHAP:
cd ../acls
create iqn.2027-04.icecube:www.icecube
cd iqn.2027-04.icecube:www.icecube
set auth userid=bonzo
set auth password=PASSWORD2020
Salir y guardar la configuración:
exit
---
Comprobación del servicio iSCSI
Verificar que el puerto iSCSI está en escucha:
ss -napt | grep 3260
Abrir el servicio en el firewall:
firewall-cmd --add-service=iscsi-target --permanent
firewall-cmd --reload
---
Configuración alternativa del Target (tgt)
Ajustar contextos SELinux:
chcon -R -t tgtd_var_lib_t /var/lib/iscsi_disks
semanage fcontext -a -t tgtd_var_lib_t /var/lib/iscsi_disks
Configurar el archivo /etc/tgt/targets.conf:
default-driver iscsi
<target iqn.2027-04.icecube:storage.target00>
backing-store /var/lib/iscsi_disks/disk01.img
initiator-address 192.168.0.81
initiator-address 192.168.0.82
incominguser bonzo PASSWORD2020
</target>
Iniciar y habilitar el servicio:
systemctl start tgtd
systemctl enable tgtd
Verificación del target:
tgtadm --mode target --op show
---
Configuración del iSCSI Initiator en los nodos
Los siguientes pasos deben ejecutarse en todos los nodos del clúster.
---
Instalación de paquetes
yum --enablerepo=epel install -y \
scsi-target-utils \
iscsi-initiator-utils
---
Configuración del iniciador
Comprobar el IQN del iniciador:
cat /etc/iscsi/initiatorname.iscsi
Editar el archivo de configuración CHAP:
vim /etc/iscsi/iscsid.conf
Verificar parámetros de autenticación:
grep -i node.session.auth /etc/iscsi/iscsid.conf | grep -v ^#
---
Descubrimiento y conexión al target
Descubrir targets disponibles:
iscsiadm -m discovery -t sendtargets -p 192.168.0.80
Iniciar sesión:
iscsiadm -m node --login
Verificar la sesión activa:
iscsiadm -m session -o show
---
Verificación del disco compartido
Comprobar que el nuevo disco aparece en el sistema:
lsblk
Inicializar el disco como volumen físico:
pvcreate /dev/sdb
---
Notas finales
- El disco iSCSI queda disponible para ser utilizado como recurso compartido en Pacemaker
- Todos los nodos deben ver el mismo dispositivo
- A partir de este punto se puede continuar con la configuración del clúster