1 UNIRON – UNIÃO DAS ESCOLAS SUPERIORES DE RONDÔNIA CÂMPUS III DE PORTO VELHO PÓS-GRADUAÇÃO DE SEGURANÇA DE REDES E SISTEMAS COMPUTACIONAIS JORGE WILLIANS DA SILVA BATISTA CLUSTER DE ALTA DISPONIBILIDADE EM SISTEMAS LINUX COM AS FERRAMENTAS: DRBD, HEARTBEAT E MON PORTO VELHO 2010
36
Embed
ARTIGO CLUSTER DE ALTA DISPONIBILIDADE EM SISTEMAS LINUX
Alta disponibilidade é uma técnica que consiste na configuração de dois ou mais computadores para que eles passem a trabalhar em conjunto. Desta forma, cada maquina monitora as demais e, em caso de falhas, assume os serviços que ficaram indisponíveis.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
1
UNIRON – UNIÃO DAS ESCOLAS SUPERIORES DE RONDÔNIA
CÂMPUS III DE PORTO VELHO
PÓS-GRADUAÇÃO DE SEGURANÇA DE REDES E SISTEMAS COMPUTACIONAIS
JORGE WILLIANS DA SILVA BATISTA
CLUSTER DE ALTA DISPONIBILIDADE EM SISTEMAS LINUX COM AS FERRAMENTAS: DRBD, HEARTBEAT E MON
PORTO VELHO 2010
2
JORGE WILLIANS DA SILVA BATISTA
CLUSTER DE ALTA DISPONIBILIDADE EM SISTEMAS LINUX COM AS FERRAMENTAS: DRBD, HEARTBEAT E MON
Trabalho de Conclusão de apresentado ao Curso de Pós-Graduação em Segurança de Redes e Sistemas Computacionais da UNIRON – União das Escolas Superiores de Rondônia, como requisito à obtenção do título de Especialista.
Orientadora: Prof. Esp. Carilene Coelho de Souza Campos
PORTO VELHO
2010
3
JORGE WILLIANS DA SILVA BATISTA
CLUSTER DE ALTA DISPONIBILIDADE EM SISTEMAS LINUX COM AS
FERRAMENTAS: DRBD, HEARTBEAT E MON
Trabalho de Conclusão de apresentado ao Curso de Pós-Graduação em Segurança de Redes e Sistemas Computacionais da UNIRON – União das Escolas Superiores de Rondônia, como requisito à obtenção do título de Especialista.
Prof. Esp. Carilene Coelho de Souza Campos UNIRON – União das Escolas Superiores de Rondônia
PORTO VELHO 2010
4
Dedico aos meus pais,
irmãos, esposa e
amigos, companheiros
de todas as horas.
5
AGRADECIMENTOS
Gostaria de agradecer aos meus pais e minha esposa que contribuíram na conclusão de mais uma jornada em minha vida, pois sem o apoio deles não teria chegado até aqui.
6
RESUMO
Cluster pode ser definido como um sistema onde dois ou mais computadores trabalham de maneira conjunta para realizar grandes processamentos. Em outras palavras, os computadores dividem as tarefas de processamento e trabalham como se fossem um único computador; Quando se fala de Disponibilidade, fala-se do tempo em que determinado sistema permanece ativo e em condições de uso. A Alta Disponibilidade se refere a sistemas que praticamente não param de funcionar. Esses tipos de clusters são usados em aplicações de missão crítica, eles costumam ter meios eficientes de proteção e de detecção de falhas; Usando o Linux a alguns software gratuitos, que dentre eles, destacam-se o Drbd, Heartbeat e o Mon, que são distribuído sob licença GPL (sem limitações), você verá que é possível criar um ambiente com ótima redundância à falhas. Tudo isso de forma transparente aos usuários da rede. Nesta artigo será mostrado a instalação e configuração destas ferramentas em sistemas Debian e derivados, bem como os resultados obtidos na implementação de um estudo de caso onde será implantado Alta Disponibilidade em um servidor de arquivos samba.
Palavras-chave: Drbd. Heartbeat. Mon. Alta Disponibilidade. Cluster.
ABSTRACT
Cluster can be defined as a system where two or more computers work jointly to achieve large throughputs. In other words, the computers share the processing tasks and work like a single computer; When it comes to availability, talks about the time that a system remains active and in working condition. High Availability refers to systems that almost do not stop working. These types of clusters are used in mission critical applications, they usually have efficient means of protection and fault detection; Using Linux to some free software, which among them are highlighted DRBD, Heartbeat and Mon, which are distributed under GPL license (without limitation), you'll see that you can create an environment with optimal redundancy fault. All this transparently to network users. This article will show the installation and configuration of these tools on Debian systems and derivatives, as well as the results achieved in implementing a case study which will be deployed in a High Availability Samba file server.
Keywords: Drbd. Heartbeat. Mon. High Availability. Cluster.
Nem todas distribuições possuem os dispositivos do drbd1 criados em /dev ou o pacote
correspondente cria na instalação. Verifique se eles existem
Host1:
# ls /dev/drbd*
Host2:
# ls /dev/drbd*
Se não estiverem lá, crie com o comando a seguir (cria 15 dispositivos por padrão)
Host1:
# for i in $(seq 0 15) ; do mknod /dev/drbd$i b 147 $i;done
Host2:
# for i in $(seq 0 15) ; do mknod /dev/drbd$i b 147 $i;done
O próximo passo é configurar o arquivo /etc/drbd.conf nas duas máquinas (deixar o
arquivo exatamente igual nas duas)
Host1:
# mcedit /etc/drbd.conf
Host2:
# mcedit /etc/drbd.conf
Adicione as linhas abaixo:
---------------------------------------------------------------------------------------------------------------- global { usage-count yes; }
24
common { # Velocidade de transferência (utilize em torno de 40% a 60% da sua banda total) syncer { rate 100M; } } # Nome do resource em questão (sera utilizado como referencia nos comandos posteriores) resource dados { protocol C; handlers { pri-on-incon-degr "echo o > /proc/sysrq-trigger ; halt -f"; pri-lost-after-sb "echo o > /proc/sysrq-trigger ; halt -f"; local-io-error "echo o > /proc/sysrq-trigger ; halt -f"; pri-lost "echo primary DRBD lost | mail -s 'DRBD Alert' [email protected]"; split-brain "echo split-brain. drbdadm -- --discard-my-data connect / $DRBD_RESOURCE ? | mail -s 'DRBD Alert' [email protected]"; } startup { degr-wfc-timeout 120; # 2 minutes. } disk { on-io-error detach; } net { sndbuf-size 512k; timeout 60; # 6 seconds (unit = 0.1 seconds) connect-int 10; # 10 seconds (unit = 1 second) ping-int 10; # 10 seconds (unit = 1 second) ping-timeout 5; # 500 ms (unit = 0.1 seconds) max-buffers 20480; cram-hmac-alg "sha1"; shared-secret "dfadspuy234523n"; # esta chave é uma senha de conexão, de qualquer valor after-sb-0pri discard-older-primary; after-sb-1pri violently-as0p; after-sb-2pri disconnect; rr-conflict disconnect; } syncer { rate 100M; # novamente referente a transferência de rede al-extents 257; } on host1 { device /dev/drbd1; #aqui será o endereço do dispositivo (disco) virtual do DRBD disk /dev/sda2; #aqui será a partição do disco que será replicada address 192.168.0.1:7788; #IP do host1 meta-disk internal; #onde será colocado o meta-disk do drbd (ficará junto com o resto do sistema)
25
} on host2 { device /dev/drbd1; #aqui será o endereço do dispositivo (disco) virtual do DRBD disk /dev/sda2; #aqui será a partição do disco que será replicada address 192.168.0.2:7788; #IP do host2 meta-disk internal; #onde será colocado o meta-disk do drbd (ficará junto com o resto do sistema) } }
Meta-disk - disco temporário utilizado pelo drbd para armazenamento. Desmontar as partições nas duas máquinas:
Host1:
# umount /sejus
Host2:
# umount /sejus
Em seguida, retirare a entrada para a pasta do fstab das duas máquinas (ou comente com tralha):
Host1:
# mcedit /etc/fstab
Host2:
# mcedit /etc/fstab
É necessário zerar a partição que será replicada nas duas máquinas:
Host1:
# dd if=/dev/zero of=/dev/sda2 bs=1M count=128
Host2:
# dd if=/dev/zero of=/dev/sda2 bs=1M count=128
Criar o disco virtual:
Host1:
# drbdadm create-md dados
Host2:
# drbdadm create-md dados
Atar o disco nas duas máquinas:
26
Host1:
# drbdadm attach dados
Host2:
# drbdadm attach dados
Sincronizar:
Host1:
# drbdadm syncer dados
Host2:
# drbdadm syncer dados
Iniciar replicação no Host1:
Host1:
# drbdadm -- --overwrite-data-of-peer primary dados Reiniciar o serviço nas duas máquinas:
Host1:
# /etc/init.d/drbd restart
Host2:
# /etc/init.d/drbd restart
Verifique se a sincronização começou:
Host1:
# cat /proc/drbd
Verifique se o resultado está parecido com o apresentado abaixo:
#informe os nomes dos computadores que formam a replicação(deve ser igual a saída do comando "uname -n ----------------------------------------------------------------------------------- node host1 node host2 udp eth1 #qual a interface vai ser usada para comunicação serial /dev/ttys0 # indica a porta serial que vai ser usada para comunicação baud 19200 #Define a baud rate para as portas seriais. O valor padrão é 19200 debugfile /var/log/ha-debug #arquivos de log logfile /var/log/ha-log #arquivos de log keepalive 1 #freqüência, em segundos, da verificação das máquinas deadtime 5 #tempo mínimo para declarar a outra máquina como morta auto_failback on #Faz com que quando o servidor primário suba, ele reassuma os serviços
Configurar o arquivo haresources nas duas máquinas
Os testes da solução apresentada foram realizados em ambiente virtualizado,
com uso do VirtualBox criando duas máquinas virtuais cuja configuração básica é:
33
Host 1 Host 2
CPU INTEL CORE 2 DUO T5800 2.0 GHZ INTEL CORE 2 DUO T5800 2.0 GHZ
MEMÓRIA 512 MB DDR 800 MHz 512 MB DDR 800 MHz
DISCO SATA 20 GB SATA 20 GB
Tabela 2: Configuração dos Host Fonte: Autor
Para testar a solução, com ambas as máquinas em funcionamento foi feito um
acesso a um dos compartilhamentos disponibilizados no servidor Samba usando o
endereço IP do cluster (192.168.0.10), e em seguida, foram copiados vários arquivos
para este compartilhamento.
Após o término da cópia de arquivos foi feita uma conexão ssh para o en-
dereço IP do cluster afim de identificar em qual máquina o Samba estava sendo
executado, e foi constatado que a máquina era o Host1.
Foi então parado o serviço Heartbeat no Host1 afim de provocar uma falha e
verificar se o failover ocorreria com sucesso. Após aproximadamente 5 segundos o
serviço Samba estava disponível novamente. Para confirmar se o serviço estava
executando no outro nó, foi feita uma conexão ssh, novamente usando o endereço
IP do cluster, e identificado que o servidor que estava respondendo era o Host2, o
que significa que o failover foi bem sucedido.
Com o intuito de checar se houve a replicação de arquivos para o segundo
nó, foi feito um novo acesso ao servidor Samba através do IP do cluster, e
constatado que os arquivos copiados para o Host1 estavam disponíveis no Host2,
que neste momento respondia pelo cluster.
Em seguida, para testar o failback, foi reativado o serviço Heartbeat no Host1
e, como o cluster estava configurado com a opção auto_failback ativada, novamente
foi feito um failover devolvendo o serviço para o servidor1.
Continuando, para testar o monitoramento do serviço Samba pelo MON,
paramos o Samba no Host1 com o comando: # /etc/init.d/samba stop, simulando
algum problema de inicialização ou interrupção do serviço, constatando que foi
enviado um e-mail para o usuário root notificando a parada e fazendo com que um
alerta (heratbeat.alert) parasse o heartbeat, ocasionando a elevação dos serviços no
Host2 em aproximadamente 5 segundos
34
Para finalizar os testes e verificar se a solução estava tolerante a falhas de
conectividade, foi desconectado o cabo de rede que ligava o Host1 a rede local, por
onde os clientes acessavam os serviços disponibilizados. Após pouco mais de 5
segundos, ocorreu um failover provocado pelo componente MON, para que os
clientes pudessem acessar o serviço através do outro nó.
35
7 CONSIDERAÇÕES FINAIS
O conceito de alta disponibilidade não deve, e nem pode, ser uma novidade
para os administradores de sistemas, principalmente em ambientes computacionais
onde a disponibilidade é uma característica crítica. Esse conceito, que não é
recente, está sendo amplamente disseminado, e ganha importância diretamente
proporcional a influência que os sistemas de computação exercem nas empresas ou
entidades que sustentam. Quando relacionamos alta disponibilidade com os
sistemas Linux, está na sombra desse conceito dois maduros softwares livres que
permitem preencher alguns requisitos de sua implementação: o Heartbeat e o
DRBD. Ambos são parte integrante do conhecido projeto Linux-HA.
Este artigo mostrou como pode ser implementado um ambiente de alta
disponibilidade através de software livre, no exemplo utilizado, abordamos um
servidor de arquivo samba, mas podendo facilmente ser modificado para utilização
em servidores Web, Banco de dados, e outras aplicações de missão crítica.
A arquitetura configurada se mostrou tolerante a falha de hardware,
que fizeram com que o outro nó assumisse os serviços e as solicitações dos clientes
fosse atendida, também simulamos a falha de conectividade, que ocasionaram o
failover e o failback com sucesso.
O sistema permite paralisação para manutenção planejada de cada um de
seus componentes, desde que não seja simultaneamente. Caso haja a necessidade
de manutenção em ambos os nós, ela pode ser feita de maneira alternada,
dessa forma é possível estar parando um servidor sem interromper os serviços
prestado e muito menos ter que fazer horas extras para não estar atrapalhando a
produtividade da empresa.
E por fim, nada melhor que se ter um servidor de alta disponibilidade,
principalmente quando o disco rígido do servidor queima, e não ter mais que escutar
as famosas frases do chefe, como por exemplo: "Quanto tempo o servidor demora a
voltar, 5 minutos?"
36
REFERÊNCIAS
ELLENBERG, L. Quick Start Guide For DRBD 0.7. [on-line]. Disponível na internet via http://wiki.linux-ha.org/DRBD_2fQuickStart07. Arquivo capturado em 2 de abril de 2005. ROBERTSON, A. Heartbeat Home Page. [on-line]. Disponível na internet via http://www.linux-ha.org/heartbeat/. Arquivo capturado em 2 de abril de 2005. BAIOCCO. DOUGLAS. Instalação do DRBD + Heartbeat + Samba. Disponivel na
internet, via :http://www.guiadohardware.net/tutoriais/drbd-heartbeat-samba/ . Acessado em 01 de Dezembro de 2010 FILHO, N. A. P. Linux, Clusters e Alta Disponibilidade. Dissertação (Mestrado)
Universidade de São Paulo, 2002. GARCIA, S. Alta Disponibilidade (High Availability) em sistemas GNU/LINUX. 2003. Http://ha.underlinux.com.br/. NORTON, P.; GRIFFITH, A. Guia completo do Linux. 1. ed. São Paulo: Berkeley
Brasil, 2000. PITANGA, M. Computação em Cluster. 1. ed. Rio de Janeiro: Brasport, 2003. RUSSEL, S. et al. High Availability Without Clustering. 1. ed. março: IBM, 2001. SZTOLTZ, L.; TEIXEIRA, R. S.; RIBEIRO., E. de O. F. Entendendo o Conectiva Linux. 2003. Http://www.conectiva.com.br.
MARCO, L. M. d. Computação de Alto Desempenho: Clusters. Artigo publicado
pela Unicamp, Campinas, 2006. FAUSTINO, E. P. e. a. Construindo supercomputadores com Linux. Goiânia: Monografia apresentada no Cefet, 2006. ABREU, H. O. e. a. Construindo cluser beowulf com software livre . Manaus:
Monografia apresentada na UNAMA, 2004. LEVITA, HELTON MARTINS. Alta Disponibilidade como Alternativa ao Uso de Servidores BDC em Ambientes Samba. Minas Gerais: Monografia apresentada na
Universidade Federal de Lavras. BASSAN, Ramon. Avaliação de Cluster de Alta Disponibilidade Baseado em Software Livre. Monografia defendida e aprovada na FAJ em 2008