DocumentacaoTecnologiasDRBD

Origem: I Seminario de Inovacao Tecnologica em Cluster e Grid, a enciclopédia livre.

Conteúdo

Sobre este artigo

Este artigo foi elaborado na data de Qui, 22 de Jun de 2006.

Seu autor é:

Leonardo Rodrigues de Mello. leonardo.mello(AT)planejamento.gov.br

Este artigo possui colaborações de:

Daniel Rodrigues (Werry).

O autor deste documento gostaria de agradecer a Corinto Meffe, Elias Mussi, Alex Soares, Marcos Sinhoreli e Daniel Rodrigues pelo apoio e amizade.

Introdução:

O DRDB é um dispositivo de bloco especial capaz de implementar RAID espelho entre dois dispositivos de blocos de duas maquinas distintas interligadas por uma conexão de rede. Em resumo o DRDB permite que sejam espelhados e sincronizados os dados entre dois servidores..

A versão 0.7 do drbd permite apenas a utilização de 2 máquinas, sendo que uma máquina deverá ser primária (ativa) e outra secundária (passiva). Caso se deseje utilizar mais de duas máquinas, deverá ser adquirido o software comercial drbdplus da empresa criadora do drbd. Caso se deseje utilizar 2 máquinas em configuração primário (ativo) / primário (ativo) deverá ser utilizada a versão de desenvolvimento do drbd 0.8

O diagrama abaixo apresenta um cenário de utilização do DRBD:

  Server01----------Server02
  Disco01-----------Disco02
              |
        Dispositivo DRBD

Neste cenário serão utilizadas as máquinas spotlight (server01) e Lvia (server02), sendo que o drbd será criado com os discos /dev/hda4 e /dev/hdc2, das máquinas spotlight e Lvia respectivamente.


Instalação:

A instalação do drbd no debian é simplificada, pois este sistema já possui todos os pacotes necessários para a utilização do drbd.

Este manual irá cobrir a instalação a partir do module-assistant, o drbd poderia ser instalado de outras maneiras, mas este não é o escopo desta documentação.

Instalando pré-requisitos:

  # apt-get install module-assistant

Atualizando o Module Assistant

  # m-a update

Baixando, Compilando e Instalando os módulos

  # m-a a-i drbd0.7-module-source

O module assistant irá instalar automaticamente o pacote de utilitários, necessário para a administração e utilização do drbd. Debian é mágico! :=D


Configuração:

Configurando a Resolução de Nomes

Os dois servidores deverão resolver os nomes, uns dos outros, para tornar esta resolução independente do servidor DNS, é recomendada a configuração do /etc/hosts conforme o exemplo abaixo:

  #vi /etc/hosts
  10.1.1.23    spotlight, server01
  10.1.1.26    Lvia, server02

Testando resolução de nomes

Para testar se as duas estão se enchergando na rede, pode-se tentar pingar os respectivos hostnames:

  #ping spotlight
  #ping lvia

Caso o ping, não funcione, deverá ser verificada a configuração de rede lógica e física das máquinas, bem como do /etc/hosts.

O arquivo de configuração do DRBD

O arquivo de configuração utilizado pelo DRBD é o /etc/drbd.conf, caso este arquivo não esteja corretamente configurado, o drbd não irá funcionar corretamente.

Os parametros que são obrigatórios de serem alterados são: hostname, device, disk, meta-disk, address and port na seção "on <hostname> {}" .

  on spotlight {
      device     /dev/drbd0;
      disk       /dev/hda4;
      address    10.1.1.23:7788;
      meta-disk  internal;
  
  }
  
  on Lvia {
      device    /dev/drbd0;
      disk      /dev/hdc2;
      address   10.1.1.23:7788;
      meta-disk internal;
  }


OBS: O hostname no arquivo de configuração deverá ser idêntico ao no /etc/hosts. Cuidado, o DRBD é case sensitive. Lvia é diferente de lvia.

Um exemplo de arquivo de configuração pode ser encontrado aqui.


Carregando o módulo do drbd

Para que o drbd funcione é necessário que seja carregado o seu módulo, nas duas máquinas que irão executar o sistema.

Execute o Comando abaixo nas nas duas máquinas:

  # modprobe drbd

caso, não apareçam messagens de erro, o módulo deverá ter sido carregado com sucesso.

Testando se o módulo carregou corretamente

Verifique o conteúdo do arquivo /proc/drbd com o seguinte comando:

  #cat /proc/drbd

O resultado deverá ser parecido com:

  version: 0.7.19 (api:78/proto:74)
  SVN Revision: 2212 build by root@spotlight, 2006-06-22 21:12:58
  0: cs:Unconfigured
  1: cs:Unconfigured

