A solução que utilizei foi a combinação de
ext3 + drbd + heartbeat +
mon.
Sistema de Arquivos Journaled - Ext3: talvez o Reiserfs seja mais
utilizado pois foi um dos primeiros sistemas journaled que apareceram, mas
o ext3 oferece a compatibilidade com o ext2, eliminando a necessidade de
se recriar o filesystem. Alguns testes mostraram uma leve superioridade
do Reiserfs sobre o Ext3, mas tal diferença não chega a ser tão grande
para suplantar a facilidade e segurança na mudança.
Espelhamento de dados - Drbd: o DRBD (Distributed Replicated Block
Device) espelha os dados em blocos, repassando-os através da rede.
Funcionando em pares, ele estabelece em cada nodo uma partição para espelhar,
e seta um dos nodos como primário. Toda alteração neste irá ser refletida no
secundário. O primário tem a partição montada com drbd montada, enquanto o
secundário não.
Sinal de Vida - Heartbeat: onde reside a configuração dos serviços
e do '
ip de serviço'. É o hertbeat o responsável pela reconfiguração
automatizada na ocorrência de problemas. Cada máquina possui seu ip próprio,
válido ou não, mas o conjunto é identificado por um ip de serviço, que é
mantido pela máquina primária no par. Ao acontecer uma pane no sistema, o
heartbeat de um lado libera os serviços e ips, e do outro assume.
Mon: bastante leve, possui diversos monitores e sistemas de alerta
para as mais variadas funções e serviços. Possui envio de mensagens via
página, correio, sms, bem como pode ser configurado para disparar programas
em quaisquer linguagens. Inclusive o heartbeat :-)
Então, num quadro geral, o Mon ficaria monitorando o sistema. Ao detectar que um serviço não está respondendo, que a máquina está com alguma pane, perceber que está isolado da rede (no nodo primário), ou que o nodo secundário não está respondendo, ele dispararia o heartbeat, para derrubar ou para levantar os serviços. Um destes serviços deve ser o Drbd, que embora sempre espelhando não estaria com a partição montada. Montando estas partições, que contem os dados atualizados para o serviço que se oferece, estes serviços estarão em condições de responder com autoridade para os usuários.
Talvez alguém se pergunte: mas porque vários aplicativos e não um sistema
geral? Além de ser muito mais portável e leve, estes aplicativos podem ter
várias outras aplicações. Pode ser que se deseje apenas monitorar um
servidor. Pode ser que se possua um storage externo compartilhado por duas
máquinas e queira-se coordenar o controle de deste.
Oferecemos assim uma visão geral do que está envolvido na Alta
Disponibilidade e um exemplo de um ambiente. Para maiores detalhes de como
implementar este ambiente, disponibilizei na página
http://ha.underlinux.com.br/ um HOWTO com todos
os passos para a instalação e configuração de tal ambiente. Espero que seja
útil.