Pesquisa de site

Como configurar o DRBD para replicar o armazenamento em dois servidores CentOS 7


O DRBD (significa Distributed Replicated Block Device) é uma solução de armazenamento replicado distribuída, flexível e versátil para Linux. Ele espelha o conteúdo de dispositivos de bloco, como discos rígidos, partições, volumes lógicos, etc., entre servidores. Envolve uma cópia de dados em dois dispositivos de armazenamento, de forma que, se um falhar, os dados do outro possam ser usados.

Você pode pensar nisso como uma configuração RAID 1 de rede com os discos espelhados nos servidores. No entanto, ele opera de uma maneira muito diferente do RAID e até mesmo do RAID de rede.

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

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

Ambiente de teste

Para os fins deste artigo, estamos usando 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: instalando pacotes DRBD

DRBD é implementado como um módulo do kernel Linux. Ele constitui precisamente um driver para um dispositivo de bloco virtual, por isso é estabelecido próximo à parte inferior da pilha de E/S de um sistema.

O DRBD pode ser instalado a partir dos repositórios ELRepo ou EPEL. Vamos começar importando a chave de assinatura do pacote ELRepo e habilitando o repositório conforme mostrado em ambos os nós.

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 podemos instalar o módulo do kernel DRBD e os utilitários em ambos os nós executando:

yum install -y kmod-drbd84 drbd84-utils

Se você tiver o SELinux ativado, será necessário modificar as políticas para isentar os processos DRBD do controle do SELinux.

semanage permissive -a drbd_t

Além disso, se o seu sistema tiver um firewall habilitado (firewalld), você precisará adicionar a porta DRBD 7789 no firewall 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: Preparando o armazenamento de nível inferior

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

Para os fins deste artigo, criaremos um dispositivo de bloco fictício de tamanho 2GB usando o comando dd.

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

Assumiremos que esta é uma partição não utilizada (/dev/sdb1) em um segundo dispositivo de bloco (/dev/sdb) conectado a ambos os nós.

Etapa 3: configurando o DRBD

O arquivo de configuração principal do DRBD está localizado em /etc/drbd.conf e arquivos de configuração adicionais podem ser encontrados no diretório /etc/drbd.d.

Para replicar o armazenamento, precisamos adicionar as configurações necessárias no arquivo /etc/drbd.d/global_common.conf que contém as seções globais e comuns da configuração do DRBD e podemos definir recursos em .res arquivos.

Vamos fazer um backup do arquivo original em ambos os nós e depois abrir um novo arquivo para edição (use um editor de texto de sua preferência).

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 em ambos os arquivos:

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

Salve o arquivo e feche o editor.

Vamos sombrear brevemente mais luz na linha protocolo C. O DRBD suporta três modos de replicação distintos (portanto, três graus de sincronicidade de replicação), que são:

  • protocolo A: Protocolo de replicação assíncrona; é mais frequentemente usado em cenários de replicação de longa distância.
  • protocolo B: protocolo de replicação semissíncrona, também conhecido como protocolo síncrono de memória.
  • protocolo C: comumente usado para nós em redes de curta distância; é de longe o protocolo de replicação mais comumente usado em configurações de DRBD.

Importante: A escolha do protocolo de replicação influencia dois fatores de sua implantação: proteção e latência. E o rendimento, por outro lado, é amplamente independente do protocolo de replicação selecionado.

Etapa 4: adicionar um recurso

Um recurso é o termo coletivo que se refere a todos os aspectos de um determinado conjunto de dados replicados. Definiremos nosso recurso em um arquivo chamado /etc/drbd.d/test.res.

Adicione o conteúdo a seguir ao arquivo, em ambos os nós (lembre-se de substituir as variáveis no conteúdo pelos valores reais do seu ambiente).

Anote os nomes de host, precisamos especificar o nome de host da rede que pode ser obtido executando 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 indica a qual host as instruções de configuração incluídas se aplicam.
  • test: é o nome do novo recurso.
  • device /dev/drbd0: especifica o novo dispositivo de bloco virtual gerenciado pelo DRBD.
  • disk /dev/sdb1: é a partição do dispositivo de bloco que é o dispositivo de apoio para o dispositivo DRBD.
  • meta-disco: Define onde o DRBD armazena seus metadados. Usar Internal significa que o DRBD armazena seus metadados no mesmo dispositivo físico de nível inferior que os dados de produção reais.
  • endereço: especifica o endereço IP e o número da porta do respectivo nó.

Observe também que se as opções tiverem valores iguais em ambos os hosts, você poderá especificá-las diretamente na seção de recursos.

Por exemplo, a configuração acima pode ser reestruturada 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 habilitando recursos

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

  • drbdadm: uma ferramenta de administração de alto nível do DRBD.
  • drbdsetup: uma ferramenta de administração de nível inferior para conectar dispositivos DRBD com seus dispositivos de bloco de apoio, para configurar pares de dispositivos DRBD para espelhar seus dispositivos de bloco de apoio e para inspecionar a configuração de dispositivos DRBD em execução.
  • Drbdmeta:é a ferramenta de gerenciamento de metadados.

Depois de adicionar todas as configurações iniciais de recursos, devemos ativar o recurso em ambos os nós.

drbdadm create-md test

Em seguida, devemos ativar o recurso, que anexará o recurso ao seu dispositivo de apoio, 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/volume DRBD drbd0 está associado ao dispositivo de apoio /dev/sdb1:

lsblk

Para desabilitar o recurso, execute:

drbdadm down test

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

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

Etapa 6: definir o recurso primário/fonte da sincronização inicial do dispositivo

Nesta fase, o DRBD está pronto para operação. Agora precisamos informar qual nó deve ser usado como 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

Assim que a sincronização for concluída, o status de ambos os discos deverá ser UpToDate.

Etapa 7: Testando a configuração do DRBD

Finalmente, precisamos testar se o dispositivo DRBD funcionará bem para armazenamento de dados replicados. Lembre-se, usamos um volume de disco vazio, portanto devemos criar um sistema de arquivos no dispositivo e montá-lo para testar se podemos usá-lo para armazenamento de dados replicados.

Podemos criar um sistema de arquivos no dispositivo com o seguinte comando, no nó onde iniciamos a sincronização completa inicial (que possui o recurso com função primária):

mkfs -t ext4 /dev/drbd0 

Em seguida, monte-o conforme mostrado (você pode dar um nome apropriado 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 longa listagem usando o comando ls:

cd /mnt/DRDB_PRI/
ls -l 

Em seguida, desmonte o dispositivo (certifique-se de que a montagem não esteja aberta, altere o diretório após desmontá-lo para evitar erros) e altere a função do nó de primário para < forte>secundário:

umount /mnt/DRDB_PRI/
cd
drbdadm secondary test

No outro nó (que possui o recurso com função secundária), torne-o primário, depois monte o dispositivo nele e execute uma longa listagem do ponto de montagem. Se a configuração estiver funcionando 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 

Para obter mais informações, consulte as páginas man das ferramentas de administração do espaço do usuário:

man drbdadm
man drbdsetup
man drbdmeta
Resumo

O DRBD é extremamente flexível e versátil, o que o torna uma solução de replicação de armazenamento adequada para adicionar HA a praticamente qualquer aplicativo. Neste artigo, mostramos como instalar o DRBD no CentOS 7 e demonstramos brevemente como usá-lo para replicar o armazenamento. Sinta-se à vontade para compartilhar suas idéias conosco por meio do formulário de feedback abaixo.