Iniciando e Conectando o DRBD

Após a carga dos módulos, será necessário iniciar e conectar o drbd dos dois servidores. Para esta finalidade execute o comando abaixo:

  @server01#drbdadm up all

caso, não apareçam mensagens de erro, o drbd deverá ter sido inicializado e conectado corretamente.

Testando se o DRBD iniciou e conectou

Para verificar se o DRBD iniciou e conectou com sucesso, execute o comando:

  @server01#cat /proc/drbd

O resultado deverá ser semelhante:

  version: 0.7.19 (api:78/proto:74)
  SVN Revision: 2212 build by root@spotlight, 2006-06-22 21:12:58
   0: cs:Connected st:Secondary/Secondary ld:Inconsistent
    ns:0 nr:0 dw:0 dr:0 al:0 bm:656 lo:0 pe:0 ua:0 ap:0
   1: cs:Unconfigured

O importante nessa saída são as a linhas do dispositivo drbd que foi criado (0).

 cs:Connected 
 A chave cs: armazena a informação de conexão do drbd, seu conteúdo sendo Connected significa que  o dispositivo drbd está conectado entre as duas máquinas.
 st:Secondary/Secondary 
 A chave st: é responsável por armazenar a informação sobre o estado das máquinas. O seu conteúdo Secondary/Secondary significa que as duas máquinas estão como secundárias.
 ld:Inconsistent 
 A chave ld: é responsável por armazenar a informação sobre a consistência da sincronização entre as máquinas. O seu conteúdo Inconsistent significa que os dados dos discos são diferentes e estão inconsistentes. Isto é normal, neste momento, pois os discos ainda não foram sincronizados.


Tornar uma das máquinas primária:

Este procedimento deverá ser realizado cuidadosamente, pois a partir deste momento, o drbd estará sincronizando os dados da máquina que foi definida como primária para a máquina secundária. Isto significa que TODOS os dados na partição usada pelo drbd na máquina secundária, serão apagados, além disso, os dados da máquina primária serão espelhados na máquina secundária.

Em uma das máquinas execute o seguinte comando :

  #drbdadm primary all

se ocorrer um erro, não se preoculpe, é normal, isso acontece pois o drbd se recusa a se tornar primário, caso o id seja inconsistente.

Para resolver este problema, é necessário pedir para o drbd forçar esta sincronização. Isso é feito através do parâmetro --do-what-I-say, esta "funcionalidade" foi criada para evitar que os dados da máquina secundária fossem apagados, sem o real consentimento e consciência do administrador do sistema. Na versão 0.8 do drbd, o parâmetro --do-what-I-say foi substituído por --overwrite-data-of-peer com o objetivo de fazer mais sentido para os usuários do drbd.

Tente tornar uma das máquinas como primária, desta vez com os parâmentros corretos para esta primeira sincronia.

  #drbdadm -- --do-what-I-say  primary all

caso, não apareça nenhuma mensagem de erro, significa que o comando foi bem sucedido.

Acompanhando o progresso da sincronização

O progresso da sincronizaçãop entre os servidores é informado no arquivo /proc/drbd. Iremos utilizar o comando watch para acompanhar este progresso.

  #watch -n1 cat /proc/drbd
  version: 0.7.19 (api:78/proto:74)
  SVN Revision: 2212 build by root@spotlight, 2006-06-22 21:12:58
   0: cs:SyncSource st:Primary/Secondary ld:Consistent
    ns:196740 nr:0 dw:0 dr:196876 al:0 bm:668 lo:0 pe:4 ua:34 ap:0
    [>...................] sync'ed:  3.8% (5053/5245)M
    finish: 0:07:55 speed: 10,848 (10,352) K/sec
   1: cs:Unconfigured

Quando a sincronização estiver concluída, o resultado do comando cat /proc/drbd deverá ser semelhante ao abaixo:

  version: 0.7.19 (api:78/proto:74)
  SVN Revision: 2212 build by root@spotlight, 2006-06-22 21:12:58
   0: cs:Connected st:Primary/Secondary ld:Consistent
    ns:5371188 nr:0 dw:0 dr:5371188 al:0 bm:984 lo:0 pe:0 ua:0 ap:0
   1: cs:Unconfigured

Um detalhe importante e que deverá ser reparado é que o estado em uma das máquinas será primário e na outra secundário, além disso é importante reparar que o ld está consistente, demonstrando que os dispositivos das duas máquinas estão sincronizados.

Usando o Drbd

A partir do momento que o drbd estiver configurado, os discos rígidos individuais de cada máquina, não deverão ser utilizados diretamente. Todo acesso deverá ser realizado através do dispositivo "virtual" /dev/drbd0.

