Cluster de alta disponibilidade Linux com Raspberry Pi - MakerHero

Cluster de alta disponibilidade Linux com Raspberry Pi Deixe um comentário

Quem já foi a um estabelecimento comercial – supermercado, por exemplo – e presenciou uma interrupção momentânea no fornecimento de energia elétrica, presenciou provavelmente um exemplo de alta disponibilidade. Ou seja, a rápida restauração do serviço – fornecimento de energia elétrica – minimizando nesse caso o tempo no escuro. Esse é o conceito. Para se ter alta disponibilidade é preciso redundância – rede elétrica e gerador de energia – e um mecanismo capaz de detectar falhas no fornecimento da rede elétrica e ligar o gerador automaticamente – chave de transferência automática. Dito isso, a proposta desse post é substituindo a energia elétrica por uma página web, a rede elétrica e o gerador de energia por duas placas Raspberry Pi e o mecanismo de detecção de falhas por softwares – Corosync e Pacemaker – criar um conjunto de dois ou mais computadores, um cluster de alta disponibilidade Linux.

Com isso, minimizamos o tempo fora do ar da página web, pois parafraseando um ditado conhecido “quem tem dois tem um, que tem um não tem nenhum”, que poderia ser o slogan de alta disponibilidade e deveria ser a política de quem trabalha com administração de sistemas e infraestrutura de redes.

Material necessário

Para realizar este projeto, vamos precisar de:

Nos cartões SD é necessário estar gravado o sistema operacional Raspbian, de preferência o Lite. Qualquer dúvida de como isso deve ser feito, você pode consultar este post.

O que são Corosync e Pacemaker?

O Corosync é responsável pela associação, sincronismo e detecção de falhas do membros do cluster de alta disponibilidade Linux – também conhecidos como nodes ou nós, nesse post referidos como nodes. O Pacemaker é um gerenciador de recursos de cluster (cluster resource manager), um sistema que administra recursos – endereço IP e servidor web, por exemplo – disponibilizados pelo cluster.

Cluster de alta disponibilidade

Configurando Corosync e Pacemaker

Para começar precisamos de algum tipo de acesso ao terminal, seja remoto via ssh ou local via teclado. Tudo certo? Então vamos lá!

A convenção seguida é que [TODOS] indica um comando que precisa ser executado em todas as máquinas do cluster de alta disponibilidade Linux. [NODE1] e [NODE2] indica um comando que precisa ser executado individualmente na respectiva máquina.

É uma boa prática atribuir manualmente o endereço IP dos nodes, para isso vamos editar o arquivo. [TODOS]

E incluir o conteúdo abaixo no final (fique atento aos comentários). [TODOS]

Agora vamos instalar os pacotes, nosso cluster será baseado no Corosync e Pacemaker. [TODOS]

É uma boa prática fazer uma cópia do arquivo de configuração antes de editá-lo. [TODOS]

Agora iremos limpar o conteúdo do arquivo. [TODOS]

Editá-lo. [TODOS]

E incluir o conteúdo abaixo (fique atento aos comentários!). [TODOS]

Para garantir a autenticidade e a privacidade das mensagens trocadas entre os nodes do cluster, iremos gerar uma chave privada. [NODE1]

Se o resultado for algo parecido com.

Tudo certo, podemos seguir.

Precisamos enviar o arquivo contendo a chave para o outro node do cluster. [NODE1]

Atenção! Não esqueça de substituir o nome de usuário (pi) e o endereço IP (192.168.0.2), caso necessário.

Vamos mover o arquivo para o diretório correto. [NODE2]

Corrigir as permissões. [NODE2]

E reiniciar os serviços. [TODOS]

Verificando a instalação do Corosync

Primeiro vamos verificar se a comunicação do cluster está funcionando. [TODOS]

Podemos ver que tudo parece normal, o nosso endereço IP listado como o id (não o endereço 127.0.0.1) e sem falhas para o status.

Em seguida, verificar as APIs de associação e o quórum. [NODE1] ou [NODE2]

Se o resultado for algo parecido com.

Tudo certo.

Verificando a instalação do Pacemaker

Agora que confirmamos que o Corosync está funcionando, podemos verificar o restante da pilha. [NODE1] ou [NODE2]

O resultado deve ser algo como.

Antes de fazermos qualquer alteração, é uma boa ideia verificar a validade da configuração do cluster de alta disponibilidade Linux. [NODE1] ou [NODE2]

Como você pode ver, a ferramenta encontrou alguns erros.

