Disponibilidade, tolerância a
falhas e resiliência
Conceitos básicos
Falha x erro x defeito
• Falha: Ocorre quando o comportamento de um elemento se
desvia do especificado. Pode ocorrer em relação ao hardware
ou software. Exemplo: Erro em um dos HDs de um RAID 1
(espelhamento de dados).
• Erro: É um estado ocasionado por uma falha. Pode ser
detectado e tratado, por ser mais previsível que a falha.
Exemplo: Devido a uma falha na memória, ao invés de gravar
00000000 foi gravado 11111111.
• Defeito: Quando o usuário final do serviço é afetado.
Geralmente temos a queda parcial ou total do serviço, ou
“travamentos”, perda de informações, etc.
Falha x erro x defeito – cont.
FALHA
ERRO
DEFEITO
MTBF e MTTR
• MTBF (mean time between failures): Tempo médio
entre falhas.
• MTTR (mean time to repair): Tempo médio para
reparar / de recuperação.
Disponibilidade
• Disponibilidade (availability): Tempo que um serviço
ficará disponível sem a ocorrência de falhas.
• Cálculo da disponibilidade
Disponibilidade = MTBF / (MTBF + MTTR)
• Alta disponibilidade ≥ 99.999
Obs.: Em um ano ± 5 minutos de indisponibilidade
Disponibilidade – cont.
• Podemos usar o modo de porcentagem ou de defeitos por
milhão (defects-per-million), ou realizar a conversão entre os
modos.
• No modo de porcentagem a forma de expressar os dados
pode ser 0.999... ou 99.9...
• Exemplo: Se um roteador tem 200 defeitos a cada milhão de
horas, então o MTBF é 5.000 horas. Conhecendo o MTTR
teremos a conversão para o modo de porcentagem.
• Obs.: O MTTR geralmente será estipulado em algum contrato
de prestação de serviço ou assistência técnica.
Componentes seriais e paralelos
• Seriais: Todos os componentes precisam funcionar.
Se um possui uma falha, então toda a rede falha. O
valor final da disponibilidade do sistema sempre será
menor que qualquer um dos seus componentes.
A1
A2
Exemplo: Com dois componentes com disponibilidade
de 0.995, temos 0.995 x 0.995 = 0.990.
Componentes seriais e paralelos
• Paralelo: A rede continua funcionando, se ao menos
um dos componentes continua a funcionar. Para
calcular a probabilidade da falha do componente é
preciso subtrair a disponibilidade do valor um.
A1
A2
Componentes seriais e paralelos
Exemplo: Dois componentes paralelos com
disponibilidade de 0.0995, temos [ 1 – (1 – 0.995) x
(1 – 0.995) ] = 0.999975.
A1
A2
Obs.: O uso de componentes redundantes em sistemas
paralelos é o que o faz aumentar disponibilidade.
Tolerância a falhas
• Tolerância a falhas (fault tolerance): Forma de
mascarar um defeito utilizando redundância de um
ou mais componentes.
• Após a detectar o problema com o componente é
necessário confinar os danos e diagnosticar o
ocorrido, realizar a recuperação do erro e por último
reparar o defeito.
Técnicas de tolerância a falhas
• Redundância N-modular: Utilização de N
componentes, onde é realizada uma votação e a
partir da maior quantidade de votos será gerada a
saída da solicitação.
Exemplo: Utilização de 3 soluções de roteamento
(Quagga, Bird, Xorp) para prover tolerância a falhas
relacionadas a bugs em softwares de roteamento
(ambientes virtualizados).
Técnicas de tolerância a falhas – cont.
• Probe packets e self-checking: Envio de dados prédefinidos para que possa ser avaliado o
funcionamento correto de um ou mais componentes.
Exemplo: Checagem de disponibilidade (e/ou erros) de
um enlace ou estimativa de largura de banda.
Técnicas de tolerância a falhas – cont.
• Hot‐sparing: Mais de um componente ativo, porém
apenas um ou um segmento é o “principal”. Com a
falha, outro assume o controle.
Exemplo: Redundância de servidor LDAP, banco de
dados distribuído MongoDB, utilização de técnica de
DRBD para dados em geral, etc.
Dependability
• Capacidade de fornecer um serviço razoavelmente
confiável, evitando falhas frequentes.
• São meios para garantir a “dependability”:
–
–
–
–
prevenção de falhas
tolerância a falhas
remoção de falhas
previsão de falhas
Resiliência
• Definição 1: Persistência da “dependability” quando
ocorrem mudanças. A resiliência é uma evolução do
termo “dependability”.
• Definição 2: Resiliência em redes é a habilidade de
uma entidade de tolerar (resistir e automaticamente
se recuperar de) desafios nas condições da rede,
ataques coordenados e anomalias no tráfego.
Resiliência – cont.
• Exemplo: Para garantir a resiliência de um slice de rede,
podemos virtualizar parcialmente os componentes, como os
mecanismos de roteamento, e utilizar redundância ativa,
onde um slice protegerá o outro, em caso de falhas. A
utilização de esquemas de migração de máquinas virtuais,
com alguma técnica de pré-cópia também pode ser utilizada
para aumentar a disponibilidade do serviço.
Referências
• Fault tolerance in distributed systems – Pankaj Jalote
• Increasing Router Availability through Virtualization – Sergio
Correia, Omar Cherkaoui, Joaquim Celestino Junior
• From Dependability to Resilience – Jean-Claude Laprie
• High Availability Network Fundamentals: A Practical Guide to
Predicting Network Availability – Christopher Oggerino
• Wireless Mesh Networking – George Angelou
Download

Disponibilidade tolerância a falhas resiliência