Alta Disponibilidade (HA) com Debian (Heartbeat + DRBD + Mon)

Neste tutorial estaremos montando um ambiente de alta disponibilidade usando Heartbeat, DRBD e Mon baseados em Debian. Tendo em vista a dificuldade que tivemos em encontrar tutoriais atualizados sobre esse assunto, decidimos compartilhar nossas experiências com a comunidade.

[ Hits: 121.115 ]

Por: Ciro Siqueira em 01/09/2008


DRBD



Pré-requisitos do sistema

No caso do DRBD, iremos compilá-lo. Com isso prepararemos o sistema com os pacotes necessários para que possamos continuar.

Primeiramente instalaremos o kernel-headers e kernel-source, necessários para a compilação do DRBD.

# aptitude install linux-headers-2.6.25-2-686 linux-source-2.6.25

Em seguida desempacote o kernel-source:

# cd /usr/src
# tar xjvf linux-source-2.6.25.tar.bz2


Agora vamos instalar os pacotes adicionais, necessários para a compilação:

# aptitude install gcc g++ make kernel-package dpkg-dev gettext flex

Compilando...

Primeiramente vamos realizar o download do DRBD e desempacotá-lo.

# cd /usr/src
# wget -c
http://oss.linbit.com/drbd/8.2/drbd-8.2.6.tar.gz
# tar xzvf drbd-8.2.6.tar.gz

Em seguida vamos preparar o kernel para que a compilação seja realizada:

# cd linux-source-2.6.25
# make mrproper
# cp /boot/config-2.6.25-2-686 .config
# make modules_prepare
# cd ..


Agora vamos compilar o DRBD:

# cd drbd-8.2.6/drbd
# make clean all
# make clean
# make KDIR=/usr/src/linux-source-2.6.25/
# cd ..
# make tools
# make install
# make install-tools
# make all install


E por fim, carregue o módulo do DRBD:

# modprobe drbd

Configuração do DRBD

Primeiramente precisamos configurar os nomes das máquinas utilizadas.

# vi /etc/hosts

127.0.0.1   localhost
172.16.1.241   master
172.16.1.242   slave

Em seguida vamos configurar o DRBD.

# vi /etc/drbd.conf

resource nome_do_recurso {
   protocol C;
   disk {  
      on-io-error detach;
   }
   net {  
      timeout 60;    
      connect-int 10;
      ping-int 10;
   }
   syncer {        
      rate 100M;
      #group 1;
   }
   on master {
      device /dev/drbd2;
      disk /dev/md2;
      address 172.16.1.241:7788;
      meta-disk internal;
   }
   on slave {
      device /dev/drbd2;
      disk /dev/md2;
      address 172.16.1.242:7788;
      meta-disk internal;
   }
}

OBSERVAÇÃO: Não esqueça de comentar a linha referente a montagem do device /dev/md2 no /etc/fstab, lembrando que esse device está sendo utilizado em nosso exemplo, podendo variar em outras instalações.

IMPORTANTE: Antes de continuarmos precisamos parar o DRBD para criar os recursos isoladamente na máquinas, evitando a sincronização imediata dos mesmos, já que a sincronização deverá ser iniciada somente após os recursos estiverem devidamente formatados.

# /etc/init.d/drbd stop

A seguir criaremos o recurso DRBD (nome_do_recurso) e ativaremos e formataremos o device (/dev/drbd2).

# dd if=/dev/zero bs=1M count=1 of=/dev/md2
# sync
# drbdadm create-md nome_do_recurso
# drbdadm up all
# drbdadm -- -o primary nome_do_recurso
# mkfs.xfs /dev/drbd2


E por fim, inicializaremos o serviço DRBD.

# /etc/init.d/drbd start

Com isso o DRBD já está ativo, funcionando e já deve estar sincronizando os dados. Para verificar a sincronização, execute:

# watch -n1 cat /proc/drbd

version: 8.2.6 (api:88/proto:86-88)
GIT-hash: 3e69822d3bb4920a8c1bfdf7d647169eba7d2eb4 build by root@master, 2008-08-20 13:29:43

2: cs:SyncSource st:Primary/Secondary ds:UpToDate/Inconsistent C r---
    ns:1138640 nr:0 dw:0 dr:1146720 al:0 bm:70 lo:1 pe:5 ua:253 ap:0 oos:967033512
   [.>...................] sync'ed:  1.2% (944168/945480)M
   finish: 15:37:02 speed: 16,960 (11,272) K/sec

