Aula 11 Tolerncia a Falhas Contedo Introduo Tolerncia

  • Slides: 19
Download presentation
Aula 11 Tolerância a Falhas

Aula 11 Tolerância a Falhas

Conteúdo Introdução à Tolerância a Falha Resiliência Recuperação

Conteúdo Introdução à Tolerância a Falha Resiliência Recuperação

Introdução à Tolerância a Falha Conceitos básicos: Muita pesquisa tem sido feita, na área

Introdução à Tolerância a Falha Conceitos básicos: Muita pesquisa tem sido feita, na área de computação, sobre tolerância a falha. Principalmente em sistemas grandes e complexos (como a maioria hoje), existem diversos riscos que precisam ser previstos. O entendimento do que significa realmente “ser tolerante à falha” necessita de uma definição clara do que é um sistema confiável. A confiabilidade representa uma conjunto de requisitos importantes: Disponibilidade Confiabilidade Segurança Capacidade de manutenção

Introdução à Tolerância a Falha É importante ainda diferenciar três termos que são frequentemente

Introdução à Tolerância a Falha É importante ainda diferenciar três termos que são frequentemente mal utilizados: Defeito: um defeito é uma característica do aplicativo que resulta na incapacidade em cumprir sua finalidade, as expectativas do usuário. A falha ocorre quando o defeito se manifesta. Erro: Normalmente provocado por um defeito, erro é o estado em que se encontra um sistema que não pode cumprir suas obrigações. Falha: É o resultado de um defeito que gerou um erro. Nesse cenário, é um evento disparado por um defeito, que coloca o sistema em erro e o conjunto dessa situação é denominado falha.

Introdução à Tolerância a Falha O controle de falhas (seja ao evitar, remover ou

Introdução à Tolerância a Falha O controle de falhas (seja ao evitar, remover ou prever falhas) é de vital importância à construção de Sistemas confiáveis. Mas, além disso, outra estratégia é prover tolerância a falha, o que significa que o sistema deverá ser capaz de atuar mesmo na presença de falhas. As falhas podem ser classificadas em três tipos. Tal classificação é de vital importância na definição dos mecanismos de tolerância: Falhas transientes Falhas intermitentes Falhas permanentes

Introdução à Tolerância a Falha Modelos de falha Nem sempre o efeito mensurável de

Introdução à Tolerância a Falha Modelos de falha Nem sempre o efeito mensurável de um falha ajuda a identificar sua causa. Essa situação é pior em Sistemas Distribuídos porque, como são compostos de vários elementos cooperativos, a falha em um deles pode afetar outros. Para facilitar o estudo das falhas, existe uma classificação dos modelos possíveis. Esses são os modelos mais comuns: Falha por queda Falha por omissão (de recebimento ou envio) Falha de temporização Falha de resposta (de valor ou transição de estado) Falha arbitrária

Introdução à Tolerância a Falha Mascaramento de falha por redundância Quando de trata de

Introdução à Tolerância a Falha Mascaramento de falha por redundância Quando de trata de tolerância a falha (e não de controle de falha), a estratégia mais comum é mascarar eventuais falhas com o uso de redundância. Há três tipos básicos: Redundância de Informação Redundância de tempo Redundância física Um exemplo notável de redundância é a chamada Redundância Modular Tripla (Triple Modular Redundancy ou TMR). Ela pode ser vista na figura a seguir:

Introdução à Tolerância a Falha Considere um circuito com dispositivos interdependentes como na figura

Introdução à Tolerância a Falha Considere um circuito com dispositivos interdependentes como na figura abaixo: A B C Uma falha no dispositivo A ou B pode comprometer todo o circuito. A TMR consiste em tratar essas falhas com redundância de dispositivos e tratamento das informações utilizando-se de votantes: A 1 V 1 B 1 V 4 C 1 V 7 A 2 V 2 B 2 V 5 C 2 V 8 A 3 V 3 B 3 V 6 C 3 V 9

Resiliência de processo Questões de projeto Descartadas as hipóteses de mascaramento, Sistemas realmente tolerantes

Resiliência de processo Questões de projeto Descartadas as hipóteses de mascaramento, Sistemas realmente tolerantes à falhas? como criar Para que isso seja possível, o sistema deve ter meio de impedir (? ), detectar e/ou se recuperar de situações de falha Uma abordagem, com foco em proteção à falhas de processo é o agrupamento de processos. Nesse caso, um grupo de processos é tratado abstratamente como um só e recebem as mesmas mensagens.

Resiliência de processo Grupos simples versus grupos hierárquicos A organização do grupo pode ser

Resiliência de processo Grupos simples versus grupos hierárquicos A organização do grupo pode ser hierárquica ou não. O que traz vantagens e desvantagens. Essa diferenciação se reflete também na forma como os processos se associam. Quando descentralizados, grupos de processo atuam em conjunto e devem chegar a um acordo. Para isso existem alguns algoritmos específicos e o problema aumenta na mesma medida que os processos discordam. Nesse cenário, caso haja falha em um dos processos, os demais assumem sua carga de modo transparente.

Resiliência de processo Associação a um grupo Os agrupamentos hierárquicos e não hierárquicos possuem

Resiliência de processo Associação a um grupo Os agrupamentos hierárquicos e não hierárquicos possuem suas vantagens e desvantagens. Enquanto um agrupamento simples é simétrico e não possui pontos únicos de falha, os hierárquicos tem um tomada de decisão menos complicada, uma vez que o processo de maior hierarquia toma as decisões sozinho, sem necessitar de votação. Uma dificuldade na utilização da estratégia de grupos é o tratamento de inclusão e exclusão dos processos nos grupos. Uma solução elegante é ter um servidor de grupos que cuide das particularidades desse processo de maneira transparente.

Resiliência de processo Mascaramento de falha e replicação Após entender os mecanismos de redundância

Resiliência de processo Mascaramento de falha e replicação Após entender os mecanismos de redundância que provêm tolerância, a próxima pergunta pertinente é: o quanto o sistema é tolerante. Com um grupo de processos, diz-se que o sistema é k-tolerante se puder lidar com até k falhas simultâneas. Para isso serão necessários k+1 processos no grupo. Porém, em caso de falhas arbitrárias, em que o processo não deixa de funcionar, mas apresenta resultados incorretos, serão necessários 2 k+1 processos no grupo, de modo que uma votação entre os processos decida qual é o resultado correto.

Resiliência de processo Acordo em sistemas com falha Porém, mesmo a tarefa de votar

Resiliência de processo Acordo em sistemas com falha Porém, mesmo a tarefa de votar (ou chegar a um acordo) entre processos de um grupo apresenta dificuldades. Para que ocorra, uma série de decisões menores precisam ser tomadas (que processo coordenará, como se dará a sincronização, etc). Existem diversos algoritmos de acordo entre processo (cujo objetivo é obter o consenso). Mas, para que possam ser implementados, é importante distinguir fatores importantes como: se a comunicação é síncrona ou assíncrona, se a comunicação é ordenada ou desordenada e, ainda, se a comunicação é feita por unicast ou multicast. Todos esses fatores interferem na escolha e funcionamento do algoritmo.

Resiliência de processo Detecção de falha O mascaramento de falhas só é possível se

Resiliência de processo Detecção de falha O mascaramento de falhas só é possível se o sistema for capaz de detectar a falha quando esta ocorrer. Essa tarefa é fundamental na construção da tolerância. O mecanismo mais comum é enviar “pings” para outros processo com o objetivo de descobrir se continuam ativos. O problema dessa solução é que, em redes não confiáveis, a demora em obter uma resposta pode gerar uma falsa informação de falha. E, ainda, essa solução não permite diagnosticar se a falha ocorre no processo ou no meio de comunicação. Há muitas outras estratégicas teóricas para resolver essas questões mas, na prática, o uso de pings ainda é a solução mais comum.

Recuperação Introdução O mascaramento é uma das faces da tolerância a falhas. Mas, para

Recuperação Introdução O mascaramento é uma das faces da tolerância a falhas. Mas, para sua total implementação, é fundamental que o sistema possa se recuperar e voltar a um estado livre de erro. Existem duas abordagens básicas, cada uma com suas vantagens e desvantagens: Recuperação retroativa Recuperação para a frente Por serem mais simples de implementar, as técnicas de recuperação retroativa são as mais comuns. Porém, normalmente tem um impacto significativo no desempenho

Recuperação Pontos de verificação Para a aplicação de uma abordagem de recuperação retroativa, é

Recuperação Pontos de verificação Para a aplicação de uma abordagem de recuperação retroativa, é necessário que o sistema guarde, periodicamente, fotos do seu estado. Em sistemas distribuídos, essa foto precisa ser global e é chamada de Fotografia Distribuída. Um problema dessa abordagem é que, como cada processo distribuído armazena seus próprios pontos de verificação e estes são independentes, é difícil formar uma foto distribuída em que todos os pontos estejam sincronizados. Nesse caso, é preciso retroagir ainda mais nos pontos de verificação de cada processo até encontrar um que seja consistente com os demais. Essa situação é chamada Efeito dominó.

Recuperação Pontos de verificação (continuação) Uma solução para esse problema é a utilização de

Recuperação Pontos de verificação (continuação) Uma solução para esse problema é a utilização de pontos de verificação coordenados. A estratégia consistem em fazer com que todos os processos se sincronizem antes de gravarem seus pontos de verificação. Para essa sincronização, um mecanismo de bloqueio simples em duas fases e a adoção de um processo coordenador são suficientes. A grande vantagem é que o estado armazenado a partir dessa estratégia é globalmente consistente. Porém, como se pode imaginar, a troca extra de mensagens entre os processos pode ter impacto significativo no desempenho.

Recuperação Registro de mensagens Para minimizar o impacto ao desempenho, uma abordagem possível é

Recuperação Registro de mensagens Para minimizar o impacto ao desempenho, uma abordagem possível é diminuir a quantidade de pontos de verificação sem comprometer a capacidade de recuperação. Com esse intuito, uma outra técnica complementar pode ser utilizada, o registro de mensagens. A ideia básica é armazenar todas as mensagens trocadas pelo processo desde o último ponto de verificação. Desse modo, mesmo com menos pontos, seria possível reproduzir as mensagens trocadas posteriormente e voltar a um estado válido.

Recuperação Computação orientada a recuperação Em alguns casos, outro modo de lidar com a

Recuperação Computação orientada a recuperação Em alguns casos, outro modo de lidar com a recuperação é simplesmente começar de novo e reiniciar o sistema. Nessa abordagem, a implementação é otimizada para reiniciar se necessário. Essa abordagem é denominada Computação orientada a recuperação. Para que seja possível, durante o projeto do sistema, os componentes precisam ser planejados para possuir um alto grau de desacoplamento. Somente desse modo é possível reiniciar parte de um sistema distribuído sem causar falha nos demais módulos.