Capítulo 7. Sistemas de archivos GFS2 en un clúster
Esta sección establece:
- Un procedimiento para configurar un clúster Pacemaker que incluya sistemas de archivos GFS2
- Un procedimiento para migrar volúmenes lógicos de RHEL 7 que contienen sistemas de archivos GFS2 a un clúster de RHEL 8
7.1. Configuración de un sistema de archivos GFS2 en un clúster
Este procedimiento es un resumen de los pasos necesarios para configurar un cluster Pacemaker que incluya sistemas de archivos GFS2. Este ejemplo crea tres sistemas de archivos GFS2 en tres volúmenes lógicos.
Como requisito previo a este procedimiento, debe instalar e iniciar el software de clúster en todos los nodos y crear un clúster básico de dos nodos. También debe configurar el cercado para el cluster. Para obtener información sobre la creación de un cluster Pacemaker y la configuración del cercado para el cluster, consulte Creación de un cluster de alta disponibilidad de Red Hat con Pacemaker.
Procedimiento
En ambos nodos del clúster, instale los paquetes
lvm2-lockd
,gfs2-utils
ydlm
. El paquetelvm2-lockd
forma parte del canal AppStream y los paquetesgfs2-utils
ydlm
forman parte del canal Resilient Storage.#
yum install lvm2-lockd gfs2-utils dlm
Ajuste el parámetro global de Marcapasos
no_quorum_policy
afreeze
.NotaPor defecto, el valor de
no-quorum-policy
se establece enstop
, lo que indica que una vez que se pierde el quórum, todos los recursos de la partición restante se detendrán inmediatamente. Normalmente este valor por defecto es la opción más segura y óptima, pero a diferencia de la mayoría de los recursos, GFS2 requiere quórum para funcionar. Cuando se pierde el quórum, tanto las aplicaciones que utilizan los montajes de GFS2 como el propio montaje de GFS2 no pueden detenerse correctamente. Cualquier intento de detener estos recursos sin quórum fallará, lo que en última instancia provocará que todo el clúster quede vallado cada vez que se pierda el quórum.Para solucionar esta situación, configure
no-quorum-policy
afreeze
cuando GFS2 esté en uso. Esto significa que cuando se pierde el quórum, la partición restante no hará nada hasta que se recupere el quórum.#
pcs property set no-quorum-policy=freeze
Configure un recurso
dlm
. Esta es una dependencia necesaria para configurar un sistema de archivos GFS2 en un clúster. Este ejemplo crea el recursodlm
como parte de un grupo de recursos llamadolocking
.[root@z1 ~]#
pcs resource create dlm --group locking ocf:pacemaker:controld op monitor interval=30s on-fail=fence
Clone el grupo de recursos
locking
para que el grupo de recursos pueda estar activo en ambos nodos del clúster.[root@z1 ~]#
pcs resource clone locking interleave=true
Configure un recurso
lvmlockd
como parte del grupolocking
.[root@z1 ~]#
pcs resource create lvmlockd --group locking ocf:heartbeat:lvmlockd op monitor interval=30s on-fail=fence
Compruebe el estado del clúster para asegurarse de que el grupo de recursos
locking
se ha iniciado en ambos nodos del clúster.[root@z1 ~]#
pcs status --full
Cluster name: my_cluster [...] Online: [ z1.example.com (1) z2.example.com (2) ] Full list of resources: smoke-apc (stonith:fence_apc): Started z1.example.com Clone Set: locking-clone [locking] Resource Group: locking:0 dlm (ocf::pacemaker:controld): Started z1.example.com lvmlockd (ocf::heartbeat:lvmlockd): Started z1.example.com Resource Group: locking:1 dlm (ocf::pacemaker:controld): Started z2.example.com lvmlockd (ocf::heartbeat:lvmlockd): Started z2.example.com Started: [ z1.example.com z2.example.com ]Compruebe que el demonio
lvmlockd
se está ejecutando en ambos nodos del clúster.[root@z1 ~]#
ps -ef | grep lvmlockd
root 12257 1 0 17:45 ? 00:00:00 lvmlockd -p /run/lvmlockd.pid -A 1 -g dlm [root@z2 ~]#ps -ef | grep lvmlockd
root 12270 1 0 17:45 ? 00:00:00 lvmlockd -p /run/lvmlockd.pid -A 1 -g dlmEn un nodo del clúster, cree dos grupos de volúmenes compartidos. Un grupo de volumen contendrá dos sistemas de archivos GFS2 y el otro grupo de volumen contendrá un sistema de archivos GFS2.
El siguiente comando crea el grupo de volúmenes compartidos
shared_vg1
en/dev/vdb
.[root@z1 ~]#
vgcreate --shared shared_vg1 /dev/vdb
Physical volume "/dev/vdb" successfully created. Volume group "shared_vg1" successfully created VG shared_vg1 starting dlm lockspace Starting locking. Waiting until locks are ready...El siguiente comando crea el grupo de volúmenes compartidos
shared_vg2
en/dev/vdc
.[root@z1 ~]#
vgcreate --shared shared_vg2 /dev/vdc
Physical volume "/dev/vdc" successfully created. Volume group "shared_vg2" successfully created VG shared_vg2 starting dlm lockspace Starting locking. Waiting until locks are ready...En el segundo nodo del clúster, inicie el gestor de bloqueos para cada uno de los grupos de volúmenes compartidos.
[root@z2 ~]#
vgchange --lock-start shared_vg1
VG shared_vg1 starting dlm lockspace Starting locking. Waiting until locks are ready... [root@z2 ~]#vgchange --lock-start shared_vg2
VG shared_vg2 starting dlm lockspace Starting locking. Waiting until locks are ready...En un nodo del clúster, cree los volúmenes lógicos compartidos y formatee los volúmenes con un sistema de archivos GFS2. Se necesita un diario para cada nodo que monte el sistema de archivos. Asegúrese de crear suficientes diarios para cada uno de los nodos del clúster.
[root@z1 ~]#
lvcreate --activate sy -L5G -n shared_lv1 shared_vg1
Logical volume "shared_lv1" created. [root@z1 ~]#lvcreate --activate sy -L5G -n shared_lv2 shared_vg1
Logical volume "shared_lv2" created. [root@z1 ~]#lvcreate --activate sy -L5G -n shared_lv1 shared_vg2
Logical volume "shared_lv1" created. [root@z1 ~]#mkfs.gfs2 -j2 -p lock_dlm -t my_cluster:gfs2-demo1 /dev/shared_vg1/shared_lv1
[root@z1 ~]#mkfs.gfs2 -j2 -p lock_dlm -t my_cluster:gfs2-demo2 /dev/shared_vg1/shared_lv2
[root@z1 ~]#mkfs.gfs2 -j2 -p lock_dlm -t my_cluster:gfs2-demo3 /dev/shared_vg2/shared_lv1
Cree un recurso
LVM-activate
para cada volumen lógico para activar automáticamente ese volumen lógico en todos los nodos.Crea un recurso
LVM-activate
llamadosharedlv1
para el volumen lógicoshared_lv1
en el grupo de volúmenesshared_vg1
. Este comando también crea el grupo de recursosshared_vg1
que incluye el recurso. En este ejemplo, el grupo de recursos tiene el mismo nombre que el grupo de volumen compartido que incluye el volumen lógico.[root@z1 ~]#
pcs resource create sharedlv1 --group shared_vg1 ocf:heartbeat:LVM-activate lvname=shared_lv1 vgname=shared_vg1 activation_mode=shared vg_access_mode=lvmlockd
Crea un recurso
LVM-activate
llamadosharedlv2
para el volumen lógicoshared_lv2
en el grupo de volúmenesshared_vg1
. Este recurso también formará parte del grupo de recursosshared_vg1
.[root@z1 ~]#
pcs resource create sharedlv2 --group shared_vg1 ocf:heartbeat:LVM-activate lvname=shared_lv2 vgname=shared_vg1 activation_mode=shared vg_access_mode=lvmlockd
Crea un recurso
LVM-activate
llamadosharedlv3
para el volumen lógicoshared_lv1
en el grupo de volúmenesshared_vg2
. Este comando también crea el grupo de recursosshared_vg2
que incluye el recurso.[root@z1 ~]#
pcs resource create sharedlv3 --group shared_vg2 ocf:heartbeat:LVM-activate lvname=shared_lv1 vgname=shared_vg2 activation_mode=shared vg_access_mode=lvmlockd
Clona los dos nuevos grupos de recursos.
[root@z1 ~]#
pcs resource clone shared_vg1 interleave=true
[root@z1 ~]#pcs resource clone shared_vg2 interleave=true
Configure las restricciones de ordenación para garantizar que el grupo de recursos
locking
que incluye los recursosdlm
ylvmlockd
se inicie primero.[root@z1 ~]#
pcs constraint order start locking-clone then shared_vg1-clone
Adding locking-clone shared_vg1-clone (kind: Mandatory) (Options: first-action=start then-action=start) [root@z1 ~]#pcs constraint order start locking-clone then shared_vg2-clone
Adding locking-clone shared_vg2-clone (kind: Mandatory) (Options: first-action=start then-action=start)Configure las restricciones de colocación para garantizar que los grupos de recursos
vg1
yvg2
se inicien en el mismo nodo que el grupo de recursoslocking
.[root@z1 ~]#
pcs constraint colocation add shared_vg1-clone with locking-clone
[root@z1 ~]#pcs constraint colocation add shared_vg2-clone with locking-clone
En ambos nodos del clúster, verifique que los volúmenes lógicos estén activos. Puede haber un retraso de unos segundos.
[root@z1 ~]#
lvs
LV VG Attr LSize shared_lv1 shared_vg1 -wi-a----- 5.00g shared_lv2 shared_vg1 -wi-a----- 5.00g shared_lv1 shared_vg2 -wi-a----- 5.00g [root@z2 ~]#lvs
LV VG Attr LSize shared_lv1 shared_vg1 -wi-a----- 5.00g shared_lv2 shared_vg1 -wi-a----- 5.00g shared_lv1 shared_vg2 -wi-a----- 5.00gCree un recurso de sistema de archivos para montar automáticamente cada sistema de archivos GFS2 en todos los nodos.
No debe añadir el sistema de archivos al archivo
/etc/fstab
porque se gestionará como un recurso de clúster de Pacemaker. Las opciones de montaje se pueden especificar como parte de la configuración del recurso conoptions=options
. Ejecute el comandopcs resource describe Filesystem
para obtener las opciones de configuración completas.Los siguientes comandos crean los recursos del sistema de archivos. Estos comandos añaden cada recurso al grupo de recursos que incluye el recurso de volumen lógico para ese sistema de archivos.
[root@z1 ~]#
pcs resource create sharedfs1 --group shared_vg1 ocf:heartbeat:Filesystem device="/dev/shared_vg1/shared_lv1" directory="/mnt/gfs1" fstype="gfs2" options=noatime op monitor interval=10s on-fail=fence
[root@z1 ~]#pcs resource create sharedfs2 --group shared_vg1 ocf:heartbeat:Filesystem device="/dev/shared_vg1/shared_lv2" directory="/mnt/gfs2" fstype="gfs2" options=noatime op monitor interval=10s on-fail=fence
[root@z1 ~]#pcs resource create sharedfs3 --group shared_vg2 ocf:heartbeat:Filesystem device="/dev/shared_vg2/shared_lv1" directory="/mnt/gfs3" fstype="gfs2" options=noatime op monitor interval=10s on-fail=fence
Compruebe que los sistemas de archivos GFS2 están montados en ambos nodos del clúster.
[root@z1 ~]#
mount | grep gfs2
/dev/mapper/shared_vg1-shared_lv1 on /mnt/gfs1 type gfs2 (rw,noatime,seclabel) /dev/mapper/shared_vg1-shared_lv2 on /mnt/gfs2 type gfs2 (rw,noatime,seclabel) /dev/mapper/shared_vg2-shared_lv1 on /mnt/gfs3 type gfs2 (rw,noatime,seclabel) [root@z2 ~]#mount | grep gfs2
/dev/mapper/shared_vg1-shared_lv1 on /mnt/gfs1 type gfs2 (rw,noatime,seclabel) /dev/mapper/shared_vg1-shared_lv2 on /mnt/gfs2 type gfs2 (rw,noatime,seclabel) /dev/mapper/shared_vg2-shared_lv1 on /mnt/gfs3 type gfs2 (rw,noatime,seclabel)Comprueba el estado del clúster.
[root@z1 ~]#
pcs status --full
Cluster name: my_cluster [...1 Full list of resources: smoke-apc (stonith:fence_apc): Started z1.example.com Clone Set: locking-clone [locking] Resource Group: locking:0 dlm (ocf::pacemaker:controld): Started z2.example.com lvmlockd (ocf::heartbeat:lvmlockd): Started z2.example.com Resource Group: locking:1 dlm (ocf::pacemaker:controld): Started z1.example.com lvmlockd (ocf::heartbeat:lvmlockd): Started z1.example.com Started: [ z1.example.com z2.example.com ] Clone Set: shared_vg1-clone [shared_vg1] Resource Group: shared_vg1:0 sharedlv1 (ocf::heartbeat:LVM-activate): Started z2.example.com sharedlv2 (ocf::heartbeat:LVM-activate): Started z2.example.com sharedfs1 (ocf::heartbeat:Filesystem): Started z2.example.com sharedfs2 (ocf::heartbeat:Filesystem): Started z2.example.com Resource Group: shared_vg1:1 sharedlv1 (ocf::heartbeat:LVM-activate): Started z1.example.com sharedlv2 (ocf::heartbeat:LVM-activate): Started z1.example.com sharedfs1 (ocf::heartbeat:Filesystem): Started z1.example.com sharedfs2 (ocf::heartbeat:Filesystem): Started example.co Started: [ z1.example.com z2.example.com ] Clone Set: shared_vg2-clone [shared_vg2] Resource Group: shared_vg2:0 sharedlv3 (ocf::heartbeat:LVM-activate): Started z2.example.com sharedfs3 (ocf::heartbeat:Filesystem): Started z2.example.com Resource Group: shared_vg2:1 sharedlv3 (ocf::heartbeat:LVM-activate): Started z1.example.com sharedfs3 (ocf::heartbeat:Filesystem): Started z1.example.com Started: [ z1.example.com z2.example.com ] ...
Recursos adicionales
- Para obtener información sobre la configuración del almacenamiento en bloque compartido para un clúster de Red Hat High Availability con Microsoft Azure Shared Disks, consulte Configuración del almacenamiento en bloque compartido.
- Para obtener información sobre la configuración del almacenamiento en bloque compartido para un clúster de Red Hat High Availability con volúmenes de Amazon EBS Multi-Attach, consulte Configuración del almacenamiento en bloque compartido.
- Para obtener información sobre la configuración del almacenamiento en bloque compartido para un clúster de alta disponibilidad de Red Hat en Alibaba Cloud, consulte Configuración del almacenamiento en bloque compartido para un clúster de alta disponibilidad de Red Hat en Alibaba Cloud.