Página anterior     Próxima página

Páginas do artigo
   1. Preparando o sistema
   2. Heartbeat
   3. DRBD
   4. DRBD - Continuação
   5. Mon
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Filosofia do Open Source, um novo jogo?

A Origem dos Nomes

Impressora JPG no Linux compartilhada para Windows

PLC no Linux alguém já pensou nisso?

Traduzindo legendas de maneira prática no Linux

  
Comentários
[1] Comentário enviado por diekn em 01/09/2008 - 18:43h

Bem,amigo,gostei bastante do seu arquivo,sobre tudo,que é em debian,estarei implementando para testar,desde já,parabens.

[2] Comentário enviado por nuvem_negra em 02/09/2008 - 13:55h

Perfeito estava a tempos a procura de um tutorial sobre essas ferramentas, parabéns

[3] Comentário enviado por madrux em 02/09/2008 - 16:16h

Caro amigo, também estou montando um ambiente de alta disponibilidade para o meu firewall, mas me deparei com uma pequena duvida. Os arquivos que quero sincronizar entre os servidor1 e servidor2 estão na partição "/dev/sdax" , mas acontece que enquanto esta partição estvier montada não poderei fazer o sincronismo da mesma através do DRDB. Gostaria de saber como que posso fazer para sincronizar as informações e utilizar os arquivos contidos nessa mesma partição que quero sincronizar através DRDB? Tanto que em seu arquivo você colocou uma observação informando que deveria ser comentada a linha de ponto de montagem do disco que será sincronizado

Muito Obrigado pela ajuda.

[4] Comentário enviado por fmpfmp em 02/09/2008 - 16:16h

Parabéns pela iniciativa. Realmente, a configuração de alta disponibilidade no Linux é algo bastante nebuloso.

[5] Comentário enviado por agimenez em 03/09/2008 - 00:56h

Show de bola esse artigo!!! Fui atrás de váários na net.. e cada um me traz uma luz para meu problema.

Uma coisa que não entendi é os IPs das placas de rede:
# Eth0: 192.168.1.240 (Lan) - não irá dar conflito de ter duas máquinas com o mesmo IP?
# Eth1: 172.16.1.241 (HA) - essa placa de rede estará ligada direto na eth1 da maquina slave?


Para quem sempre buscou sobre o assunto, segue alguns locais que eu achei informações:
http://www.howtoforge.com/high_availability_heartbeat_centos
http://www.linux-ha.org/LearningAboutHeartbeat

[6] Comentário enviado por cirosiqueira em 03/09/2008 - 09:51h

Caro madrux

Pense no DRBD como um RAID porém em máquina separadas. Você não pode ter uma partição física montada e criar um arranjo de discos em cima desta partição. Portanto você deve pensar que será uma nova partição em cima de (/dev/sdax). Faça backup dos seus arquivos, monte o arranjo DRBD, e depois restaure-o, até porque essa "nova partição" também terá de ser formatada. Por isso você deve comentar a entrada da partição "física" (/dev/sdax) no seu FSTAB, porque você irá carregar na verdade o arranjo DRBD.

Abraço e boa sorte.

[7] Comentário enviado por cirosiqueira em 03/09/2008 - 11:41h

Caro agimenez

No caso da placa de rede LAN leve em consideração que quem irá levantar esse IP na placa é o Heartbeat, ou seja o IP estará disponivel em apenas uma das máquinas (máquina mestre). Caso ocorra da maquina mestre falhar, a escrava assume esse endereço IP derrubando o endereço em questão da máquina mestre. Por esse motivo não configuramos este IP em "/etc/network/interfaces", deixando isso ao encargo do Heartbeat.
A outra placa de rede (eth1), é conectada diretamente a outra eth1 na máquina slave, sendo usada para o DRBD e Heartbeat. Por isso elas precisam ter IP's diferentes e são carregadas na inicialização, diferentemente da placa usada na LAN. Se você preferir também pode separar os serviços de DRBD e Heartbeat em interfaces separadas.

Abraço.

[8] Comentário enviado por grandmaster em 03/09/2008 - 22:52h

Muito bom. Adicionado para uso futuro :D

Renato de Castro Henriques
CobiT Foundation 4.1 Certified ID: 90391725
http://www.renato.henriques.nom.br

