Configurando o DRBD para replicar o armazenamento em dois servidores CentOS 7

A tradução do artigo foi preparada às vésperas do início do curso “Linux Administrator. Virtualização e cluster " .








DRBD (Distributed Replicated Block Device) é uma solução de armazenamento distribuído, flexível e universalmente replicado para Linux. Ele reflete o conteúdo de dispositivos de bloco, como discos rígidos, partições, volumes lógicos etc. entre servidores. Ele cria cópias de dados em dois dispositivos de armazenamento para que, se um deles falhar, os dados do outro possam ser usados.



Podemos dizer que isso é algo como uma configuração de rede RAID 1 com discos mapeados para diferentes servidores. No entanto, funciona de maneira bem diferente do RAID (mesmo em rede).



Inicialmente, o DRBD era usado principalmente em clusters de computadores de alta disponibilidade (HA); no entanto, a partir da versão nove, ele pode ser usado para implantar soluções de armazenamento em nuvem.



Neste artigo, mostraremos como instalar o DRBD no CentOS e demonstrar brevemente como usá-lo para replicar um armazenamento (partição) em dois servidores. Este é o artigo perfeito para começar a usar o DRBD no Linux.



Ambiente de teste



Usaremos um cluster de dois nós para esta configuração.



  • Nó 1: 192.168.56.101 - tecmint.tecmint.lan
  • Nó 2: 192.168.56.102 - server1.tecmint.lan


Etapa 1: instalar pacotes DRBD



O DRBD é implementado como um módulo do kernel do Linux. É um driver de dispositivo de bloco virtual, portanto, fica na parte inferior da pilha de E / S do sistema.



O DRBD pode ser instalado a partir do ELRepo ou EPEL. Vamos começar importando a chave de assinatura do pacote ELRepo e conectando o repositório nos dois nós, como mostrado abaixo.



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




Então você precisa instalar o módulo do kernel DRBD e os utilitários nos dois nós usando:



# yum install -y kmod-drbd84 drbd84-utils


Se você tiver o SELinux ativado, precisará configurar políticas para liberar processos DRBD do controle SELinux.



# semanage permissive -a drbd_t


Além disso, se o seu sistema estiver executando um firewalld, você precisará adicionar a porta DRBD 7789 para permitir a sincronização de dados entre os dois nós.



Execute estes comandos no primeiro nó:



# firewall-cmd --permanent --add-rich-rule='rule family="ipv4"  source address="192.168.56.102" port port="7789" protocol="tcp" accept'
# firewall-cmd --reload


Em seguida, execute estes comandos no segundo nó:



# firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.56.101" port port="7789" protocol="tcp" accept'
# firewall-cmd --reload


Etapa 2. Prepare o armazenamento de baixo nível



Agora que temos o DRBD instalado nos dois nós do cluster, devemos preparar áreas de armazenamento neles aproximadamente do mesmo tamanho. Pode ser uma partição do disco rígido (ou um disco rígido físico inteiro), um dispositivo RAID de software , um volume lógico LVM ou qualquer outro tipo de dispositivo de bloco encontrado em seu sistema.



Para este tutorial, criaremos um dispositivo de bloco de teste de 2 GB usando o comando dd.



# dd if=/dev/zero of=/dev/sdb1 bs=2024k count=1024


Vamos supor que seja uma partição não utilizada (/ dev / sdb1) em um segundo dispositivo de bloco (/ dev / sdb) conectado aos dois nós.



Etapa 3. Configurando DRBD



O arquivo DRBD configuração principal é /etc/drbd.conf, e arquivos de configuração adicionais podem ser encontradas no diretório /etc/drbd.d.



Para replicar o armazenamento, precisamos adicionar as configurações necessárias ao arquivo /etc/drbd.d/global_common.confque contém as seções de configuração DRBD global e geral, e precisamos definir recursos nos .resarquivos.



Faça backup do arquivo original nos dois nós e abra o novo arquivo para edição (use seu editor de texto preferido).



# mv /etc/drbd.d/global_common.conf /etc/drbd.d/global_common.conf.orig
# vim /etc/drbd.d/global_common.conf 


Adicione as seguintes linhas aos dois arquivos:



global {
 usage-count  yes;
}
common {
 net {
  protocol C;
 }
}


Salve o arquivo e feche o editor.



Vamos nos concentrar brevemente na linha do protocolo C. O DRBD suporta três modos de replicação diferentes (ou seja, três graus de sincronicidade da replicação), a saber:



  • protocolo A: protocolo de replicação assíncrona; mais comumente usado em cenários de replicação de longa distância.
  • protocolo B: protocolo de replicação semi-síncrona ou protocolo de memória síncrona.
  • protocolo C: normalmente usado para nós em redes de curta distância; é de longe o protocolo de replicação mais comumente usado nas configurações de DRBD.


Importante : A escolha do protocolo de replicação afeta dois fatores de implantação: segurança e latência. Por outro lado, a taxa de transferência é amplamente independente do protocolo de replicação escolhido.



Etapa 4. Adicionando um Recurso



Recurso é um termo coletivo que se refere a todos os aspectos de um conjunto de dados específico sendo replicado. Vamos definir nosso recurso em um arquivo /etc/drbd.d/test.res.



Adicione o seguinte ao arquivo nos dois nós (lembre-se de substituir as variáveis ​​pelos valores reais do seu ambiente).



Preste atenção aos nomes de host, precisamos fornecer o nome de host de rede que pode ser obtido usando o comando uname -n.



resource test {
        on tecmint.tecmint.lan {
 		device /dev/drbd0;
       		disk /dev/sdb1;
        		meta-disk internal;	
                	address 192.168.56.101:7789;
        }
        on server1.tecmint.lan  {
		device /dev/drbd0;
        		disk /dev/sdb1;
        		meta-disk internal;
                	address 192.168.56.102:7789;
        }
}
}


