Marca-passo de armazenamento em cluster + DRBD (primário duplo) + samba

Na continuação do artigo “Armazenamento de cluster de marcapasso + DRBD (primário duplo) + ctdb”, apresento uma versão totalmente concluída e funcional das bolas de arquivo de cluster HA para 2-4 nós nos centos 6 e 7. Se você deseja implementar isso, é um pervertido ou você Eles não deram nenhuma escolha e é necessário implementá-la de alguma forma.

Descreverei simplesmente o bolo folhado que coletaremos:

No dispositivo de bloco, crie a tabela gpt => uma partição para todo o espaço no grupo lvm => de volumes lvm para todo o espaço disponível => volume lvm para todo o espaço disponível => dispositivo drbd => dlm => marque-o como o volume físico do lvm para todo o espaço disponível => nele um grupo de clusters de volumes lvm => volume lvm em todo o espaço disponível => marque fs gfs2 => conecte-se ao ponto de montagem.
E tudo isso será conduzido pelo marcapasso com um endereço IP virtual.


Se você ainda deseja continuar, continue lendo abaixo.

A partir da fonte, precisamos do seguinte:
CPU 1 core
Mínimo de 1 GB de memória de acesso aleatório
Disco de 15 GB + o local onde você armazenará os dados
Os discos podem ser qualquer número, mesmo um.

Se você tiver uma unidade, é melhor particioná-la da seguinte maneira:
Tabela de partição gpt => partição de 200 MB para efi (opcional) => partição de 1 GB para / boot => tudo sob o lvm.

Em um volume lvm, você precisa criar 2 grupos de volumes. O primeiro grupo de volumes no sistema operacional é 10 GB + duas vezes o tamanho da RAM, mas não mais que 4 GB.

Quem disse isso, mas a troca às vezes ajuda muito, então no grupo lvm criamos uma partição lvm para troca igual ao dobro do tamanho da RAM, mas não mais que 4 GB e o espaço restante é alocado na raiz do sistema operacional.

O segundo grupo de lvm para armazenamento de dados. Crie uma seção lvm para o espaço restante.

Sob os termos, recebemos duas máquinas virtuais e isso é tudo. É melhor colocar o Ceph para operação correta em 6 nós, pelo menos 4, além de que seria bom ter alguma experiência com ele, caso contrário, ele funcionará como o cloudmouse. O gluster para centenas de milhares de arquivos pequenos em termos de desempenho não funcionará, é debilitado na vastidão do Habré muitas vezes. ipfs, lustre e similares têm os mesmos requisitos que o ceph ou até mais.

Vamos começar a batalha! Eu tinha duas máquinas virtuais no CentOS 7 com 2 discos.


1) O pacemaker versão 1.1 não funciona corretamente com o ip; portanto, para confiabilidade, adicionamos entradas ao / 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 yum localinstall -y http://ftp.nluug.nl/os/Linux/distr/elrepo/elrepo/el7/x86_64/RPMS/$(curl -s http://ftp.nluug.nl/os/Linux/distr/elrepo/elrepo/el7/x86_64/RPMS/ | grep -oP ">elrepo-release.*rpm" | cut -c 2-) 

3) Instale o drbd versão 8.4

 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 uma partição de disco e configure o lvm

 echo -e "g\nn\n\n\n\nt\n8e\nw\n" | fdisk /dev/sdb vgcreate drbd_vg /dev/sdb1 lvcreate -l +100%FREE --name r0 drbd_vg 

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

 resource r0 { protocol C; device /dev/drbd1; meta-disk internal; disk /dev/mapper/drbd_vg-r0; 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"; } startup { become-primary-on both; } on node1 { address 192.168.0.1:7788; } on node2 { address 192.168.0.2:7788; } 

7) Removemos o serviço drbd do carregamento automático (o pacemaker será responsável por isso), criamos metadados para o disco drbd, aumentamos o recurso

 systemctl disable drbd drbdadm create-md r0 drbdadm up r0 

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

 drbdadm primary --force r0 

9) Coloque o marcapasso

 yum install -y pacemaker corosync pcs resource-agents fence-agents-all 

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

 echo CHANGEME | passwd --stdin hacluster 

11) Execute o pcsd nos dois nós

 systemctl enable pcsd systemctl start pcsd 

12) Faça logon no cluster. A partir desta etapa, fazemos tudo em um nó

 pcs cluster auth node1 node2 -u hacluster -p CHANGEME --force 

13) Crie um cluster chamado samba_cluster

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

14) ativar nós e adicionar serviços à inicialização e iniciá-los

 pcs cluster enable --all pcs cluster start --all systemctl start corosync pcsd pacemaker systemctl enable corosync pcsd pacemaker 

15) Como temos máquinas virtuais como servidores, desativamos o mecanismo STONITH, pois não temos mecanismos para gerenciá-las. Como também temos apenas 2 carros, desativamos também o quorum, que funciona apenas com 3 ou mais máquinas.

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

16) Criar VIP

 pcs resource create virtual_ip ocf:heartbeat:IPaddr2 ip=192.168.0.10 cidr_netmask=32 nic=eth0 clusterip_hash=sourceip-sourceport op monitor interval=1s 

17) Crie um recurso drbd

 pcs resource create DRBD1 ocf:linbit:drbd drbd_resource=r0 op monitor interval=60s master master-max=2 master-node-max=1 clone-node-max=1 clone-max=2 notify=true op start interval=0s timeout=240 promote interval=0s timeout=130 monitor interval=150s role=Master monitor interval=155s role=Slave 

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

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

19) Adicione o recurso dlm e clvd ao pacemaker

 pcs resource create dlm ocf:pacemaker:controld allow_stonith_disabled=true clone meta interleave=true pcs resource create clvmd ocf:heartbeat:clvm clone meta interleave=true 

20) Proibimos o LVM de gravar um cache e limpá-lo. Nos dois nós

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


21) Crie uma partição CLVM. Fazemos apenas em uma nota
 vgcreate -A y -cy cl_vg /dev/drbd1 lvcreate -l 100%FREE -n r0 cl_vg 

22) Marcamos a seção em gfs2, aqui é importante que a tabela de bloqueio tenha o mesmo nome que o nosso cluster no pacificador. Fazemos apenas em uma nota

 mkfs.gfs2 -j 2 -p lock_dlm -t samba_cluster:r0 /dev/cl_vg/r0 

23) 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 interleave=true 

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

 yum install -y samba ctdb cifs-utils 

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

26) Crie um arquivo com uma lista de nós / etc / ctdb / nodes
ATENÇÃO! Após cada endereço na lista, deve haver um avanço de linha. Caso contrário, o nó não será ativado durante a inicialização.

 192.168.0.1 192.168.0.2 

27) Por fim, crie o recurso ctdb

 pcs resource create samba systemd:ctdb clone meta interleave=true 

28) Definimos a fila de carregamento e as dependências de recursos para executar

 pcs constraint colocation add dlm-clone with DRBD1-master pcs constraint colocation add clvmd-clone with dlm-clone pcs constraint colocation add fs-clone with clvmd-clone pcs constraint colocation add samba-clone with fs-clone pcs constraint colocation add virtual_ip with samba-clone pcs constraint order promote DRBD1-master then dlm-clone pcs constraint order start dlm-clone then clvmd-clone pcs constraint order start clvmd-clone then fs-clone pcs constraint order start fs-clone then samba-clone 

29) Criamos a fila para interromper os recursos; sem isso, sua máquina pode congelar no momento do desligamento

 pcs constraint order stop fs-clone then stop clvmd-clone pcs constraint order stop clvmd-clone then stop dlm-clone pcs constraint order stop dlm-clone then stop DRBD1-master pcs constraint order stop samba-clone then stop fs-clone 

PS


A bola em si pode estar no nfs e no samba, mas a conexão a eles é realizada por failover por IP, embora o próprio armazenamento de HA. Se você deseja alta disponibilidade total, em vez de samba e nfs, é necessário instalar o iSCSI e conectar-se através de caminhos múltiplos. Além disso, você pode obter o splitbrain se um dos nós morrer e, quando o mestre subir, ele não irá. Eu verifiquei que, se o sistema operacional for desligado corretamente, depois de aumentar o nó quando não houver mestre, ele entrará no modo desatualizado e não se tornará o mestre para evitar cérebros divididos. Opções de quorum (DRBD e / ou marcapasso) e quaisquer distorções das construções em cascata do DRBD após a sua configuração ser insustentável devido à sua alta complexidade, outro administrador levará muito tempo para descobrir. Embora com o que eu escrevi não seja melhor, não faça isso.

Referências:

Existe uma instrução semelhante com sintaxe para o pacemaker 1.0.

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


All Articles