[9] Comentário enviado por hibiki em 07/10/2008 - 14:20h

Bom estou com uma duvida aqui na empresa tenho que configurar o compartilhamento com a net e o squid como fazer eles com o Heartbeat + DRBD + Mon, como comento a configuração na rede do interface.. fico a divida

[10] Comentário enviado por fabiobc em 31/10/2008 - 10:13h

Preciso ter uma placa especifica para o heartbeat?
seriam duas placas por maquina?

[11] Comentário enviado por rubensurquisa em 01/04/2010 - 01:20h

seu artigo é muito bom e também quero implantar esta solução, mas apereceu um probleminha quando executo:
#make clean all
FATAL: Module drdb not found.

Desde já lhe agradeço por qualquer sugestão

[12] Comentário enviado por rubensurquisa em 02/04/2010 - 00:58h

garimpei um pouco mais e descobri outro forma mais simples de instalar o drdb8 sem precisar compilar o codigo fonte mas pelo pacote binário fornecido pelo debian lenny no repositorio.

S.O debian 5.04 com kernel 2.6.26-2-686
Actualize o repositório do debian Lenny

#nano /etc/apt/sources.list
#Repositório oficial Brasil
deb ftp://ftp.br.debian.org/debian lenny main contrib non-free
deb-src ftp://ftp.br.debian.org/debian lenny main contrib non-free

#Se quiser utilizar os repositórios USA descomente a linha
deb ftp://ftp.us.debian.org/debian lenny main contrib non-free
deb-src ftp://ftp.us.debian.org/debian lenny main contrib non-free

# Repositório de atualizações frequentes
deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free

# Repositório de atualizações de segurança
deb http://security.debian.org/ lenny/updates main contrib non-free
deb-src http://security.debian.org/ lenny/updates main contrib non-free

# Repositório de atualizações propostas
deb ftp://ftp.br.debian.org/debian lenny-proposed-updates main contrib non-free
deb-src ftp://ftp.br.debian.org/debian lenny-proposed-updates main contrib non-free

# aptitude update

# aptitude install drbd8-modules-2.6-686 drbd8-utils

depois é só configurar, lembrando que testei isso no debian 5.04 lenny



[13] Comentário enviado por brpemerson em 01/09/2011 - 19:24h

Boa noite,

alguém já passou pela experiência de ter que migrar um servidor em produção para este sistema em alta disponibilidade?

Tenho um servidor debian em produção que preciso passar ele para este sistema de alta disponibilidade.
O que me sugerem?

[14] Comentário enviado por ogaroto666 em 05/07/2012 - 21:37h

olá amigo, gostaria de saber quanto você me cobraria para configurar uma infra estrutura dessas aqui em minha empresa. Estamos interessados em aplicar isso em nossos servidores.
favor entrar em contato
rafael_0015@yahoo.com.br
61 81332935

[15] Comentário enviado por Luismar em 13/05/2013 - 20:44h

Gente, eu instalei aqui rapidinho o Heartbeat + DRBD + Apache2 só que o IP virtual do Heartbeat está sumindo, ele só carrega no inicio quando eu faço o login no debian e depois de alguns segundos ele some e não aparece mais, dou um restart no Heartbeat mas depois de alguns segundos ele some novamente, alguém já passou por este problema aí ???

[16] Comentário enviado por angelogpl em 03/02/2014 - 14:18h

Temos um IBM BladeCenter, possuindo chassi e lâminas. Dentre essas lâminas, apenas uma rodando um servidor Debian não virtualizado. A idéia seria virtualizá-lo e trabalhar com alta disponibilidade e possivelmente com balanceamento de carga. Na lâmina atual que foi citada, tenho 16GB de RAM, 16 núcleos em HT e disco de 250 GB, aproximadamente.

Gostaria de saber como implantar no Linux, em conceitos práticos, mas particularmente sob o aspecto da implantação do Hardware, associado a softwares de virtualização gratuitos ou pagos, caso seja necessário, a melhor solução de software para virtualização, que mais se adequasse com a Alta Disponibilidade e Balanceamento de Carga, aplicada a esse cenário ou ao mais semelhante possível.

Estou aberto a sugestões.

Favor, entrem em contato por um dos e-mails a seguir:

frequenciadigital@cidadaopg.sp.gov.br

ou

angeloztemobile@gmail.com


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts