Diferencia entre revisiones de «ISCSI»

De jagfloriano.com
Ir a la navegaciónIr a la búsqueda
Sin resumen de edición
Línea 15: Línea 15:
     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.
     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.
     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 — <code>192.168.0.80</code>
* '''Nodos Pacemaker'''
** Nodo1 — <code>192.168.0.81</code>
** Nodo2 — <code>192.168.0.82</code>
---
== 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:
<syntaxhighlight lang="bash">
yum --enablerepo=epel install -y \
scsi-target-utils \
targetcli \
policycoreutils-python
</syntaxhighlight>
---
=== Configuración del iSCSI Target (targetcli) ===
Acceder a la consola de configuración:
<syntaxhighlight lang="bash">
targetcli
</syntaxhighlight>
Crear el backstore y el target iSCSI:
<syntaxhighlight lang="bash">
cd backstores/fileio
create disk01 /var/lib/iscsi_disks/disk01.img 8G
cd /iscsi
create iqn.2027-04.icecube:storage.target00
</syntaxhighlight>
Crear el LUN y asociarlo al target:
<syntaxhighlight lang="bash">
cd iqn.2027-04.icecube:storage.target00/tpg1/luns
create /backstores/fileio/disk01
</syntaxhighlight>
Configurar ACLs y autenticación CHAP:
<syntaxhighlight lang="bash">
cd ../acls
create iqn.2027-04.icecube:www.icecube
cd iqn.2027-04.icecube:www.icecube
set auth userid=bonzo
set auth password=asir2020
</syntaxhighlight>
Salir y guardar la configuración:
<syntaxhighlight lang="bash">
exit
</syntaxhighlight>
---
=== Comprobación del servicio iSCSI ===
Verificar que el puerto iSCSI está en escucha:
<syntaxhighlight lang="bash">
ss -napt | grep 3260
</syntaxhighlight>
Abrir el servicio en el firewall:
<syntaxhighlight lang="bash">
firewall-cmd --add-service=iscsi-target --permanent
firewall-cmd --reload
</syntaxhighlight>
---
== Configuración alternativa del Target (tgt) ==
Ajustar contextos SELinux:
<syntaxhighlight lang="bash">
chcon -R -t tgtd_var_lib_t /var/lib/iscsi_disks
semanage fcontext -a -t tgtd_var_lib_t /var/lib/iscsi_disks
</syntaxhighlight>
Configurar el archivo <code>/etc/tgt/targets.conf</code>:
<syntaxhighlight lang="ini">
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 asir2020
</target>
</syntaxhighlight>
Iniciar y habilitar el servicio:
<syntaxhighlight lang="bash">
systemctl start tgtd
systemctl enable tgtd
</syntaxhighlight>
Verificación del target:
<syntaxhighlight lang="bash">
tgtadm --mode target --op show
</syntaxhighlight>
---
== Configuración del iSCSI Initiator en los nodos ==
Los siguientes pasos deben ejecutarse en '''todos los nodos del clúster'''.
---
=== Instalación de paquetes ===
<syntaxhighlight lang="bash">
yum --enablerepo=epel install -y \
scsi-target-utils \
iscsi-initiator-utils
</syntaxhighlight>
---
=== Configuración del iniciador ===
Comprobar el IQN del iniciador:
<syntaxhighlight lang="bash">
cat /etc/iscsi/initiatorname.iscsi
</syntaxhighlight>
Editar el archivo de configuración CHAP:
<syntaxhighlight lang="bash">
vim /etc/iscsi/iscsid.conf
</syntaxhighlight>
Verificar parámetros de autenticación:
<syntaxhighlight lang="bash">
grep -i node.session.auth /etc/iscsi/iscsid.conf | grep -v ^#
</syntaxhighlight>
---
=== Descubrimiento y conexión al target ===
Descubrir targets disponibles:
<syntaxhighlight lang="bash">
iscsiadm -m discovery -t sendtargets -p 192.168.0.80
</syntaxhighlight>
Iniciar sesión:
<syntaxhighlight lang="bash">
iscsiadm -m node --login
</syntaxhighlight>
Verificar la sesión activa:
<syntaxhighlight lang="bash">
iscsiadm -m session -o show
</syntaxhighlight>
---
=== Verificación del disco compartido ===
Comprobar que el nuevo disco aparece en el sistema:
<syntaxhighlight lang="bash">
lsblk
</syntaxhighlight>
Inicializar el disco como volumen físico:
<syntaxhighlight lang="bash">
pvcreate /dev/sdb
</syntaxhighlight>
---
== 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

Revisión del 11:37 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
  • Nodos Pacemaker
    • Nodo1 — 192.168.0.81
    • Nodo2 — 192.168.0.82

---

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:

targetcli

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=asir2020

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 asir2020
</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