Armazenamento de Cluster de Marcapasso + DRBD (Primário Duplo) + ctdb

Bom dia, Habrovsk. Havia uma tarefa - implantar o armazenamento de alta disponibilidade tolerante a falhas usando pacamaker + drbd (no modo primário duplo) + clvmd + ctdb, que será montado no servidor. Farei uma reserva de que encontrarei todas essas ferramentas pela primeira vez e ficarei feliz em receber críticas e adições / correções. Na Internet, não há instruções específicas para este pacote ou as informações estão desatualizadas. Isso está funcionando no momento, mas há um problema cuja solução, espero encontrar no futuro próximo. Todas as ações devem ser executadas nos dois nós, a menos que indicado de outra forma.

Vamos começar. Temos duas máquinas virtuais no CentOS 7.

1) Para maior confiabilidade, introduza-os no / etc / hosts

192.168.0.1 node1 192.168.0.2 node2 

2) Não há DRBD nos repositórios padrão, portanto, você precisa conectar um de terceiros.

 rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org rpm -Uvh https://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm 

3) Instale o drbd versão 8.4 (não foi possível obter o 9.0 no modo primário duplo)

 yum install -y kmod-drbd84 drbd84-utils 

4) Ative e ative o módulo drbd kernel na inicialização

 modprobe drbd echo drbd > /etc/modules-load.d/drbd.conf 

5) Crie o arquivo de configuração para o recurso drbd /etc/drbd.d/r0.res

 resource r0 { protocol C; device /dev/drbd0; meta-disk internal; disk /dev/sdb; net { allow-two-primaries; } disk { fencing resource-and-stonith; } handlers { fence-peer "/usr/lib/drbd/crm-fence-peer.sh"; after-resync-target "/usr/lib/drbd/crm-unfence-peer.sh"; } on node1 { address 192.168.0.1:7788; } on node2 { address 192.168.0.2:7788; } 

6) Desative a unidade drbd (o marcapasso será responsável por isso), crie metadados para o disco drbd, aumente o recurso

 systemctl disable drbd drbdadm create-md r0 drbdadm up r0 

7) No primeiro nó, torne o recurso primário

 drbdadm primary --force r0 

8) Coloque o marcapasso

 yum install -y pacemaker pcs resource-agents 

9) Defina uma senha para o hacluster do usuário para autorização nos nós

 echo CHANGEME | passwd --stdin hacluster 

10) Execute o marcapasso nos dois nós

 systemctl enable pcsd systemctl start pcsd 

11) Efetue login no cluster. A partir desta etapa, fazemos tudo em um nó

 pcs cluster auth node1 node2 -u hacluster 

12) Crie um cluster chamado samba_cluster

 pcs cluster setup --force --name samba_cluster node1 node2 

13) ativar nós

 pcs cluster enable --all pcs cluster start --all 

14) Como temos máquinas virtuais como servidores, desativamos o mecanismo STONITH

 pcs property set stonith-enabled=false pcs property set no-quorum-policy=ignore 

15) Crie um VIP

 pcs resource create virtual_ip ocf:heartbeat:IPaddr2 ip=192.168.0.10 cidr_netmask=24 op monitor interval=60s 

16) Crie um recurso drbd

 pcs cluster cib drbd_cfg pcs -f drbd_cfg resource create DRBD ocf:linbit:drbd drbd_resource=r0 op monitor interval=60s pcs -f drbd_cfg resource master DRBDClone DRBD master-max=2 master-node-max=1 clone-node-max=1 clone-max=2 notify=true interleave=true pcs cluster cib-push drbd_cfg 

17) Instale os pacotes necessários para o clvm e prepare o clvm

 yum install -y lvm2-cluster gfs2-utils /sbin/lvmconf --enable-cluster 

18) Adicione o recurso dlm e clvd ao pacemaker

 pcs resource create dlm ocf:pacemaker:controld op monitor interval=30s on-fail=fence clone interleave=true ordered=true pcs resource create clvmd ocf:heartbeat:clvm op monitor interval=30s on-fail=fence clone interleave=true ordered=true pcs constraint colocation add clvmd-clone with dlm-clone 

19) Nesse ponto, iniciar o clvmd e o dlm deve gerar um erro. Vamos ao marcapasso 192.168.0.1 : 2224 da interface da web. Se o cluster não aparecer, adicione-o a "Edd existente". Em seguida, vá para Recursos - dlm - argumentos opcionais e defina o valor allow_stonith_disabled = true

20) Definimos a fila de carregamento de recursos

 pcs constraint order start DRBDClone then dlm-clone pcs constraint order start dlm-clone then clvmd-clone 

21) Proibir que o LVM escreva o cache e limpe-o. Nos dois nós

 sed -i 's/write_cache_state = 1/write_cache_state = 0/' /etc/lvm/lvm.conf rm /etc/lvm/cache/* 

22) Editamos /etc/lvm/lvm.conf para que o lvm não veja / dev / sdb. Nos dois nós

 # This configuration option has an automatic default value. # filter = [ "a|.*/|" ] filter = [ "r|^/dev/sdb$|" ] 

23) Crie uma partição CLVM. Fazemos apenas em uma nota

 $ vgcreate -Ay -cy cl_vg /dev/drbd0 Physical volume "/dev/drbd0" successfully created. Clustered volume group "cl_vg" successfully created $ lvcreate -l100%FREE -n r0 cl_vg Logical volume "r0" created. 

24) Marcamos a seção em gfs2

 mkfs.gfs2 -j2 -p lock_dlm -t drbd-gfs2:r0 /dev/cl_vg/r0 

25) Em seguida, adicione a montagem desta seção no pacemaker e diga para inicializar após clvmd

 pcs resource create fs ocf:heartbeat:Filesystem device="/dev/cl_vg/r0" directory="/mnt/" fstype="gfs2" --clone pcs constraint order start clvmd-clone then fs-clone 

26) Agora é a vez do ctdb que executa o samba

 yum install -y samba ctdb cifs-utils 

27) Edite o config /etc/ctdb/ctdbd.conf

 CTDB_RECOVERY_LOCK="/mnt/ctdb/.ctdb.lock" CTDB_NODES=/etc/ctdb/nodes CTDB_MANAGES_SAMBA=yes CTDB_LOGGING=file:/var/log/ctdb.log CTDB_DEBUGLEVEL=NOTICE 

28) Crie um arquivo com uma lista de nós. ATENÇÃO! Após cada IP na lista de nós, um feed de linha deve estar presente. Caso contrário, o nó falhará durante a inicialização.

 cat /etc/ctdb/nodes 192.168.0.1 192.168.0.2 

29) Adicione ao config /etc/samba/smb.conf

 [global] clustering = yes private dir = /mnt/ctdb lock directory = /mnt/ctdb idmap backend = tdb2 passdb backend = tdbsam [test] comment = Cluster Share path = /mnt browseable = yes writable = yes 

30) Por fim, crie o recurso ctdb e indique que ele deve ser carregado após

 pcs constraint order start fs-clone then samba 

E agora sobre o problema que ainda não resolvi. Se você reiniciar o nó, o grupo inteiro entrará em colapso, pois o drbd precisa de tempo para ativar / dev / drbd0. O DLM não vê a partição, pois ainda não está ativada e não inicia, etc. A solução alternativa é ativar a partição manualmente e reiniciar os recursos do marcapasso

 vgchage -ay pcs resource refresh 

Source: https://habr.com/ru/post/pt435906/


All Articles