A tradução do artigo foi preparada em antecipação ao início do curso .
O DRBD (Distributed Replicated Block Device — Dispositivo de Bloco Replicado Distribuído) é uma solução de armazenamento de dados distribuída, flexível e universalmente replicável 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 dos dados em dois dispositivos de armazenamento para que, em caso de falha de um deles, os dados no segundo possam ser utilizados.
Pode-se dizer que é algo como 1 com discos refletidos em diferentes servidores. No entanto, ele não funciona da mesma forma que o RAID (mesmo que seja em rede).
Inicialmente, o DRBD era utilizado principalmente em clusters de computadores de alta disponibilidade (HA — alta disponibilidade), no entanto, a partir da nona versão, ele pode ser utilizado para implementar soluções de armazenamento em nuvem.
Neste artigo, vamos mostrar como instalar o DRBD no CentOS e brevemente demonstrar como usá-lo para replicar armazenamento (partição) em dois servidores. Este é o artigo ideal para começar a trabalhar com o DRBD no Linux.
Ambiente de teste
Vamos usar um cluster de dois nós para essa configuração.
- Nó 1: 192.168.56.101 – tecmint.tecmint.lan
- Nó 2: 192.168.56.102 – server1.tecmint.lan
Passo 1: Instalando pacotes DRBD
O DRBD é implementado como um módulo do núcleo do Linux. Ele é um driver para um dispositivo de bloco virtual, portanto, ele está na parte inferior da pilha de entrada e saída do sistema.
O DRBD pode ser instalado a partir do ELRepo ou do 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.rpmEm seguida, precisamos instalar o módulo do núcleo do DRBD e as utilidades em ambos os nós com:
# yum install -y kmod-drbd84 drbd84-utilsSe você tiver o SELinux ativado, precisará configurar as políticas para liberar os processos do DRBD do controle do SELinux.
# semanage permissive -a drbd_t
Além disso, se um firewall (firewalld) estiver funcionando em seu sistema, você precisará adicionar a porta DRBD 7789 para permitir a sincronização de dados entre os dois nós.
Execute esses 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 --reloadEm seguida, execute esses 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 --reloadPasso 2. Preparando o armazenamento de baixo nível
Agora que temos o DRBD instalado em ambos os nós do cluster, devemos preparar áreas de armazenamento de tamanho aproximadamente igual. Isso pode ser uma partição de disco rígido (ou todo um disco rígido físico), um dispositivo RAID programático, ou qualquer outro tipo de dispositivo em bloco presente em seu sistema.
Para este artigo, criaremos um dispositivo em bloco de teste de 2 GB usando o comando dd.
# dd if=/dev/zero of=/dev/sdb1 bs=2024k count=1024Suponha que esta seja uma partição não utilizada (/dev/sdb1) no segundo dispositivo em bloco (/dev/sdb), conectado a ambos os nós.
Passo 3. Configurando o DRBD
O arquivo de configuração principal do DRBD é /etc/drbd.conf, e os 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 seções globais e comuns da configuração DRBD, e precisamos definir os recursos em .res arquivos.
Vamos fazer um backup do arquivo original em ambos os nós e, em seguida, abrir um novo arquivo para edição (use o 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 depois feche o editor.
Vamos parar um momento para discutir sobre a linha protocol C. O DRBD suporta três modos diferentes de replicação (ou seja, três graus de sincronicidade na replicação), a saber:
- protocol A: protocolo de replicação assíncrona; geralmente usado em cenários de replicação a longas distâncias.
- protocol B: protocolo de replicação semi-assíncrona ou protocolo de sincronização de memória.
- protocol C: geralmente usado para nós em redes de curtas distâncias; este é, sem dúvida, o protocolo de replicação mais usado em configurações DRBD.
Importante: A escolha do protocolo de replicação afeta dois fatores de implantação: segurança e latência. A largura de banda, por outro lado, não depende significativamente do protocolo de replicação escolhido.
Passo 4. Adicionando um recurso
Recurso (Resource) é um termo abrangente que se refere a todos os aspectos de um conjunto específico de dados replicados. Nós definiremos nosso recurso no arquivo /etc/drbd.d/test.res.
Adicione o seguinte no arquivo em ambos os nós (não esqueça de substituir as variáveis pelos valores reais para seu ambiente).
Observe os nomes dos hosts, precisamos especificar o nome de rede do host, que pode ser obtido com 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:
- em nome do host: seção para a qual o operador de configuração aninhado se aplica.
- test: este é o nome do novo recurso.
- device /dev/drbd0: indica um novo dispositivo de bloco virtual gerenciado pelo DRBD.
- disco /dev/sdb1: este é a seção do dispositivo de bloco que é o dispositivo de backup para o dispositivo DRBD.
- meta-disco: define onde o DRBD armazena seus metadados. Internal significa que o DRBD armazena seus metadados no mesmo dispositivo físico de baixo nível que os dados reais em produção.
- address: indica o endereço IP e o número da porta do nó correspondente.
Observe também que se ambos os hosts tiverem parâmetros com os mesmos valores, você pode especificá-los diretamente na seção de recursos.
Por exemplo, a configuração acima pode ser reestruturada em:
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. Inicialização e ativação do 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.
- drbdsetup: ferramenta de administração de baixo nível para conectar dispositivos DRBD aos seus dispositivos de backup, configurar pares de dispositivos DRBD para refletir seus dispositivos de backup, e verificar a configuração dos dispositivos DRBD em funcionamento.
- Drbdmeta: ferramenta de gerenciamento de metadados.
Após adicionar todas as configurações iniciais do recurso, devemos chamar o recurso em ambos os nós.
# drbdadm create-md test 
Inicialização do armazenamento de metadados
Em seguida, devemos iniciá-lo, o que conectará o recurso ao seu dispositivo de backup, então definirá os parâmetros de replicação e conectará o recurso ao seu par:
# drbdadm up test Agora, se você executar o comando , você notará que o dispositivo/tom DRBD drbd0 está vinculado ao dispositivo de backup /dev/sdb1:
# lsblk 
Lista de dispositivos de bloco
Para desconectar o recurso, execute:
# drbdadm down testPara verificar o estado do recurso, execute o seguinte comando (note que neste estágio o estado dos discos é esperado. Inconsistent/Inconsistent):
# drbdadm status test
OR
# drbdsetup status test --verbose --statistics #for a more detailed status 
Verificação do estado do recurso nos
nós
Passo 6: Definição do recurso principal/fonte para a sincronização inicial dos dispositivos
Nesta etapa, o DRBD já está pronto para uso. Agora precisamos indicar qual nó deve ser usado como fonte para a sincronização inicial dos dispositivos.
Execute o seguinte comando apenas em um nó para iniciar a sincronização completa inicial:
# drbdadm primary --force test
# drbdadm status test 
Configurando o nó primário como dispositivo inicial
Após a conclusão da sincronização, o estado de ambos os discos deve estar UpToDate.
Passo 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 de que usamos um volume de disco vazio, então devemos criar um sistema de arquivos no dispositivo e montá-lo para verificar se podemos usá-lo para armazenar os dados replicados.
Precisamos criar um sistema de arquivos no dispositivo usando o seguinte comando no nó de onde iniciamos a sincronização completa inicial (no qual existe o recurso com o papel primário):
# mkfs -t ext4 /dev/drbd0 
Criamos um sistema de arquivos no volume Drbd
Em seguida, monte-o como 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 mencionado acima e faça uma lista longa usando :
# cd /mnt/DRDB_PRI/
# ls -l 
Listar o conteúdo do volume primário do Drbd
Em seguida, desmonte o dispositivo (certifique-se de que a montagem não está aberta, mude de diretório após o desmonte para evitar erros) e altere o papel do nó de primário para secundário:
# umount /mnt/DRDB_PRI/
# cd
# drbdadm secondary testFaça com que o outro nó (onde há um recurso com o papel secundário) seja primário, em seguida, conecte ao dispositivo e execute uma lista longa dos pontos de montagem. Se a configuração estiver funcionando corretamente, todos os arquivos armazenados no volume devem 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 funcionamento no nó secundário.
Para mais informações, consulte as páginas de ajuda das ferramentas de administração:
# man drbdadm
# man drbdsetup
# man drbdmetaAjuda: .
Resumo
O DRBD é extremamente flexível e versátil, tornando-se 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 demos uma breve demonstração de como utilizá-lo para replicação de armazenamento. Sinta-se à vontade para compartilhar seus comentários conosco através do formulário abaixo.
Fonte: habr.com
