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