Diferencia entre revisiones de «ISCSI»
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
- 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:
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