Este documento tem como objetivo explicar o funcionamento do sistema de Alta Disponibilidade (High Availability ou HA) dentro da solução Evolux.
Definição
Um sistema em alta disponibilidade é aquele que utiliza mecanismos de detecção e recuperação de falhas, de forma a manter a solução operacional pelo maior tempo possível.
...
Item | Descrição |
---|---|
Período do tempo | Medida do tempo que se deseja calcular a disponibilidade, geralmente mês ou ano, convertidos em horas |
Downtime | Período que a solução está indisponível, geralmente em horas |
x100 | Para se obter o valor em unidade de porcentagem |
Exemplo
Se a disponibilidade da solução é calculada pelo período de 1 ano ou seja, 8.760 horas, e considerando 50 horas de indisponibilidade, faremos o seguinte cálculo:
...
O SLA padrão aplicado nos contratos da Evolux é de 99,5% ao ano, excetuando manutenções programadas, problemas na infraestrutura do cliente, ou motivos de força maior, como incêndios, enchentes, furto de equipamentos, dentre outros.
Redundância
A redundância de estrutura é um dos requisitos para se conseguir alta disponibilidade. Para isso é necessário o uso de ferramentas e sistemas que possam realizar a detecção e recuperação das falhas.
A Evolux usa o DBRD e o Heartbeat.
DRBD (Distributed Replicated Block Device)
É um módulo do Linux que faz a replicação dos dados (partições de disco) entre servidores interligados através de conexão ethernet.
...
O DRBD garante o sincronismo e a integridade dos dados replicados.
Referência:
https://docs.linbit.com/
https://en.wikipedia.org/wiki/Distributed_Replicated_Block_Device
Heartbeat
O Heartbeat é considerado a peça chave do ambiente de alta disponibilidade pois tem a função de monitorar os servidores em produção e, em caso de falhas, realizar automaticamente os procedimentos para preservar o uptime da solução.
...
O Heartbeat mantém o monitoramento entre os servidores e em caso de indisponibilidade do primário, o secundário monta as partições e inicia os serviços do Evolux.
Cenários Possíveis
Servidor primário sem conectividade na rede interna
Usuários na rede interna e externa (se houverem) ficarão sem acesso ao Evolux, mas o servidor secundário não assumirá o controle.
Como a conexão ponto a ponto entre os servidores continua ativa, o servidor secundário continuará recebendo as respostas Heartbeat do servidor primário.
Servidor secundário sem conectividade na rede interna
Usuários na rede interna e externa (se houverem) continuarão com acesso ao Evolux e o servidor secundário não assumirá o controle.
Como a conexão ponto a ponto entre os servidores continua ativa, o servidor secundário continuará recebendo as respostas Heartbeat do servidor primário.
Solução sem acesso a Internet
Usuários na rede interna continuarão com acesso ao Evolux e usuários na rede externa (se houverem) ficarão sem acesso, mas o servidor secundário não assumirá o controle.
Como a conexão ponto a ponto entre os servidores continua ativa, o servidor secundário continuará recebendo as respostas Heartbeat do servidor primário.
Servidor primário sem energia elétrica
Usuários na rede interna e externa (se houverem) ficarão sem acesso momentaneamente, o servidor secundário não receberá as respostas Heartbeat e interpretará que o servidor primário esta indisponível. Assumirá primeiramente o IP, depois montará as partições com os diretórios do Evolux e em seguida iniciará todos os serviços do Evolux. Em aproximadamente 5 minutos a aplicação estará novamente disponível e todos os usuários terão novamente acesso a solução.
Os dois servidores (primário e secundário) sem energia elétrica
Todos os usuários ficarão sem acesso ao Evolux. Quando a energia retornar e os dois servidores iniciarem, o servidor primário assumirá primeiramente o IP, depois montará as partições com os diretórios do Evolux e em seguida iniciará os serviços do Evolux. Em aproximadamente 5 minutos a aplicação estará novamente disponível e todos os usuários terão novamente acesso a solução.
Retirada do cabo ponto a ponto entre os servidores primário e secundário
O servidor secundário não receberá as respostas do primário então interpretará que ele está indisponível. O servidor secundário assumirá o IP, depois montará as partições com os diretórios do Evolux e em seguida iniciará todos os serviços do Evolux. No entanto, o servidor primário estará disponível para acesso aos usuários e ambos acreditarão que são primárias, comportamento conhecido como split brain.
...