DRBD: Configurando Resource – Parte 03

/etc/drbd.conf  é um arquivo de configurações do drbd . Se vermos o conteúdo desse arquivo veremos que existem apenas duas linhas. A segunda informa que também será incluído(include) ou lido qualquer arquivo com o nome terminado em “.res”  existente na pasta /etc/drbd.d/.

elder@server01:~$ cat /etc/drbd.conf 
# You can find an example in  /usr/share/doc/drbd.../drbd.conf.example

include "drbd.d/global_common.conf";
include "drbd.d/*.res";

Editar o arquivo /etc/drbd.conf pode fazer esse arquivo confuso, cheio de textos. Mas ao criarmos nossa configuração em um arquivo dentro da pasta /etc/drbd.d/ fará que a organização seja mantida. É isso que vamos fazer.

Resource

Resource é um termo genérico e vago quando nos referimos ao DRBD. É um termo que se refere a qualquer item/aspecto “particular do conjunto de dados replicados”. Sim, inicialmente, é confuso entender. Mas é, mais ou menos, assim que está explicado no guia de uso oficial do drbd.

Um Resource é composto pelos itens:

  • O nome do Resource
  • Volume: Aqui pode ser os discos, uma partição
  • Dispositivo DRBD: Aqui é um bloco virtual, criado e gerenciado pelo drbd
  • Conexão:  É a conexão, via rede, entre os hosts. Em nosso caso, entre o server01 e o server02. Usamos placa de rede dedicada apenas para isso.

 

Função do Resource

Além dos itens acima, um  Resource pode ter a função(role) de

  • primário: Um resource em modo primário nos permite ler e guardar dados dentro dele
  • secundário: modo secundário o resource fica totalmente fechado para uso do usuário, sendo sua única função apenas receber os dados do primário na replicação.

Procure não usar os termos ativo e passivo para o resource. Esses termos se aplicam mais à disponibilidade de programas e não de storage(discos em nosso caso).

 

Modos do Resource

Sabemos o que é primário e secundário. Podemos ter uma combinação deles em nosso ambiente. Abaixo listo os modos com que podemos trabalhar:

  • Single-primary: nesse modo, apenas um dos resources  é primário e o outro secundário.
  • Dual-primary: Os dois resources, a qualquer momento, ficam em modo primário. Facilitando trabalharmos com concorrência de acesso e balanceamento de carga(load balance). Esse modo requer um sistema de arquivos que use distributed lock manager(gerenciador distribuído de bloqueio). Temos como exemplo de sistema de arquivos que podemos usar para isso o GFS e o OCFS2. O modo dual-primary é desabilitado por padrão, temos que configurar o arquivo de configuração para sua ativação.
  • Replication: DRBD aceita 3 diferentes tipos de modo de replicação(replication mode):
        • Protocol A:  Protocolo para replicação assíncrona. É mais usado em replicação entre servidores que estão distantes. Escrita no servidor primário é considerada completada  sem a preocupação se o secundário pelo menos recebeu o pacote de dados do primário. Frisamos que receber não quer dizer que houve gravação(escrita).
        • Protocol B: Protocolo de replicação semi-sincronizado. Escrita é considerada completa quando os dados alcançam o secundário.
        • Protocol C: protocolo para replicação sincronizado. A escrita no disco primário só só é tida como completa após confirmado a escrita(recebimento) no disco do servidor secundário. Este modo de replicação é o mais usado. 

 

É bom sabermos que há uma diferença entre replicação e sincronização:

Replicação é quando qualquer dado gravado em um disco do servidor X é enviado e gravado no disco do servidor Y. Replicação é a operação normal. Se criamos o arquivo lista.txt ele será replicado para o outro servidor.

Sincronização acontece quando o servidor X, por algum motivo, ficou desconectado ou desligado por algum tempo e assim seus dados ficaram desatualizados. Quando consertado  o servidor X receberá os dados atualizados do servidor Y.

 

 

Nosso Ambiente de Trabalho

Temos 2 servidores com as seguintes características

servidor 01

  • distro: Debian
  • hostname/nome: server01
  • placa rede enp0s3: 192.168.0.40
  • placa rede enp0s8: 10.1.1.31
  • disco a ser usado: /dev/sdb1

 

servidor 02

  • distro: Debian
  • hostname/nome: server02
  • placa rede enp0s3: 192.168.0.41
  • placa rede enp0s8: 10.1.1.32
  • disco a ser usado: /dev/sdb1

Cada servidor possui a placa de rede enp0s8 e os dois servidores  terão conexão direta por meio dessa placa que será dedicada somente para uso do DRBD.

DRBD trabalha com portas acima de 7788. Vamos usar a 7788 mesmo.

Configurando os Arquivos  /etc/drbd.d/global_common.conf e /etc/drbd.d/meuRes.res

 

Iremos inserir apenas o conteúdo necessário dentro dos arquivos para termos nosso resource ativo e funcionado.

O Arquivo “global_common.conf”  já existe dentro de  /etc/drbd.d/.  Como o nome do arquivo sugere, esse é um arquivo para configurações global e comum, isto é, qualquer linha adicionada aqui afetará todos os resources.

Também, ao invés de editarmos o arquivo /etc/drbd/drbd.conf, iremos criar um arquivo dentro de /etc/drbd.d/ e o chamaremos de meuRes.res

 

