2. Definição – Alta Disponibilidade
“Um sistema de alta disponibilidade é aquele que utiliza
mecanismos de detecção, recuperação e mascaramento de
falhas, visando manter o funcionamento dos serviços durante o
máximo de tempo possível, inclusive no decurso de
manutenções programadas”
3. Definição – Disponibilidade
“Disponibilidade refere-se a capacidade de um usuário de
determinado sistema acessar, incluir ou modificar os dados
existentes em qualquer intervalo de tempo. Caso, por qualquer
que seja o motivo, um usuário não tenha acesso, é dito então
que ele está indisponível, sendo o tempo total de
indisponibilidade conhecido pelo termo downtime.”
4. •Níveis de Disponibilidade
Geralmente, quanto maior a disponibilidade,
maior a redundância e custo das soluções: tudo
depende do tipo de serviço que se pretende
disponibilizar
5. Definição - Heartbeat
“Heartbeat é um deamon que provê uma infraestrutura de
serviço de cluster (comunicação e associação de membros)
para seus clientes. Ele permite que os clientes tomem
conhecimento sobre a presença (ou desaparecimento) dos
processos em outras máquinas (peers/nodes) e de forma fácil,
trocar mensagens com ele.
- http://www.linux-ha.org/doc/ch-fundamentals.html
6. Funcionamento
“Através de um meio de comunicação, que pode ser Ethernet
ou Serial, um servidor redundante verifica a disponibilidade do
servidor em produção. Essa checagem é feita entre as duas
instâncias do Heartbeat instaladas nos dois servidores. Se o
servidor em produção não responder, ele será considerado
indisponível, e então o Heartbeat do servidor redundante
providencia a configuração e inicialização dos serviços locais,
além de outros recursos, como o endereço IP, partições de
disco, etc.
8. Considerações
➔
Evita qualquer tipo de conflito que possa afetar o
correto funcionamento do sistema.
➔
Não é seu objetivo garantir a sincronia e a
integridade dos dados entre os servidores.
➔
Necessário atuar em conjunto com algum software
que se encarregue de manter os mesmos arquivos
do servidor em produção também no servidor
redundante. Essa será justamente a função do
DRBD.
9. Instalação
➔
Para instalar o heartbeat utilizando o yum, basta
executar o comando abaixo:
yum install heartbeat
Irá instalar os pacotes abaixo:
✔
heartbeat-2.1.3-3.el5.centos
✔
heartbeat-pils-2.1.3-3.el5.centos
✔
heartbeat-stonith-2.1.3-3.el5.centos
10. Configuração
➔
Toda instalação do heartbeat deve conter os
seguintes arquivos de configuração:
➔
/etc/ha.d/ha.cf — Arquivo global de
configuração do cluster
➔
/etc/ha.d/authkeys — Arquivo que contem
chaves para autenticação mútua entre os
nodos da rede
➔
/etc/ha.d/haresources — Arquivo que contem
os recursos que queremos habilitar no cluster
11. Configuração ha.cf
➔
Uma configuração básica para ha.cf é:
logfile /var/log/ha-log
logfacility local0
Keepalive 2 # Intervalo entre os heartbeats
Deadtime 30 # Define quando um nó está offline
Initdead 120 # Declara que o node está offline após
#o startup. Deve ser alto
bcast bond0 # Qual interface os heartbeats serão
# enviados
Udpport 694 # porta UDP utilizada para intra-cluster
# communication
auto_failback on # Retorna serviço para master
node server3 # nome das máquinas do cluster
node server4 # nome das máquinas do cluster
12. Configuração authkeys
➔
Este arquivo possui as chaves de autenticação a
serem utilizadas pelos nodes. Abaixo está um
exemplo deste arquivo:
auth 1
1 sha1 8499ffe31ca6edc6998ec54ac99c009b
➔
Este arquivo deverá ser legível apenas pelo root,
para tanto:
chmod 600 /etc/ha.d/authkeys
13. Configuração haresources
➔
Este arquivo possui a lista dos recursos que serão
movidos de um nó para o outro quando um nó
entra no status de falha ou quando ele se
recupera
➔
Este arquivo deve ser igual para todos os nós do
cluster
➔
Cada linha indica um grupo de recursos que estará
ativo.
Exemplo:
server3 192.168.15.50 httpd
Server4 192.168.15.51 vsftpd
14. Testando
No Nó 1:
echo "Apache ativo no node01" > /var/www/html/index.html
No Nó 2:
echo "Apache ativo no node02" > /var/www/html/index.html
Forçando a Falha do nó 1:
/etc/init.d/heartbeat start ou ainda:
[root@server3 ha.d]# /usr/share/heartbeat/hb_standby
2010/04/18_14:09:14 Going standby [all].
Automaticamente será detectada a falha do nó 1 e o heartbeat ativará
os serviços no nó2.
Recuperando a Falha do nó 1:
[root@server3 ha.d]# /usr/share/heartbeat/hb_takeover
15. Definição -DRBD
O DRBD (Distributed Replicated Block Device) consiste em um
módulo para o kernel Linux que faz o espelhamento dos dados
de um dispositivo de bloco (partições de disco) entre diferentes
servidores, interligados geralmente através de uma rede
Ethernet.
DRBD = RAID 1 via Rede
16. Funcionamento
➔
Cada dispositivo de bloco envolvido na configuração do
DRBD tem um estado, que pode ser primário ou secundário.
➔
Operações de escrita feitas no primário são replicadas para o
secundário
➔
O protocolo padrão de replicação garante a sincronia e a
integridade dos dados replicados.
➔
Operações de leitura, são sempre realizadas localmente.
18. Instalação
➔
Para instalar o drbd utilizando o yum, basta
executar o comando abaixo:
yum install kmod-drbd drbd
Irá instalar o pacote abaixo:
✔
kmod-drbd-8.0.16-5.el5_3.i686.rpm
✔
drbd-8.0.16-5.el5.centos.i386.rpm
19. Configuração
➔
Toda instalação do drbd deve conter o seguinte
arquivo de configuração: /etc/drbd.conf
Usando o exemplo anterior, teríamos:
resource web {
protocol C;
on webserver1 {
device /dev/drbd0;
disk /dev/sdb1;
address 9.8.7.1:7788;
meta-disk internal;
}
on webserver-bkp {
device /dev/drbd0;
disk /dev/sdb1;
address 9.8.7.2:7788;
meta-disk internal;
}
}
20. Configuração
➔
Toda instalação do drbd deve conter o seguinte
arquivo de configuração: /etc/drbd.conf
Usando o exemplo anterior, teríamos:
resource web {
protocol C;
on webserver1 {
device /dev/drbd0;
disk /dev/sdb1;
address 9.8.7.1:7788;
meta-disk internal;
}
on webserver-bkp {
device /dev/drbd0;
disk /dev/sdb1;
address 9.8.7.2:7788;
meta-disk internal;
}
}
21. Configuração
➔
Criando o device a ser compartilhado (deve
ser feito nas duas máquinas):
[root@server3 etc]# drbdadm create-md web
➔
Iniciando o serviço nas duas máquinas:
[root@server3 etc]# /etc/init.d/drbd start
➔
Definindo o nó primário:
[root@server3 etc]# drbdadm -- -o primary web
➔
Criando um sistema de arquivos
[root@server3 etc]# mkfs.ext3 /dev/drbd0
➔
Montando o device
[root@server3 etc]# mount /dev/drbd0 /opt/web/
➔
Checando Status
[root@server3 opt]# cat /proc/drbd
22. Testando
➔
Copie alguns dados para o device do DRBD
➔
Faça um switch over do device no nó 1 para
secundário:
[root@server3 opt]# drbdadm secondary web
➔
Faça um switch over do device no nó 2 para
primário:
[root@server4 ~]# drbdadm primary web
➔
Montando o device
[root@server4 etc]# mount /dev/drbd0 /opt/web/
➔
Verifique o conteúdo do diretório, deve ser
igual ao que existia em server3
[root@server4 opt]# ls /opt/web
23. Integrando o drbd ao heartbeat
➔
Edite o arquivo haresources e modifique a
linha abaixo:
server3 192.168.15.50 httpd
para:
server3 192.168.15.50 drbddisk
Filesystem::/dev/drbd0::/opt/web::ext3 httpd
➔
Reinicie o heartbeat nas duas máquinas
[root@server3 opt]# /etc/init.d/heartbeat restart
24. Testando
➔
No nó 1, o device /dev/drbd0 deve estar
como primary e no nó 2 como secondary
25. Testando
➔
Coloque o nó 1 em standby e observe que o
a pasa /opt/web está vazia. No nó 2 ela será
montada com todo o conteúdo apresentado
no nó 1 antes do standby.
[root@server3 opt]# /usr/share/heartbeat/hb_standby
➔
Faça com que o nó 1 reassuma. Verifique o
status do device /dev/drbd0 e dos dados na
pasta /opt/web
[root@server3 opt]# /usr/share/heartbeat/hb_takeover