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.116 ]

Por: Ciro Siqueira em 01/09/2008


DRBD - Continuação



Problemas conhecidos

Split-Brain

Este problema ocorre quando ambas as máquinas são carregadas de maneira isolada, não havendo conectividade entre os recursos. Com isso, as máquinas não conseguem conectar os devices ao recursos sincronizador.

Para solucionar esse problema é necessário limpar os dados de conexão do recurso em um dos nós.

Na máquina slave, execute:

# drbdadm secondary nome_do_recurso
# drbdadm -- --discard-my-data connect nome_do_recurso


Explicando: O primeiro comando transformará o recurso em secundário, em seguida você descarta os dados de conexão do recurso.

Na máquina master, execute:

# /etc/init.d/drbd stop
# /etc/init.d/drbd start
# drbdadm primary nome_do_recurso


ADD-ON

Para um melhor gerenciamento do sistema DRBD em relação a montagem do volume nas duas máquinas, nós criamos um script que irá gerenciar a montagem dos devices, onde o mesmo será gerenciado pelo heartbeat.

Esse script será utilizado para transformar o nodo que está em operação em primário, além de montar, no nosso exemplo, o /dev/drbd2. Quando o nodo que está em operação cair, o outro nodo assume. Nesse caso, o heartbeat utilizará esse script para transformar esse nodo em secundário no DRBD e desmontar o device. Com isso, o nodo que assumiu faz o processo inverso, transformado o DRBD em primário e montando o device.

Vamos ao script:

# vi /etc/init.d/drbd.ha

#!/bin/bash
#
DRBDADM="/sbin/drbdadm"
MODPROBE="/sbin/modprobe"
RMMOD="/sbin/rmmod"
MOUNT="/bin/mount"
UMOUNT="/bin/umount"

case "$1" in
    start)
   echo -n "Starting all DRBD devices: "
  
   $DRBDADM primary all
   $MOUNT /dev/drbd2 /srv

   echo "Done."

   ;;
    stop)
   echo -n "Stopping all DRBD devices: "

   $UMOUNT /dev/drbd2
   $DRBDADM secondary all

   echo "Done."
   ;;
    *)
   echo "Usage: $0 {start|stop}"
   exit 1
   ;;
esac

exit 0

Não esqueça de dar permissão de execução ao script:

# chmod +x /etc/init.d/drbd.ha

E de incluir a chamada do mesmo no arquivo do heartbeat.

# vi haresources

master \
   IPaddr2::192.168.1.240/24/eth0/192.168.1.255 \
   apache2 drbd.ha

Finalizado, reinicie o serviço heartbeat.

# /etc/init.d/heartbeat stop
# /etc/init.d/heartbeat start


NOTA: Isso poderá fazer com que a máquina slave assuma a master, pois você está paralisando o heartbeat.

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

Relato do 7° FGSL - Fórum Goiano de Software Livre

Fazendo uma conexão bridge no VirtualBox

Instalação do Fedora Workstation 33

APTonCD: Ubuntu Linux sem dependência de internet

Configurando dispositivo CD-R/CD-RW e gravando CD em modo texto

  
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