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

Por: Ciro Siqueira em 01/09/2008


Mon



O mon será utilizado para monitorar os serviços locais da máquina e executar uma tarefa caso ocorra algum problema com o serviço monitorado.

No nosso exemplo, usaremos ele para monitorar o Apache e caso o mesmo tenha problemas de requisição, o mon derrubará o heartbeat, forçando assim a máquina slave a assumir os serviços.

OBSERVAÇÃO: O mon tem opções para enviar e-mail de alerta caso ocorra algum problema. Para isso você poderá configurar um servidor de e-mail na máquina para enviar e-mails de alerta. Em nosso servidor, utilizamos o Postfix com Host Relay.

Instalação do Mon

Aqui iremos apenas instalar o pacote.

# aptitude install mon

Configuração do Mon

Primeiramente configure o arquivo principal do mon.

alertdir   = /usr/lib/mon/alert.d
mondir     = /usr/lib/mon/mon.d
maxprocs   = 20
histlength = 100
randstart  = 60s

hostgroup www localhost

watch www
   service http
   interval 10s
   monitor http.monitor
   allow_empty_group
   period wd {Sun-Sat}
      alert heartbeat.alert
      alert mail.alert -S "web server is down" root@localhost
      upalert mail.alert -S "web server is up" root@localhost
      alertevery 1m

Essa configuração monitorará o processo do Apache da seguinte maneira: ele verificará de 10 em 10 segundos (interval) se o Apache está respondendo. Caso o mesmo apresenta falha de conexão na máquina local, ele irá executar o script "heartbeat.alert", responsável pela paralisação do heartbeat, obrigando assim a máquina slave assumir e irá disparar um e-mail através do script mail.alert com o assunto explícito em -S ASSUNTO para root@localhost.

O arquivo heartbeat.alert poderá ser baixado aqui, já que o mesmo não vem instalado por default.

Com isso, podemos iniciá-lo.

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


Ajustes de SUDO

Em nossos testes detectamos que o daemon do mon é executado no sistema com o usuário daemon. Isso nos gerou um problema, pois esse usuário não tem permissões para derrubar o heartbeat quando o Apache cai.

Para solucionar esse problema vamos usar o SUDO para dar as permissões necessárias para o usuário daemon executar a tarefa corretamente.

Vamos ao processo:

# aptitude install sudo

Em seguida, configure o SUDO.

# visudo

#Defaults        env_reset
root    ALL=(ALL) ALL
daemon  ALL=NOPASSWD:/etc/init.d/heartbeat stop

E para finalizar, ajuste o arquivo heartbeat.alert para utilizar o SUDO.

Você deverá alterar a linha a seguir:

# vi /usr/lib/mon/alert.d/heartbeat.alert

[...]

# system ("/etc/init.d/heartbeat stop");
system ("sudo /etc/init.d/heartbeat stop");

E por fim, reinicie o mon.

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


Criado por:
Ciro Siqueira - siqueira.ciro[em]gmail.com
Fabricio Vaccari Constanski - fabriciovc[em]gmail.com

Página anterior    

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

MenuetOS - O extraordinário mini-sistema operacional

Software Livre... e um passo além

PORTAGE - Gerenciamento de pacotes no Gentoo Linux

Internet Explorer: Esse fenômeno

Melhorando a experiência com Cinnamon no LMDE

  
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