Frederico Madeira
                                            LPIC­1, LPIC­2, CCNA
                                             fred@madeira.eng.br
                                              www.madeira.eng.br




Sistemas Distribuídos
Alta Disponibilidade utilizando Heartbeat
+ drbd
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”
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.”
•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
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
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.
Funcionamento

                IP VIRTUAL
 IP’s FIXOS
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.
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
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
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
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
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
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
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
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.
Funcionamento




                Escrita
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
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;
      }
}
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;
      }
}
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
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
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
Testando
➔
    No nó 1, o device /dev/drbd0 deve estar
    como primary e no nó 2 como secondary
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
Frederico Madeira
                                            LPIC­1, LPIC­2, CCNA
                                             fred@madeira.eng.br
                                              www.madeira.eng.br




Sistemas Distribuídos
Alta Disponibilidade utilizando Heartbeat
+ drbd

Alta Disponibilidade em Linux com Heartbeat e Drbd

  • 1.
    Frederico Madeira LPIC­1, LPIC­2, CCNA fred@madeira.eng.br www.madeira.eng.br Sistemas Distribuídos Alta Disponibilidade utilizando Heartbeat + drbd
  • 2.
    Definição – AltaDisponibilidade “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 “Disponibilidaderefere-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 ummeio 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.
  • 7.
    Funcionamento IP VIRTUAL IP’s FIXOS
  • 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.
  • 17.
  • 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 drbdao 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
  • 26.
    Frederico Madeira LPIC­1, LPIC­2, CCNA fred@madeira.eng.br www.madeira.eng.br Sistemas Distribuídos Alta Disponibilidade utilizando Heartbeat + drbd