Os artigos dessa edição estão disponíveis somente através do formato HTML.
Clique aqui para ler todos os artigos desta edição
Replicação e alta disponibilidade no PostgreSQL
Disponibilidade é a característica de um sistema computacional que permite garantir a continuidade de serviços prestados por um determinado agente. O exemplo mais simples seria imaginar o uso de um computador “reserva”; caso um queime, terei o outro disponível para continuar uma determinada operação.
A alta disponibilidade surgiu para garantir a operacionalidade de soluções de missão crítica, ou seja, operações computacionais que não podem ser interrompidas. Antes de analisarmos com calma o que seria alta disponibilidade, veremos rapidamente alguns outros conceitos sobre disponibilidade.
Calculando a disponibilidade de um sistema
Disponibilidade é a probabilidade de um sistema estar disponível quando necessário. Disponibilidade pode ser determinada pela relação:
Disponibilidade = ((MTTF)/(MTTF + MTTR)).100%
Onde:
· MTTF (Mean Time to Failure) é o tempo médio até a ocorrência de falha.
· MTTR (Mean Time to Repair) é o tempo médio de reparo.
Por exemplo, para:
MTTF = 300 horas
MTTR = 9 horas
Disponibilidade = (300/(300+9)).100%
Disponibilidade = (300/309).100%
Disponibilidade = 0,97.100%
Disponibilidade = 97%
Em outras palavras, este sistema funciona em torno de 12 dias, acontece uma falha e para retorná-lo, levaríamos 9 horas.
Existem três níveis de disponibilidade: básica, alta e contínua.
Disponibilidade básica
Este nível de disponibilidade é encontrado em um computador comum que não possui nenhum mecanismo anti-falhas. Neste nível, estima-se que uma máquina comum poderá ter uma disponibilidade de 99,9% (se estiver em condições idéias para o funcionamento: aterramento, estabilizadores e todo o cuidado básico). Para ser considerado de disponibilidade básica, o sistema poderia ficar indisponível por um período mínimo de 9 horas e máximo de quatro dias, sendo que estes valores não consideram a possibilidade de paradas planejadas.
Para garantir o nível de disponibilidade básica é necessário um bom aterramento, no-break (no mínimo um estabilizador) e utilizar as ferramentas de diagnóstico do sistema operacional. Ou seja, todo o cuidado básico para que o computador não pare por algum problema qualquer ocasionado por falta de manutenção preventiva.
A alta disponibilidade, ao contrário da básica, possui mecanismos que permitem a operacionalidade do sistema mesmo quando acontece uma falha. Esses mecanismos podem ser implementados via hardware ou software e são especializados tanto no detectar de uma falha quanto na recuperação do serviço a fim de que a falha se torne “invisível” para o cliente.
Nesta classe, as máquinas, apresentam disponibilidade na faixa de 99,99% a 99,999%, podendo ficar indisponíveis por um período entre 5 minutos e uma hora em um ano de operação.
Acima de 99,999% encontramos o nível máximo que chamamos de disponibilidade contínua. Este nível é muito próximo dos 100%, a ponto de que o tempo de inoperância do sistema deve estar abaixo dos 60 segundos por ano ou inexistente.
Neste nível, temos que todas as paradas planejadas e não planejadas são mascaradas, e o sistema está sempre disponível.
Glossário rápido
· Falha: uma falha acontece no universo físico, ou seja, no nível mais baixo do hardware. Uma flutuação da fonte de alimentação, por exemplo, é uma falha.
· Erro: a ocorrência de uma falha pode acarretar um erro, que é a representação da falha no universo computacional. Um computador trabalha com bits, cada um podendo conter 0 ou 1. Uma falha pode fazer com que um (ou mais de um) bit troque de valor inesperadamente, o que certamente afetará o funcionamento normal do computador. Uma falha, portanto, pode gerar um erro em alguma informação.
· Defeito: já esta informação errônea (erro), se não for percebida e tratada, poderá gerar o que se conhece por defeito. O sistema simplesmente trava, mostra uma mensagem de erro, ou ainda perde os dados do usuário sem maiores avisos. Isto é percebido no universo do usuário.
Recapitulando, uma falha no universo físico pode causar um erro no universo computacional, que por sua vez pode causar um defeito percebido no universo do usuário.
A tolerância a falhas visa exatamente acabar com as falhas, ou tratá-las enquanto ainda são erros. Já a alta disponibilidade permite que máquinas travem ou errem, contanto que exista outra máquina para assumir seu lugar.
Para que uma máquina assuma o lugar de outra, é necessário que se descubra de alguma forma que a outra falhou. Isso é feito através de testes periódicos nos quais a máquina secundária testa não apenas se a outra está ativa, mas também fornecendo respostas adequadas a requisições de serviço.
Aqui vale reforçar que por serem periódicos, existe um intervalo de tempo durante o qual o sistema pode estar indisponível sem que a outra máquina o perceba.
Alguns outros conceitos importantes são:
· Failover: processo no qual uma máquina assume os serviços de outra quando esta última apresenta falha. O failover pode ser automático ou manual, sendo o automático o que normalmente se espera de uma solução de alta disponibilidade. ...