Onde:



  • on hostname : a seção on à qual a instrução de configuração aninhada pertence.
  • teste : este é o nome do novo recurso.
  • device / dev / drbd0 : especifica um novo dispositivo de bloco virtual gerenciado pelo DRBD.
  • disk / dev / sdb1 : Esta é uma partição de dispositivo de bloco que é um dispositivo de backup para um dispositivo DRBD.
  • meta-disco : define onde o DRBD armazena seus metadados. Interno significa que o DRBD armazena seus metadados no mesmo dispositivo físico de baixo nível que os dados reais em produção.
  • endereço : especifica o endereço IP e o número da porta do host correspondente.


Observe também que, se os parâmetros tiverem os mesmos valores nos dois hosts, você poderá especificá-los diretamente na seção de recursos.



Por exemplo, a configuração acima pode ser refatorada para:



resource test {
	device /dev/drbd0;
	disk /dev/sdb1;
        	meta-disk internal;	
        	on tecmint.tecmint.lan {
 		address 192.168.56.101:7789;
        	}
        	on server1.tecmint.lan  {
		address 192.168.56.102:7789;
        		}
}


Etapa 5. Inicializando e Iniciando o Recurso



Para interagir com o DRBD, usaremos as seguintes ferramentas de administração (que interagem com o módulo do kernel para configurar e administrar os recursos do DRBD):



  • drbdadm : uma ferramenta de administração de alto nível DRBD.
  • drbdsetup : uma ferramenta de administração de nível inferior para conectar dispositivos DRBD a seus dispositivos de backup, configurar pares de dispositivos DRBD para espelhar seus dispositivos de backup e verificar a configuração dos dispositivos DRBD em execução.
  • Drbdmeta : uma ferramenta de gerenciamento de metadados.


Depois de adicionar todas as configurações iniciais de recursos, precisamos chamar o recurso nos dois nós.



# drbdadm create-md test




Inicializando o armazenamento de metadados



Em seguida, devemos iniciá-lo, que conectará o recurso ao seu dispositivo de backup, depois definir os parâmetros de replicação e conectar o recurso ao seu par:



# drbdadm up test


Agora, se você executar o comando lsblk , notará que o dispositivo DRBD / volume drbd0 está associado ao dispositivo de backup /dev/sdb1:



# lsblk




Lista de dispositivos de bloco



Para desativar um recurso, execute:



# drbdadm down test


Para verificar o status do recurso, execute o seguinte comando (observe que o estado Inconsistente / Inconsistente é esperado neste momento ):



# drbdadm status test
OR
# drbdsetup status test --verbose --statistics 	#for  a more detailed status




Verificando o status de um recurso para o

mal




Etapa 6: definindo o principal recurso / fonte de sincronização inicial do dispositivo



Neste ponto, o DRBD está pronto para começar. Agora precisamos especificar qual nó deve ser usado como a fonte da sincronização inicial do dispositivo.



Execute o seguinte comando em apenas um nó para iniciar a sincronização completa inicial:



# drbdadm primary --force test
# drbdadm status test




Definindo o nó principal como o dispositivo de inicialização

Após a conclusão da sincronização, o status dos dois discos deve ser UpToDate.



Etapa 7: testando a configuração do DRBD



Finalmente, precisamos verificar se o dispositivo DRBD funcionará como deveria para armazenar os dados replicados. Lembre-se de que usamos um volume de disco vazio, portanto, precisamos criar um sistema de arquivos no dispositivo e montá-lo para ver se podemos usá-lo para armazenar dados replicados.



Precisamos criar um sistema de arquivos no dispositivo usando o seguinte comando no nó a partir do qual iniciamos a sincronização completa inicial (que possui um recurso com uma função principal):



# mkfs -t ext4 /dev/drbd0




Crie um sistema de arquivos no volume Drbd



Em seguida, monte-o conforme mostrado (você pode dar um nome adequado ao ponto de montagem):



# mkdir -p /mnt/DRDB_PRI/
# mount /dev/drbd0 /mnt/DRDB_PRI/


Agora copie ou crie alguns arquivos no ponto de montagem acima e faça uma lista longa com o comando ls :



# cd /mnt/DRDB_PRI/
# ls -l 




Listar o conteúdo do volume Drbd primário Em



seguida, desmonte o dispositivo (verifique se a montagem não está aberta, altere o diretório após a desmontagem para evitar erros) e altere a função do nó de primário para secundário:



# umount /mnt/DRDB_PRI/
# cd
# drbdadm secondary test


Torne outro nó (que possui um recurso com uma função secundária) primário e, em seguida, conecte um dispositivo a ele e execute uma longa lista de pontos de montagem. Se a instalação funcionar bem, todos os arquivos armazenados no volume deverão estar lá:



# drbdadm primary test
# mkdir -p /mnt/DRDB_SEC/
# mount /dev/drbd0 /mnt/DRDB_SEC/
# cd /mnt/DRDB_SEC/
# ls  -l 




Verificando a configuração do DRBD em execução no nó secundário.



Para obter mais informações, consulte as páginas de manual das ferramentas de administração:



# man drbdadm
# man drbdsetup
# man drbdmeta


Ajuda: Guia do Usuário DRBD .



Resumo



O DRBD é extremamente flexível e versátil, tornando-o uma solução de replicação de armazenamento adequada para adicionar HA a quase qualquer aplicativo. Neste artigo, mostramos como instalar o DRBD no CentOS 7 e demonstramos brevemente como usá-lo para replicar o armazenamento. Sinta-se livre para compartilhar seus pensamentos conosco usando o formulário de feedback abaixo.






Saiba mais sobre o curso.







All Articles