Capítulo 7. Sistemas de arquivo GFS2 em um cluster
Esta seção fornece:
- Um procedimento para criar um cluster de Pacemaker que inclui sistemas de arquivo GFS2
- Um procedimento para migrar os volumes lógicos RHEL 7 que contêm sistemas de arquivo GFS2 para um cluster RHEL 8
7.1. Configuração de um sistema de arquivo GFS2 em um cluster
Este procedimento é um esboço dos passos necessários para a criação de um cluster Pacemaker que inclui sistemas de arquivos GFS2. Este exemplo cria três sistemas de arquivos GFS2 em três volumes lógicos.
Como pré-requisito para este procedimento, você deve instalar e iniciar o software de cluster em todos os nós e criar um cluster básico de dois nós. Você também deve configurar a vedação para o cluster. Para informações sobre como criar um cluster Pacemaker e configurar a vedação para o cluster, veja Criar um cluster Red Hat High-Availability com Pacemaker.
Procedimento
Em ambos os nós do cluster, instalar os pacotes
lvm2-lockd
,gfs2-utils
, edlm
. O pacotelvm2-lockd
faz parte do canal AppStream e os pacotesgfs2-utils
edlm
fazem parte do canal de Armazenamento Resiliente.#
yum install lvm2-lockd gfs2-utils dlm
Definir o parâmetro global Pacemaker
no_quorum_policy
parafreeze
.NotaPor padrão, o valor de
no-quorum-policy
está definido parastop
, indicando que uma vez perdido o quorum, todos os recursos na partição restante serão imediatamente parados. Normalmente este padrão é a opção mais segura e ótima, mas ao contrário da maioria dos recursos, o GFS2 requer quorum para funcionar. Quando o quorum é perdido, tanto as aplicações que utilizam os suportes GFS2 como o próprio suporte GFS2 não podem ser parados corretamente. Qualquer tentativa de parar estes recursos sem quorum falhará, o que resultará no final em todo o aglomerado ser cercado toda vez que o quorum for perdido.Para resolver esta situação, defina
no-quorum-policy
parafreeze
quando o GFS2 estiver em uso. Isto significa que quando o quorum for perdido, a partição restante não fará nada até que o quorum seja recuperado.#
pcs property set no-quorum-policy=freeze
Configurar um recurso em
dlm
. Esta é uma dependência necessária para configurar um sistema de arquivos GFS2 em um cluster. Este exemplo cria o recursodlm
como parte de um grupo de recursos chamadolocking
.[root@z1 ~]#
pcs resource create dlm --group locking ocf:pacemaker:controld op monitor interval=30s on-fail=fence
Clonar o grupo de recursos
locking
para que o grupo de recursos possa estar ativo nos dois nós do cluster.[root@z1 ~]#
pcs resource clone locking interleave=true
Estabelecer um recurso
lvmlockd
como parte do grupolocking
.[root@z1 ~]#
pcs resource create lvmlockd --group locking ocf:heartbeat:lvmlockd op monitor interval=30s on-fail=fence
Verifique o status do agrupamento para garantir que o grupo de recursos
locking
tenha começado em ambos os nós do agrupamento.[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 ]Verifique se o daemon
lvmlockd
está rodando nos dois nós do cluster.[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 dlmEm um nó do agrupamento, criar dois grupos de volume compartilhado. Um grupo de volume conterá dois sistemas de arquivos GFS2 e o outro grupo de volume conterá um sistema de arquivos GFS2.
O seguinte comando cria o grupo de volume compartilhado
shared_vg1
em/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...O seguinte comando cria o grupo de volume compartilhado
shared_vg2
em/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...No segundo nó do agrupamento, inicie o gerenciador de fechaduras para cada um dos grupos de volume compartilhado.
[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...Em um nó do cluster, criar os volumes lógicos compartilhados e formatar os volumes com um sistema de arquivos GFS2. É necessário um diário para cada nó que monta o sistema de arquivo. Certifique-se de criar periódicos suficientes para cada um dos nós de seu cluster.
[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
Crie um recurso
LVM-activate
para cada volume lógico para ativar automaticamente esse volume lógico em todos os nós.Criar um recurso
LVM-activate
chamadosharedlv1
para o volume lógicoshared_lv1
no grupo de volumeshared_vg1
. Este comando também cria o grupo de recursosshared_vg1
que inclui o recurso. Neste exemplo, o grupo de recursos tem o mesmo nome do grupo de volume compartilhado que inclui o volume 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
Criar um recurso
LVM-activate
chamadosharedlv2
para o volume lógicoshared_lv2
no grupo de volumeshared_vg1
. Este recurso também fará parte do 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
Criar um recurso
LVM-activate
chamadosharedlv3
para o volume lógicoshared_lv1
no grupo de volumeshared_vg2
. Este comando também cria o grupo de recursosshared_vg2
que inclui o 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
Clonar os dois novos grupos de recursos.
[root@z1 ~]#
pcs resource clone shared_vg1 interleave=true
[root@z1 ~]#pcs resource clone shared_vg2 interleave=true
Configurar as restrições de pedidos para garantir que o grupo de recursos
locking
que inclui os recursosdlm
elvmlockd
comece primeiro.[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)Configurar as restrições de colocação para garantir que os grupos de recursos
vg1
evg2
comecem no mesmo nó que o 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
Em ambos os nós do agrupamento, verificar se os volumes lógicos estão ativos. Pode haver um atraso de alguns 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.00gCriar um recurso de sistema de arquivo para montar automaticamente cada sistema de arquivo GFS2 em todos os nós.
Você não deve adicionar o sistema de arquivo ao arquivo
/etc/fstab
porque ele será gerenciado como um recurso de cluster Pacemaker. As opções de montagem podem ser especificadas como parte da configuração do recurso comoptions=options
. Execute o comandopcs resource describe Filesystem
para opções de configuração completa.Os seguintes comandos criam os recursos do sistema de arquivos. Estes comandos adicionam cada recurso ao grupo de recursos que inclui o recurso de volume lógico para aquele sistema de arquivo.
[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
Verificar se os sistemas de arquivo GFS2 estão montados em ambos os nós do cluster.
[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)Verifique o status do agrupamento.
[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 adicionais
- Para informações sobre a configuração do armazenamento em bloco compartilhado para um cluster Red Hat High Availability com discos compartilhados Microsoft Azure, consulte Configuração do armazenamento em bloco compartilhado.
- Para informações sobre a configuração do armazenamento em bloco compartilhado para um cluster Red Hat High Availability com volumes Amazon EBS Multi-Attach, consulte Configuração do armazenamento em bloco compartilhado.
- Para informações sobre como configurar o armazenamento em blocos compartilhados para um cluster de alta disponibilidade da Red Hat em Alibaba Cloud, veja Configurando o armazenamento em blocos compartilhados para um cluster de alta disponibilidade da Red Hat em Alibaba Cloud.