Configurando o DRBD para replicação de armazenamento em dois servidores CentOS 7

A tradução do artigo foi preparada na véspera do início do curso "Administrador Linux. Virtualização e clustering".

DRBD (Distributed Replicated Block Device) é uma solução de armazenamento distribuída, flexível e universalmente replicável para Linux. 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 segundo possam ser usados.

Você poderia dizer que é algo como configuração RAID de rede 1 com discos mapeados para servidores diferentes. No entanto, funciona de maneira completamente diferente do RAID (até mesmo do RAID de rede).

Inicialmente, o DRBD era usado principalmente em clusters de computadores de alta disponibilidade (HA), porém, a partir da versão XNUMX, pode ser usado para implantar soluções de armazenamento em nuvem.

Neste artigo, explicaremos como instalar o DRBD no CentOS e demonstraremos brevemente como usá-lo para replicar o 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

DRBD é implementado como um módulo do kernel Linux. Ele é um driver para um dispositivo de bloco virtual, portanto está localizado na parte inferior da pilha de E/S do sistema.

DRBD pode ser instalado a partir de ELRepo ou EPEL. Vamos começar importando a chave de assinatura do pacote ELRepo e conectando o repositório em ambos os nós conforme 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 utilitários em ambos os nós usando:

# yum install -y kmod-drbd84 drbd84-utils

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

# semanage permissive -a drbd_t

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

Execute estes comandos para o 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 para o 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: preparar armazenamento de baixo nível

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

Para este artigo, 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 esta seja 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

Arquivo de configuração principal DRBD - /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 ao arquivo /etc/drbd.d/global_common.conf, que contém seções globais e gerais da configuração do DRBD, e precisamos definir recursos em .res arquivos.

Сделаем резервную копию исходного файла на обоих узлах, а затем откроем новый файл для редактирования (используйте текстовый редактор по своему вкусу).

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

Vejamos por um momento a linha do protocolo C. O DRBD suporta três modos de replicação diferentes (ou seja, três graus de sincronia de replicação), a saber:

  • 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 ou protocolo de memória síncrona.
  • protocolo C: normalmente utilizado para nós em redes com distâncias curtas; este é de longe o protocolo de replicação mais comumente usado nas configurações do DRBD.

É importante: A escolha do protocolo de replicação afeta dois fatores de implantação: segurança e latência. Por outro lado, o rendimento não depende significativamente do protocolo de replicação selecionado.

Etapa 4: adicionar um recurso

Recurso é um termo abrangente que se refere a todos os aspectos de um conjunto de dados replicado específico. Definiremos nosso recurso no arquivo /etc/drbd.d/test.res.

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

Preste atenção aos nomes de host, precisamos especificar o nome de host da 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;
        }
}
}

em que:

  • no nome do host: a seção on à qual a instrução de configuração aninhada se aplica.
  • teste: este é o nome do novo recurso.
  • dispositivo /dev/drbd0: Indica um novo dispositivo de bloco virtual gerenciado pelo DRBD.
  • disco /dev/sdb1: это раздел блочного устройства, который является резервным устройством для устройства 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: Indica o endereço IP e o número da porta do nó correspondente.

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

Por exemplo, a configuração acima poderia 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;
        		}
}

Passo 5. Inicialize e lance 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 recursos do DRBD):

  • drbdadm: Ferramenta de administração de alto nível do DRBD.
  • configuração do drbd: инструмент администрирования более низкого уровня для подключения устройств DRBD к их устройствам резервного копирования, настройки пар устройств DRBD для отражения их устройств резервного копирования и для проверки конфигурации работающих устройств DRBD.
  • Drbdmeta: Ferramenta de gerenciamento de metadados.

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

# drbdadm create-md test

Configurando o DRBD para replicação de armazenamento em dois servidores CentOS 7
Inicializando o armazenamento de metadados

Em seguida, precisamos executá-lo, o 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, você notará que o dispositivo/volume DRBD drbd0 está associado ao dispositivo de backup /dev/sdb1:

# lsblk

Configurando o DRBD para replicação de armazenamento em dois servidores CentOS 7
Lista de dispositivos de bloco

Para desabilitar um recurso, execute:

# drbdadm down test

Para verificar o status de um recurso, execute o seguinte comando (observe que o status dos discos é esperado neste momento Inconsistente/Inconsistente):

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

Configurando o DRBD para replicação de armazenamento em dois servidores CentOS 7
Verificando o status de um recurso em
mal

Etapa 6: definir a origem de sincronização do recurso primário/dispositivo inicial

На данном этапе DRBD уже готов к работе. Теперь нам нужно указать, какой узел следует использовать в качестве источника начальной синхронизации устройств.

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

# drbdadm primary --force test
# drbdadm status test

Configurando o DRBD para replicação de armazenamento em dois servidores CentOS 7
Configurando o nó primário como o dispositivo inicial
Assim que a sincronização for concluída, o estado de ambas as unidades deverá ser UpToDate.

Etapa 7: Testando a configuração do DRBD

Finalmente, precisamos verificar se o dispositivo DRBD funcionará conforme necessário para armazenar os dados replicados. Lembre-se que usamos um volume de disco vazio, portanto devemos criar um sistema de arquivos no dispositivo e montá-lo para verificar se podemos utilizá-lo para armazenar dados replicados.

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

# mkfs -t ext4 /dev/drbd0

Configurando o DRBD para replicação de armazenamento em dois servidores CentOS 7
Criando 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 longa lista com comandos ls:

# cd /mnt/DRDB_PRI/
# ls -l 

Configurando o DRBD para replicação de armazenamento em dois servidores CentOS 7
Liste o conteúdo do volume principal do Drbd

Em seguida, desmonte o dispositivo (certifique-se de que a montagem não esteja 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

Другой узел (на котором есть ресурс с вторичной ролью) сделайте первичным, затем подключите к нему устройство и выполните длинный список точек монтирования. Если сетап работает нормально, все файлы, хранящиеся на томе, должны быть там:

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

Configurando o DRBD para replicação de armazenamento em dois servidores CentOS 7
Verificando a configuração do DRBD em execução no nó secundário.

Para obter mais informações, consulte as páginas de ajuda das ferramentas administrativas:

# man drbdadm
# man drbdsetup
# man drbdmeta

Informações: Manual 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 praticamente qualquer aplicação. Neste artigo, mostramos como instalar o DRBD no CentOS 7 e demonstramos brevemente como usá-lo para replicação de armazenamento. Sinta-se à vontade para compartilhar suas idéias conosco usando o formulário de feedback abaixo.

Saiba mais sobre o curso.

Fonte: habr.com

Adicionar um comentário