As aplicações que são executadas em userland não irão enxergar nenhuma diferença entre o dispositivo drbd e qualquer outro dispositivo de blocos.

Desta forma teoricamente é possível fazer qualquer coisa que se pode fazer com um dispositivo de blocos com o dispositivo drbd.

Importante: Para acessar, formatar, montar, particionar, etc. o dispositivo drbd é necessário que a máquina que vá acessar o dispositivo seja Primária. O Drbd 0.7 não deve ser usado em duas máquinas como primário ao mesmo tempo, sobe o risco, caso funcione, de corromper os dados e sistemas de arquivos dos discos.

Formantando o dispositivo criado:

Poderá ser utilizado qualquer ferramenta de criação de qualquer sistema de arquivos.

Neste documento será utilizado o sistema de arquivos ext3 e o utilitário mkfs.ext3.

Na máquina primária execute o comando:

  @server01#mkfs.ext3 /dev/drbd0

Montando o dispositivo criado:

Na máquina primária execute o comando:

  @server01#mount -t ext3 /dev/drbd0 /mnt

Desmontando o dispositivo criado:

Na máquina primária execute o comando:

  @server01#umount /dev/drbd0

Rodando fsck no dispositivo criado:

Na máquina primária execute o comando:

  @server01#fsck /dev/drbd0

Alternando entre Primário e Secundário

Na máquina primária execute o comando:

   @server01#drbdadm secondary all

Na máquina secundária execute o comando:

   @server02#drbdadm primary all

Desligando o DRBD

O DRBD pode ser desligado de duas maneiras, através da utilização do script de inicialização que se encontra disponível em: /etc/init.d/drbd ou através de procedimento manual. Estes procedimentos são necessários para garantir a integridade dos dados entre os servidores.

A utilização do script é a maneira recomendada. Caso ela não funcione corretamente poderá ser utilizado o procedimento manual.

Para parar o drbd é necessário que os dispositivos estejam como secundário e que não estejam sendo acessados pelas aplicações do sistema operacional.

Por este motivo, antes de se parar o drbd é necessário desmontar a partição do dispositivo drbd.

Utilize o seguinte comando para fazer isso:

  #umount /dev/drbd0 

Utilizando o script de inicialização do DRBD

Agora já é possível parar o serviço através do script.

  #/etc/init.d/drbd stop 

Para iniciar o serviço utilize:

  #/etc/init.d/drbd start

Procedimento Manual

Para Parar o drbd:

Torne a máquina secundária:

  #drbdadm secondary all

Desligue e desconecte o drbd:

  #drbdadm down all

Por fim, remova o módulo:

  #rmmod drbd


Teste de funcionamento

Monte o Dispositivo na máquina primária

Para montar o dispositivo na máquina primária execute o comando:

  @server01#mount -t ext3 /dev/drbd0 /mnt

Crie um arquivo no diretório onde foi montado o drbd

Utilize por exemplo:

  @server01#cd /mnt/ ; echo funcionou > teste
  @server01#ls

Verifique o espaço disponível no dispositivo

Utilize por exemplo, o comando df:

  @server01#df -h /dev/drbd0

Desmonte o dispositivo:

  @server01#cd / ; umount /dev/drbd0

Torne a máquina primária em secundária:

  @server01#drbdadm secondary all

Tornar a outra máquina em primária:

Na outra máquina digite:

  @server02#drbdadm primary all

Montar o dispositivo na nova máquina primária:

  @server02#mount -t ext3 /dev/drbd0 /mnt

Verificar se o arquivo criado na antiga primária, existe na nova primária :

  @server02#ls /mnt
  @server02#cat /mnt/teste

Se funcionou parabéns, por você ter conseguido ler este documento até o final e por ter uma instalação plenamente funcional do drbd.

\o/

Na próximo semana será ensinado como automatizar o processo de sucessão entre as máquinas primária e secundária caso, ocorram falhas.

Este próximo artigo irá abordar a utilização de HeartBeat e sua integração com o drbd, o servidor web apache e o servidor de banco de dados mysql.

Está prevista a criação de artigos sobre o OCFS2, GFS2, DRBD 0.8 ativo/ativo, Integração OCFS2+DRBD0.8+LVS+Apache, Criando um dispositivo de armazenamento em rede de baixo custo(CHEAP SAN), Máquinas Virtuais Xen.


Mais Informações sobre o DRBD

Mais informações sobre o DRBD podem ser obtidas no sítio do projeto em : [1] (http://www.drbd.org/)

A Documentação original pode ser acessada pelo link : [2] (http://www.drbd.org/documentation.html)

Listas de discussão do projeto : [3] (http://lists.linbit.com/)

Personal tools