alta disponibilidade em linux com heartbeat e drbd

26
Sistemas Distribuídos Alta Disponibilidade utilizando Heartbeat + drbd Frederico Madeira LPIC-1, LPIC-2, CCNA [email protected] www.madeira.eng.br

Upload: frederico-madeira

Post on 23-Jun-2015

14.254 views

Category:

Technology


1 download

DESCRIPTION

Alta Disponibilidade em Linux com Heartbeat e Drbd

TRANSCRIPT

Page 1: Alta Disponibilidade em Linux com Heartbeat e Drbd

Sistemas DistribuídosAlta Disponibilidade utilizando Heartbeat + drbd

Frederico MadeiraLPIC­1, LPIC­2, [email protected]

Page 2: Alta Disponibilidade em Linux com Heartbeat e Drbd

“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”

Definição – Alta Disponibilidade

Page 3: Alta Disponibilidade em Linux com Heartbeat e Drbd

“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.”

Definição – Disponibilidade

Page 4: Alta Disponibilidade em Linux com Heartbeat e Drbd

•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

Page 5: Alta Disponibilidade em Linux com Heartbeat e Drbd

“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

Definição - Heartbeat

Page 6: Alta Disponibilidade em Linux com Heartbeat e Drbd

“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.

Funcionamento

Page 7: Alta Disponibilidade em Linux com Heartbeat e Drbd

Funcionamento

IP VIRTUALIP’s FIXOS

Page 8: Alta Disponibilidade em Linux com Heartbeat e Drbd

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.

Page 9: Alta Disponibilidade em Linux com Heartbeat e Drbd

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

Page 10: Alta Disponibilidade em Linux com Heartbeat e Drbd

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

Page 11: Alta Disponibilidade em Linux com Heartbeat e Drbd

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

Page 12: Alta Disponibilidade em Linux com Heartbeat e Drbd

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

Page 13: Alta Disponibilidade em Linux com Heartbeat e Drbd

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

Page 14: Alta Disponibilidade em Linux com Heartbeat e Drbd

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

Testando

Page 15: Alta Disponibilidade em Linux com Heartbeat e 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

Definição -DRBD

Page 16: Alta Disponibilidade em Linux com Heartbeat e Drbd

➔ 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.

Funcionamento

Page 17: Alta Disponibilidade em Linux com Heartbeat e Drbd

Funcionamento

Escrita

Page 18: Alta Disponibilidade em Linux com Heartbeat e Drbd

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

Page 19: Alta Disponibilidade em Linux com Heartbeat e Drbd

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; }

}

Page 20: Alta Disponibilidade em Linux com Heartbeat e Drbd

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; }

}

Page 21: Alta Disponibilidade em Linux com Heartbeat e Drbd

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

Page 22: Alta Disponibilidade em Linux com Heartbeat e Drbd

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

Page 23: Alta Disponibilidade em Linux com Heartbeat e Drbd

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

Page 24: Alta Disponibilidade em Linux com Heartbeat e Drbd

Testando

➔ No nó 1, o device /dev/drbd0 deve estar como primary e no nó 2 como secondary

Page 25: Alta Disponibilidade em Linux com Heartbeat e Drbd

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

Page 26: Alta Disponibilidade em Linux com Heartbeat e Drbd

Sistemas DistribuídosAlta Disponibilidade utilizando Heartbeat + drbd

Frederico MadeiraLPIC­1, LPIC­2, [email protected]