Lucas de Stefano Shida - R.A: 723517-8
Lilian Medeiros - R.A: 666993-0
Rafael Torato Rocha - 612395-3
Renata Ferro – R.A: 775438-8
Ronaldo A. Barbosa - R.A: 772272-9
Clusters de Alta Disponibilidade
CAMPINAS – 2011
RESUMO
Viemos com esse trabalho passar uma noção melhor do que é um
cluster (principalmente clusters de alta disponibilidade), como é seu
funcionamento, implementação utilizando o HeartBeat.
Palavras-Chaves: Cluster, Alta Disponibilidade, HeartBeat
1. INTRODUÇÃO
Devido a grande necessidade de se manter os serviços sempre ativos,
sem falhas e no ar durante a maior parte do tempo é necessário a
implementação de um serviço que garante essa possibilidade, então, surgemse os Clusters de Alta Disponibilidade, que é o nosso foco nesse trabalho. Este
trabalho baseia-se no artigo Cluster de Alta Disponibilidade [1] e quando
houver outras citações as mesmas estarão devidamente referenciadas.
2. O QUE SÃO CLUSTERS?
Podemos definir cluster como um sistema que compreende dois ou mais
computadores ou sistemas, denominados nós, que trabalham em conjunto para
realizar as tarefas, dando assim, a impressão de ser um só equipamento.
2.1 Para que se utilizar um Cluster?
Os clusters são utilizados quando se há a necessidade de processar
dados críticos e/ou a disponibilização de serviços/recursos durante a maior
parte do tempo.
3. TIPOS DE CLUSTER
Existem
basicamente
quatro
tipos
de
cluster,
que
são:
Alta
disponibilidade (High Availability ou HA and Failover), Balanceamento de Carga
(Load Balance), Combinação Alta disponibilidade e Balanceamento de carga
(HA & Load Balance) e Processamento distribuído ou Processamento Paralelo
(HPC).
3.1 Clusters de Alta Disponibilidade
Os clusters de alta disponibilidade são construídos para prover grande
disponibilidade de serviços e recursos de maneira interrupta. Se um nó do
cluster falhar, os serviços, dados, aplicações, etc., estarão disponíveis no outro
nó.
3.2 Balanceamentos de Carga
Os clusters de balanceamento de carga distribuem o tráfego ou
requisições
de
recursos
entre
os
nós
que
executam
os
mesmos
programas/serviços e caso haja falha de um nó, é feita a redistribuição de
carga.
3.3 Combinação Alta disponibilidade e Balanceamento de Carga
Combina os dois tipos de clusters apresentados acima, aumentando a
disponibilidade e escalabilidade dos serviços e recursos.
3.4 Processamento distribuído ou Processamento Paralelo
Utilizados em computação cientifica ou analise financeira, onde tarefas
típicas exigem um alto poder de processamento, uma grande tarefa pode ser
dividida em pequenas tarefas que são distribuídas entre os nós, aumentando
assim a disponibilidade e o desempenho, um exemplo é o projeto Beowulf da
NASA.
4. CLUSTERS DE ALTA DISPONIBILIDADE
Conforme vimos anteriormente os clusters de alta disponibilidade são
construídos para prover grande disponibilidade de serviços e recursos de
maneira interrupta. A Alta Disponibilidade se da a diversos fatores que
garantem tal fato, onde é empregada a seguinte fórmula:
Disponibilidade = Tempo médio entre falhas / (Tempo médio entre
falhas + tempo médio para realização do reparo)
4.1 Funcionamento e Implementação
Como funciona um cluster? Como é feito o failover (a virada dos
recursos/tarefa)? Para isso utilizamos no Linux um sistema chamado Heartbeat
que é o responsável pela parada e o inicio de serviços nos nós do cluster, e o
DRBD, que fica responsável em manter os HDs dos servidores sincronizados,
como uma espécie de RAID 1 via rede. Quando o servidor 1 para, o hd do
servidor 2 assume o papel de hd primário e quando o servidor 1 volta, o mesmo
volta a ser o hd secundário, lembrando que, toda essa mudança de serviços
tem que ser transparente para o usuário.
Na questão de hardware. Todos servidores devem ter no mínimo 2
placas de rede, uma que estará ligada através de um switch para acesso a
rede/internet e outra que estará ligada diretamente ao outro nó do cluster
através de um cabo de rede crossover, que é essa a interface que será
monitorada pelo HeartBeat. Logo a frente, explicaremos como é feita a
configuração do HeartBeat em um servidor Linux.
Agora vamos lá, o que levaria um nó do cluster a parar? Há vários
motivos como, por exemplo, os descritos na tabela abaixo.
Tipo de Falha
Rede Elétrica
Falha Possível
Queda Total ou Parcial
da Energia
Rede de Dados
Inoperância de ativos de
rede (placas de rede,
switch)
Hardware
Problemas na fonte de
alimentação
Falha no disco
Hardware
Solução
Implementação de um
UPS (Uninterruptible
Power Supply) e
geradores de energia
elétrica
Redundância de placas
de redes com uso de
bonding e uso de
switches com stacking e
suporte a 802.3ad
Redundância de fonte
(Hotswap)
Utilziar RAID (nível de
Software
Falha de sistemas/apps
Software
Corrupção no Sistema
Operacional
Falha completa no
servidor (memória,
processador, discos,
SO, etc)
Desastres Naturais/
Incidentes criminosos
Hardware/Software
DataCenter
software ou hardware)
Redundância de
sistemas/app
Redundância de
servidores
Redundância de
servidores
Redundância de
DataCenters
5. HEARTBEAT
Como dito anteriormente, o HeartBeat é uma daemon que monitora o
status dos servidores através da emissão de um “pulso” que avisa ao nó
secundário que o primário está ativo.
Mostraremos a seguir (em texto e na Figura 1), como se deve configurar
os 2 servidores (ambos utilizando Linux, no caso do exemplo, CentOS 5.5) e
terem a MESMA configuração. [2]
•
Primeiramente, devemos instalar o pacote:
$yum
install
heartbeat
(Yum
=
gerenciador
de
instalação/atualização/remoção de pacotes em distribuições
baseadas em RedHat) pois estamos usando o CentOS).
•
Configuração da Rede no servidor master:
Interface
de
LAN
(eth0)
–
Editar
o
arquivo
/etc/sysconfig/network-scripts/ifcfg-eth0, e deixar conforme o
abaixo (logico que, as regras de IP atribuem-se somente o
exemplo, devendo-se utilizar a configuração de ips de acordo com
a sua rede).
$ vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=static
IPADDR=192.168.10.100
NETMASK=255.255.255.0
ONBOOT=yes
Interface
do
Heartbeat
(eth1)
–
/etc/sysconfig/networkt-scripts/ifcfg-eth1,
Editar
e
o
deixar
arquivo
conforme
abaixo:
$ vi /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
BOOTPROTO=static
IPADDR=10.0.0.1
NETMASK=255.0.0.0
ONBOOT=yes
•
Configuração de rede no servidor slave.
Interface
de
LAN
(eth0)
–
Editar
o
arquivo
/etc/sysconfig/network-scripts/ifcfg-eth0, e deixar conforme o
abaixo (logico que, as regras de IP atribuem-se somente o
exemplo, devendo-se utilizar a configuração de ips de acordo com
a sua rede).
$ vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=static
IPADDR=192.168.10.101
NETMASK=255.255.255.0
ONBOOT=yes
Interface
do
Heartbeat
(eth1)
–
/etc/sysconfig/networkt-scripts/ifcfg-eth1,
Editar
e
deixar
o
arquivo
conforme
abaixo:
•
$ vi /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
BOOTPROTO=static
IPADDR=10.0.0.2
NETMASK=255.0.0.0
ONBOOT=yes
Depois de ter instalado o HeartBeat, será criado o diretório /etc/ha.d/,
que é o diretório de configuração do heartbeat. Dentro desse diretório há o
arquivo ha.cf (caso não tenha, deve ser criado), pois é o arquivo onde são
definidas todas as configurações do heartbeat
Exemplo de um arquivo de configuração ha.cf
# Arquivo de log de Debug:
debugfile /var/log/ha-debug
# Arquivo de Log
logfile /var/log/ha-log
# Usa o próprio heartbeat como daemon de log
logfacility daemon
# Frequência em segundo(s) de batimentos cardíacos
keepalive 1
#Tempo mínimo para declarar o outro servidor como morto
deadtime 10
# Quanto tempo o heartbeat deve
warntime 5
esperar por bits atrasados
# Tempo máximo para declarar o outro servidor como morto
initdead 120
# Porta de sincronia do heartbeat
udpport 694
# Endereço de broadcast da rede - usada para setar o endereço primário
do servidor
bcast eth2
# Determina se o serviço volta para o master caso ele volte a responder.
auto_failback on
# Nós do cluster devem ser escritos conforme a saída do comando
#uname –n
node webserver1
node webserver2
# Endereço ip em comum para testes de conectividade
ping (ex. router do servidor web)
# Plugin que auxilia no monitoramento de conexões entre a rede
respawn hacluster /usr/lib/heartbeat/ipfail
# Se usa o syslog ou não
use_logd off
# Compactação de dados
compression bz2
# Compactação de dados
compression_threshold 2
Depois de configurar o arquivo, ha.cf deve-se criar um arquivo
(haresources) onde conterá o hostname do servidor master, seu ip e o serviço
monitorado pelo mesmo, conforme exemplificado abaixo (o script para
monitoramento do apache fica em /etc/ha.d/resource.d/):
webserver1
10.0.0.1 apache
Ao concluir a configuração, deve-se criar o arquivo de autenticação dos
dois nós (edite o arquivo /etc/ha.d/authkeys)
auth 1
1 md5 <coloque a senha aqui>
Pronto, seu HeartBeat está configurado.
6. CONSIDERAÇÕES FINAIS
Esperamos que com esse artigo, possamos esclarecer as duvidas
referentes a clusters, de como funcionava, de como tudo era migrado para o
outro nó, que aplicativo usar para isso,etc.
7. REFERÊNCIAS BIBLIOGRÁFICAS
[1] REIS, Adrieli Cristiane de Freitas et al. CLUSTER DE ALTA
DISPONIBILIDADE .
Guaratinguetá.
Disponível
em:
<http://www.4learn.pro.br/guarino/sd/HA.pdf> Acesso em: 15 Agos. De 2011.
[2] PEREIRA, Michel. HEARTBEAT – WEB SERVER COM ALTA
DISPONIBILDIADE
(HA).
Goiânia:
2009.
Disponivel
<http://www.vivaolinux.com.br/dica/HeartBeat-Web-server-com-AltaDisponibilidade-%28HA%29> Acesso em: 15 Agos. De 2011.
em:
Download

Clusters De Alta Disponibilidade