Obs.: Os passos abaixo têm que serem feitos tanto no server01 quanto no server02. OS ARQUIVOS TÊM QUE FICAR IGUAIS, IDÊNTICOS tanto no server01 quanto no server02! 

Editando  global_common.conf

  1. Faça um backup de global_common.conf
    elder@server01:~$ sudo cp /etc/drbd.d/global_common.conf /etc/drbd.d/global_common.conf.bkp
  2. Use seu editor(nano, vim..) de texto preferido e apague o conteúdo de /etc/drbd.d/global_common.conf e deixe apenas o abaixo:
    global {
       usage-count yes;
    }
    common {
       net {
          protocol C;
       }
    }
  • usage-count yes:  faz com estatísticas de uso sejam enviadas para análise da empresa responsável pelo DRBD. Poderíamos usar  “usage-count no” se não quisermos fazer parte.
  • protocol C: conforme explicado acima, esse protocolo é o mais usado e faz com que a replicação seja sincronizada.

 

Criando e editando meuRes.res

  1. Use seu editor(nano, vim..) de texto preferido e crie o arquivo meuRes.res dentro de /etc/drbd.d/ com o seguinte conteúdo:
    resource meuRes {
      on server01 {
       device    /dev/drbd1;
       disk      /dev/sdb1;
       address   10.1.1.31:7789;
       meta-disk internal;
      }
      on server02 {
       device    /dev/drbd1;
       disk      /dev/sdb1;
       address   10.1.1.32:7789;
       meta-disk internal;
      }
    }
    
    

Observe acima temos:

  • Nome do nosso Resource:  resource meuRes. Escolhi meuRes; de acordo com o nome do arquivo “meuRes.res”
  • Dispositivo DRBD: device /dev/drbd1; Esse dispositivo virtual será criado no momento que iniciarmos nosso resource.
  • Volume: disk /dev/sdb1; Aqui é a partição do HD que escolhemos usar.
  • Conexão de rede:  10.1.1.31:7789;  e  10.1.1.32:7789; Aqui é endereço IP de das placas de rede que dedicamos ao DRBD.
  • Metadados:  meta-disk internal; Dizemos que os metadados ficaram no mesmo disco, serão internos.

 

Habilitando o Resource pela Primeira Vez

Nos dois servidores execute o comando abaixo para criarmos o metadado

sudo drbdadm create-md meuRes

Ative o Resource nos dois servidores

sudo drbdadm up  meuRes

Veja o status do Resource

sudo drbdadm status

Esse deve ser o resultado

meuRes role:Secondary
  disk:Inconsistent
  bob role:Secondary
    disk:Inconsistent

A etapa abaixo deve ser executada apenas em um dos servidore. No servidor que ficará como primário. No meu caso, escolhi o server01 para ser meu primário, tudo que gravar nele será replicado para o server02.

elder@server01:~$ sudo drbdadm primary --force meuRes

 

Formatando e Montando o Bloco Virtual

Acima, nas configurações do nosso resource meuRes definimos como bloco virtual o /dev/drbd1.

Vamos formatá-lo com o sistema de arquivos ext4. Esse comando só precisa ser feito no servidor primário. O sistema de arquivos ext4 será replicado para o server02.

elder@server01:~$ sudo mkfs.ext4 /dev/drbd1

Monte o sistema de arquivos. Irei montar em  /montagens/drbd1

elder@server01:~$ sudo mount /dev/drbd1 /montagens/drbd1/

Vejamos a montagem que fizemos

elder@server01:~$ df /montagens/drbd1/
Sist. Arq.     Blocos de 1K Usado Disponível Uso% Montado em
/dev/drbd1            94009  1550      85368   2% /montagens/drbd1

 

Fazendo Testes

Obs.: apenas para aprendizagem, dei permissão 777 à pasta: “sudo chmod 777 -R /montagens/

 

No server01

No server01, Crie alguns arquivos em nosso drbd1 montado

elder@server01:~$ touch /montagens/drbd1/arquivos{1..7}.txt

No server01, Desmonte o nosso bloco drbd1

elder@server01:~$ sudo umount /dev/drbd1

No server01, rebaixe o drbd para secundário e veja o status

elder@server01:~$ sudo drbdadm secondary meuRes
elder@server01:~$ sudo drbdadm status
meuRes role:Secondary
  disk:UpToDate
  peer role:Secondary
    replication:Established peer-disk:UpToDate

 

No server02

No server02, promova o resource para primário

elder@server02:~$ sudo drbdadm primary meuRes

 

No server02, monte o bloco virtual, montarei na pasta que criei /montagens/drbd1

elder@server02:~$ sudo mount /dev/drbd1 /montagens/drbd1/

Veja o conteúdo que criamos no server01

elder@server02:~$ ls /montagens/drbd1/
arquivos1.txt  arquivos2.txt  arquivos3.txt  arquivos4.txt  arquivos5.txt  arquivos6.txt  arquivos7.txt

 

Conclusão

Aprendemos o que é e como configurar um resource.

Leitor voraz e um dos administradores do GNU/Linux Brasil no Whatsapp, facebook, youtube e nesse dito site: www.gnulinuxbrasil.com.br

One Comment to “DRBD: Configurando Resource – Parte 03”

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *