HA Talk

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Rik Van Riel,

Gostaria de obter autorização para publicar essa tradução que fiz para o HA Talk, no site Neurix (www.neurix.com.br).

Aguardo uma resposta.

[]s

-- 
"Aprender é difícil porque nossa sociedade nos ensina a respeito do bem e do mal, o certo e o errado. Estamos programados para crer no bem e no mal. Se possuimos as coisas que desejamos somos felizes. Se não as possuímos, culpamos as nossas vidas." Sonoda 
Title: /home/alex/traducao_ha_marcelo.html

High Availability talk by Marcelo Tosatti

IRC talk on high availability issues



O antigo modelo de alta disponibilidade (HA - High Avaliability) é "fault tolerance", e geralmente baseado em hardware, além de ser caro e proprietário. O objetivo do antigo modelo é deixar o sistema de hardware rodando. E como sabemos, basicamente, um único computador é um pedaço não confiável de merda (relativamente falando). A Alta Disponibilidade é a coleção de métodos para fazer o trabalho do computador se tornar mais confiável. Você pode fazer isso com uma melhor estrutura de hardware ou por uma melhor estrutura de software, geralmente uma combinação de ambos. O modelo de alta disponibilidade do Linux é baseado em software.


Agora deixe-me explicar alguns conceitos básicos de HA (High Avaliability - Alta Disponibilidade). Prinmeiro, é muito importante que nós não tenhamos somente um único componente de hardware em um sistema de Alta Disponibilidade. Por exemplo, você pode ter duas placas de redes conectadas a rede, no caso de uma falhar, o sistema tenta usar a outra placa. Um componente de hardware que não pode falhar, porque o sistema inteiro depende dele, é chamado de "Single Point of Failure" (Ponto Único de Falha). SPOF, abreviando. :)


Outro importante conceito que precisa ser conhecido antes de continuarmos é "failover": Failover é o processo que uma maquina derruba o trabalho de outro node, "máquina" nesse contexto pode ser qualquer coisa, se um disco falhar, o outro disco irá derruba-lo, se uma máquina de um cluster falhar, a outra máquina derruba a tarefa. Mas para ter failover, você necessita ter um bom suporte de software porque a maioria do tempo você irá usar os componentes padrões do computador.


Bem, essa é toda teoria necessária para explicar as próximas partes. Assim deixe me fazer uma rápida condensação dessa introdução:


1. Os computadores normais não são confiáveis para a maioria das pessoas (como: lojas da Internet), assim precisam de truques, um metódo, para deixar o sistema mais confiavel.


2. Alta Disponibilidade é a coleção desses métodos.


3. Você pode conseguir alta disponibilidade usando hardware especial (muito caro) ou usando uma combinação de hardware normal e software.


4. Se um ponto do sistema para e faz o sistema inteiro parar, esse ponto é um single point of failure - SPOF.


5. Para ter Alta Disponibilidade, você não pode ter SPOFs, se uma parte do sistema parar, a outra parte do sistema deve derruba-la. Isso é denominado "failover"


Agora, penso que poderia explicar um pouco sobre como a alta disponibilidade trabalha .. o lado técnico


Deixe me falar sobre os componentes básicos da Alta Disponibilidade, ou no último de algum deles. Um único disco rodando o sistema de arquivos é claramente um SPOF, se um disco falhar, toda parte do sistema que depende dos dados contidos nele irá parar. Para não deixar o disco ser um SPOF do sistema, o RAID pode ser usado, RAID-1, que é uma característica do kernel do Linux, permite o espelhamento de todo dado do dispositivo RAID para um número de discos, assim, quando um dado é gravado para o dispositivo RAID, ele é replicado entre todos discos que fazem parte do array RAID1. Desse modo, se um disco falhar, o outro (ou outros) discos do array RAID1 irá estar hábil para continuar o trabalho porque o sistema tem uma cópia dos dados em cada disco e basta você usar a outra copia dos dados esse é outro exemplo de "failover", quando um componente falhar, outro componente é usado para preencher essa função e o administrador de sistemas pode preencher ( ou reformatar/reiniciar/...) o componente com problemas.


Essa visão é realmente simples quando você a olha sem maiores detalhes, mas há um grande problema, quando eu preciso fazer o failover? Em algumas situações, você poderia ter duas máquinas trabalhando ao mesmo tempo e com corrupção de todos dados, quando você não está com atenção, pense por exemplo que são o servidor de arquivos dos mesmos dados

em um certo tempo, uma das máquinas está trabalhando e a outra está em standby. Quando a máquina principal falhar, a máquina em standby derruba, mas o que acontece se a máquina em standby somente pensa que a máquina principal morreu e ambas máquinas fazem a mesma coisa com os dados? Qual cópia dos dados está correta? qual copia dos dados está com problemas? Ou de forma mais grave, o que se ambas copias dos dados estão com problemas? Para isso, existe um tipo especial de programa, chamado "heartbeating", que checa qual parte do sistema está ativo. Para o Linux, um desses programas é chamado "heartbeat", marcelo e lclaudio tem ajudado a escrever esse programa.


O "heartbeat" é um pedaço de software que monitora a disponibilidade de nodes. Ele "pinga" o node que ele deseja monitorar, e, no caso desse nodo não responder o "ping", ele considera que ele está morto. Quando um node é considerado estar morto quando pode failover os servicos que ele estava rodando


Os serviços que nós derrubamos são previamente configurados em ambos sistemas. Atualmente o heartbeat trabalha somente com 2 nodes.


Ele está sendo usado em ambientes de produção em várias situações.


Há um pequeno problema, de qualquer forma. O que acontecerá se a tia da limpeza retirar o cabo de rede entre os dois nodes do cluster por acidente? E ambos nodes "pensar' que  eles são os unicos ativos? E ambos nodes iniciar uma complicação com o dado, infelizmente não há uma maneira de você possa previnir isso 100%, mas você pode aumentar a confiabilidade simplesmente tendo multiplos meios de comunicação, digamos, duas placas de rede e um cablo serial. Isso é confiável até que a falha de um componente ainda permita uma boa comunicação entre os nodes. Assim eles podem confiavelmente contar se o outro node está ativo ou não.


Essa foi uma introdução a Alta Disponibilidade. Agora nós iremos dar alguns exemplos de software para Alta Disponibilidade no Linux e mostrar a você como eles são usados.


Agora deixe-me falar sobre o software disponível pra Linux. Note que nós iremos falar sobre o software opensource para Linux.


Como eu disse acima, o programa heartbeat" provê o monitoramento e um básico failover dos serviços para dois nodes somente.


Como um exemplo prático - o servidor web da Conectiva (www.conectiva.com.br) tem um node que fica em standby rodando heartbeat, no caso de nossa primeiro servidor web falhar, o node standby irá detectar e iniciar o apache daemon fazendo o serviço se tornar disponível novamente. Qualquer serviço pode ser usado, em teoria, com o heartbeat. Assim se uma máquina parar, qualquer pessoa pode ainda entrar em nosso website ;)


Ele somente depende de scripts de incialização para iniciar o serviço. Assim qualquer serviço que tem um script de inicialização pode ser usado com o heartbeat. Há um endereço IP virtual usado pelo serviço, que é o "virtaul ServerIP", assim, no caso de nosso servidor web, o endereço IP real do primeiro node não é usado pelo daemon do apache, mas o endereço IP virtual que irá ser usado pelo node standby no caso de failover acontecer.


O Hearbeat, de qualquer forma, é limitado a dois nodes. Isso é um grande problema para uma muitos de sistemas grandes.


A SGI portou seu sistema de alta disponibilidade FailSave para o Linux recentemente (http://oss.sgi.com/projects/failsafe). O FailSafe é um gerenciador completo de cluster que suporte até 16 nodes. Está certo que ele não está pronto ainda para ambientes de produção, mas isso está sendo trabalhado por pessoas do projeto Linux HA :)


SGI FailSafe é GPL.


Outro tipo de cluster é LVS - o projeto Linux Virtual Server. O LVS usa uma maneira muito para clusterizar. Você tem 1 (talvez duas) máquinas que requisitam (www/http) requisições,

mas  estas máquinas não fazem nada, exceto mandam as requisições para um grupo inteiro de máquina que fazem o trabalho realassim hamados "nodes que trabalham" (working nodes). Se uma das máquinas (ou até mais) do trabalho dos nodes falhar, as outras irão fazer o trabalho e todos os roteadores (máquinas colocadas na frente) fazem isso:


1. guardam qual dos working nodes estão disponíveis.


2. dá as requisições http para os working nodes


O kernel precisa de um patch TCP/IP especial  e uma série de utilitários em usermode para esse trabalho.


A ferramenta "piranha" da RedHat é uma ferramenta de configuração para LVS, que as pessoas podem usar para ajustar os cluster LVS de uma maneira mais fácil. Na Conectiva, nós também estamos trabalhando em uma ferramenta chamada - o projeto que o marcelo e o Olive estão trabalhando - "drbd" (the distributed redundant block device), isso é quase o mesmo que RAID1, só que através da rede. Voltando ao RAID1 (mirroring), o RAID1 pode usar dois (ou mais) discos para guardar seus dados com uma cópia dos dados em cada disco. O drdb extende essa idéia para usar discos em diferentes máquinas através da rede, assim se um disco (em uma máquina) falhar, a outra máquina ainda tem os dados, e se uma máquina falhar completamente, os dados está em outra máquina, permitindo o sistema como um todo continuar rodando.


Se você usar isso junto com ext3 ou reiserfs, a máquina que ainda estiver rodando pode rapidamente derrubar o sistema de arquivos que foi copiado para seu próprio disco, e seus programas podem continuar rodando. (com ext2, você precisa fazer um fsck primeiro, que pode levar um longo tempo)


Isso pode ser usado em servidores de arquivos, banco de dados, servidores web, qualquer coisa onde você necessita os últimos dados para trabalhar.



Eessa é o final de nossa parte de leitura, se você tiver qualquer pergunta, você pode perguntar e nós iremos tentar lhe dar uma boa resposta ;)


Veja também http://www.linux-ha.org

Attachment: pgp00095.pgp
Description: PGP signature


[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux