/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
- 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
- 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
- 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.
One Comment to “DRBD: Configurando Resource – Parte 03”