A fim de garantir a segurança de seus dados, fencing (STONITH) é habilitado por padrão.
No entanto, ele também sabe quando nenhuma configuração STONITH foi fornecida e relata isso como um problema.
Desativaremos esse recurso por enquanto. [NODE1] ou [NODE2]

Adicionando recurso – endereço IP

Independentemente de onde os serviços do cluster estão sendo executados, os usuários precisam de um endereço IP consistente para contatá-los. Aqui, vou escolher 192.168.0.10 como o endereço flutuante, dar-lhe o nome de FloatIP e dizer ao cluster para verificar se ele está em execução a cada 10 segundos.
Atenção! Não se esqueça de substituir o endereço IP (192.168.0.10) de acordo com sua rede. O endereço escolhido não deve estar em uso na rede. [NODE1] ou [NODE2]

Agora, vamos verificar se o recurso IP foi adicionado. [NODE1] ou [NODE2]

Como você pode ver, o endereço IP (FloatIP) foi iniciado no node1.

Para verificar, no node onde o endereço IP foi iniciado, nesse exemplo node1.

Veremos então dois endereços IP: o endereço IP do node e o endereço IP flutuante.

Adicionando recurso – servidor web

Agora que temos um cluster básico mas funcional, estamos prontos para adicionar um serviço real. Mais especificamente um servidor web, pois além de ser usado em muitos clusters é relativamente simples de configurar.

Nosso servidor web será baseado no Apache, vamos a instalação. [TODOS]

Os serviços devem ser gerenciados pelo cluster nunca pelo sistema operacional. Por isso, iremos parar e desativar o serviço do Apache na inicialização do sistema. [TODOS]

Precisamos criar uma página para o Apache servir. [TODOS]

Neste ponto, o Apache está pronto para funcionar e tudo o que precisa ser feito é adicioná-lo ao cluster de alta disponibilidade Linux . Dando-lhe o nome de WebSite e dizendo ao cluster para verificar se ele está em execução a cada 60 segundos. [NODE1] ou [NODE2]

Após alguns segundos, devemos ver o cluster iniciar o Apache. [NODE1] ou [NODE2]

O resultado deve ser algo como.

Espere um momento, o servidor web (WebSite) não está sendo executado no mesmo node que o endereço IP (FloatIP)!

Por otimização, o Pacemaker geralmente distribuirá os recursos entre os nodes do cluster. No entanto, podemos dizer ao cluster que dois recursos estão relacionados e precisam ser executados no mesmo node. Vamos informar o cluster que o WebSite deve executar apenas no node em que o FloatIP está ativo. [NODE1] ou [NODE2]

E verificar se a alteração ocorreu com sucesso. [NODE1] ou [NODE2]

O resultado deve ser algo como.

Para ter certeza de que nossa página responda independentemente da configuração de endereço do Apache, precisamos fazer com que o FloatIP seja iniciado antes do WebSite. [NODE1] ou [NODE2]

Para verificar se a alteração ocorreu com sucesso. [NODE1] ou [NODE2]

Aqui podemos ver toda configuração que fizemos até agora.

Testando o cluster de alta disponibilidade linux

Em primeiro lugar, localize o node onde o endereço IP flutuante (FloatIP) e a página web (WebSite) estão sendo executados. [NODE1] ou [NODE2]

Nesse exemplo, node1.

Agora abra um navegador e digite o endereço IP flutuante, no meu caso 192.168.0.10.

Teste do Cluster de alta disponibilidade Linux node 1

Confirmando o cluster (crm status), no momento a página web está sendo servida pelo node1.

Legal, agora vamos simular uma falha no node1 e ver o que acontece. [NODE1]

Localize novamente o node onde o endereço IP flutuante (FloatIP) e a página web (WebSite) estão sendo executados. [NODE2]

Agora estão no node2, inclusive podemos ver que o node1 está offline (na visão do cluster).

Abra um navegador e digite o endereço IP flutuante, no meu caso 192.168.0.10.

Teste do Cluster de alta disponibilidade Linux node 1

Mesmo com o node1 offline a página web continua disponível, mas agora servida pelo node2.

Não se esqueça de iniciar o cluster novamente após os testes. [NODE1]

Esse é um assunto interessante e extenso, mas com certeza é um bom começo.
Gostou de criar um cluster de alta disponibilidade linux com Raspberry Pi? Ajude-nos a melhorar o blog comentando abaixo sobre este tutorial.

Até a próxima!!

Faça seu comentário

Acesse sua conta e participe