Mesmo se você estiver servindo sites estáticos, um site que não é alimentado frequentemente, ter que sincronizar manualmente o conteúdo desse site para todas as máquinas no cluster não é o ideal. Para sites dinâmicos, como um blog, fazer cópias manualmente entre os servidores passa longe de ser uma opção. Nem todo mundo pode comprar um NAS(Network-attached storage), mas de alguma forma os dados precisam ser mantidos em sincronia e aqui, como custo-benefício, usamos o DRBD.
O DRBD pode ser pensado como sendo um storage(armazenamento) de Rede baseado em RAID-1, ou seja, ao invés de termos dois ou mais discos espelhados dentro de um só servidor, temos esses discos espelhados e espalhados em diferentes servidores.
Não falaremos aqui como instalar o DRBD nos dois nós do cluster, pois já temos esse artigo falando a respeito: DRBD: Realizando a Instalação – Parte 004 e DRBD: Iniciando o Resource pela Primeira Vez – Parte 007
Então, consideramos que os dois nós já têm o DRBD instalado, com dois discos espelhados e conectados à rede.
Em nosso artigo sobre DRBD criamos o arquivo /etc/drbd.d/m.res com um resource chamado r0. Esse resource está OK:
[root@oracle86 ~]# drbdadm status r0 role:Primary disk:UpToDate peer role:Secondary replication:Established peer-disk:UpToDate
Também o DRBD criou o volume /dev/drbd1.
Instale drbd-pacemaker
No Red Hat, CentOS e derivados, se não instalar o pacote drbd-pacemaker não poderá criar o serviço no pacemaker para o resource do drbd.
Instale:
dnf install drbd-pacemaker -y
Veja: Pacemaker: Erro “Agent ‘ocf:linbit:drbd’ is not installed or does not provide valid metadata”
Configurar o cluster para o dispositivo DRBD
Um recurso ou função útil que o pcs possui é a capacidade de criar um arquivo contendo as várias alterações e aplicá-las todas de uma vez. Ou seja, criamos um arquivo, adicionamos nele todas as alterações que quisermos e só depois aplicamos essas configurações, todas de uma vez.
Para fazer isso, comece gerando o arquivo já com a configuração XML atual e bruta do CIB.
#1 Chamaremos o arquivo que conterá as configurações de drbd_cfg. Execute o comando pcs cluster cib drbd_cfg para criá-lo.
[root@oracle86 ~]# pcs cluster cib drbd_cfg
O arquivo foi criado:
[root@oracle86 ~]# ls anaconda-ks.cfg download drbd_cfg
Para começar a adicionar nossas configurações ao arquivo drbd_cfg usamos a opção -f. Essas alterações não serão vistas pelo cluster até que o arquivo drbd_cfg seja enviado posteriormente para o CIB do cluster ativo.
#2 criamos um resource de cluster para o dispositivo DRBD e um “resource clone” adicional para permitir que o resource seja executado em ambos os nós ao mesmo tempo.
Vamos chamar esse resource de WebData já que colocaremos dentro do DRBB os dados do Apache.
[root@oracle86 ~]# pcs -f drbd_cfg resource create WebData ocf:linbit:drbd drbd_resource=r0 op monitor interval=60s
#3 agora execute pcs -f drbd_cfg resource master WebDataClone WebData master-max=1 master-node=1 clone-max=2 clone-node-max=1 notify=true
[root@oracle86 ~]# pcs -f drbd_cfg resource master WebDataClone WebData master-max=1 master-node=1 clone-max=2 clone-node-max=1 notify=true
Se receber o erro abaixo
Error: This command has been replaced with 'pcs resource promotable'. See 'man pcs' -> Changes in pcs-0.10.
é que no Fedora 29 e no CentOS 8.0, master resources foram renomeados para recursos promotable clone e o comando pcs foi alterado de acordo para:
[root@oracle86 ~]# pcs -f drbd_cfg resource promotable WebData promoted-max=1 promoted-node-max=1 clone-max=2 clone-node-max=1 notify=true
#4 Agora, podemos aplicar as alterações do arquivo drbd_cfg. Envie o arquivo drbd_cfg para o CIB. Execute pcs cluster cib-push drbd_cfg --config
[root@oracle86 ~]# pcs cluster cib-push drbd_cfg --config CIB updated
Verificando o Status
ejamos o que o cluster fez com a nova configuração:
[root@oracle86 ~]# pcs status Cluster name: meuCluster WARNINGS: Following resources have been moved and their move constraints are still in place: 'WebSite' Run 'pcs constraint location' or 'pcs resource clear <resource id>' to view or remove the constraints, respectively Status of pacemakerd: 'Pacemaker is running' (last updated 2023-03-13 09:21:05 -04:00) Cluster Summary: * Stack: corosync * Current DC: oracle86B (version 2.1.4-5.0.1.el8_7.2-dc6eb4362e) - partition with quorum * Last updated: Mon Mar 13 09:21:06 2023 * Last change: Mon Mar 13 09:20:22 2023 by root via cibadmin on oracle86 * 2 nodes configured * 4 resource instances configured Node List: * Online: [ oracle86 oracle86B ] Full List of Resources: * ClusterIP (ocf::heartbeat:IPaddr2): Started oracle86 * WebSite (ocf::heartbeat:apache): Started oracle86 * Clone Set: WebData-clone [WebData] (promotable): * Masters: [ oracle86 ] * Slaves: [ oracle86B ] Daemon Status: corosync: active/disabled pacemaker: active/enabled pcsd: active/enabled
Perceba que oracle86 está como master(ou primário) e oracle86B como slave(escravo ou na função de secundário)
Oba!!
Agora temos um bloco DRBD sendo gerenciando pelo pacemaker. Vamos para o próximo artigo para continuar a configuração do Sistema de Arquivos no bloco do DRBD.
Observação Final
O agente de recursos(resource agent) deve carregar o módulo DRBD quando necessário, caso ainda não esteja carregado. Se isso não acontecer, configure seu sistema operacional para carregar o módulo no momento da inicialização(boot). Para o CentOS 7.5, você executaria isso em ambos os nós:
# echo drbd >/etc/modules-load.d/drbd.conf
Comment on “Pacemaker: Replicando Storage(Armazenamento) com DRBD – Parte 015”