Sistemas Distribuídos Tolerância a faltas Prof. Emerson Ribeiro de Mello Instituto Federal de Santa Catarina IFSC campus São José mello@ifsc.edu.br http://docente.ifsc.edu.br/mello 3 de dezembro de 2015 1/27
Algumas definições 2/27
Definições: Falha, erro e falta Falha Um processo é considerado falho se durante sua execução apresentar um comportamento diferente daquilo que foi especificado Um processo correto não apresenta falhas durante todo o intervalo de execução que está sendo observado Erro Erro é uma parte do estado do sistema que pode levá-lo a falhar Ex: Durante a transmissão de dados alguns bits são alterados Falta A causa de um erro é chamada de falta Ex: Meio de transmissão defeituoso, condições climáticas 2/27
Como lidar com faltas evitadas projetar sistema para minimizar ocorrência de faltas Validação formal, inspeção de código, teste e uso de hardware robusto removidas Uma vez encontradas, podem ser removidas por meio de testes, depuração, substituição de componentes toleradas Assuma que faltas (ou potenciais) sempre existirão Sistema deve continuar funcionando mesmo diante de faltas 3/27
Exemplo: falha, erro e falta Tubos pitot são sensores de velocidade que estão susceptíveis a congelamento devido ao mau tempo, gerando problema para o sistema de controle Comportamento esperado: controlar a velocidade da aeronave Falha: Erro: Falta: 4/27
Exemplo: falha, erro e falta Tubos pitot são sensores de velocidade que estão susceptíveis a congelamento devido ao mau tempo, gerando problema para o sistema de controle Comportamento esperado: controlar a velocidade da aeronave Falha: Sistema de controle não permite aumentar velocidade Erro: Avião a 400km/h, porém envia o valor de 840km/h Falta: Congelamento do tubo pitot 4/27
Tolerância a faltas Sistemas críticos que não podem falhar Usina nuclear, aeronaves, etc Sistemas críticos cuja a falha representa prejuízo financeiro Sistemas bancários, sítios web de comércio eletrônico, etc. 5/27
Tolerância a faltas Sistemas críticos que não podem falhar Usina nuclear, aeronaves, etc Sistemas críticos cuja a falha representa prejuízo financeiro Sistemas bancários, sítios web de comércio eletrônico, etc. Sistemas distribuídos são susceptíveis a falhas parciais Alguns componentes do sistema podem falhar e garantir o funcionamento correto depende de detectar, tolerar e recuperar destas falhas Motivos: falhas de hardware, bugs em softwares, erros na transmissão pela rede, etc. 5/27
Segurança de funcionamento Para um sistema crítico é desejado que este tenha propriedades de segurança de funcionamento (dependable), o que inclui Disponibilidade (availability) O sistema sempre estará pronto para ser usado Confiabilidade (reliability) O sistema pode ser executado constantemente sem apresentar falhas Segurança (safety) Se o sistema vir a falhar temporariamente, isto não resultará em catástrofes Facilidade de manutenção (maintainability) Indica o quão fácil o sistema que falhou pode ser recuperado 6/27
Faltas Categorias Permanente se mantém ao longo do tempo Intermitente ocorre eventualmente devido a instabilidades de hardware ou software Transitória resultado de condições temporárias e que a princípio não se repetirá 7/27
Faltas Categorias Permanente se mantém ao longo do tempo Intermitente ocorre eventualmente devido a instabilidades de hardware ou software Transitória resultado de condições temporárias e que a princípio não se repetirá Faltas no processamento ou armazenamento Fail-silent (fail-stop) para de funcionar Fail-silent (fail-restart) ao retornar perde o estado Faltas de comunicação corrupção dos dados falha no enlace falha somente em um sentido particionamento da rede 7/27
Tipos de falhas Parada O processo para de funcionar, mas estava funcionando corretamente até então Omissão de recepção O processo não recebe as mensagens enviadas a ele Omissão de envio O processo falha ao enviar as mensagens que se espera que ele envie Arbitrária O processo continua a funcionar, porém produz uma saída incorreta Também chamada de falhas bizantinas 8/27
Tipos de falhas Parada O processo para de funcionar, mas estava funcionando corretamente até então Omissão de recepção O processo não recebe as mensagens enviadas a ele Omissão de envio O processo falha ao enviar as mensagens que se espera que ele envie Arbitrária O processo continua a funcionar, porém produz uma saída incorreta Também chamada de falhas bizantinas Qual o tipo de falha para o caso do tubos pitot? 8/27
Detector de falhas Detector de falhas é um serviço responsável por verificar se um determinado processo falhou Geralmente implementado localmente dentro de cada processo Algoritmo de detecção de falhas combina detectores de vários processos 9/27
Detector de falhas: classificação Detectores não confiáveis indica que o processo é Não suspeito recebeu evidências recentes que o processo não falhou Ex: mensagem foi recebida há pouco tempo Suspeito possui alguma indicação que o processo falhou recentemente Ex: nenhuma mensagem recebida dentro do intervalo esperado Um processo correto, porém com uma execução mais lenta pode ser considerado suspeito 10/27
Detector de falhas: classificação Detectores não confiáveis indica que o processo é Não suspeito recebeu evidências recentes que o processo não falhou Ex: mensagem foi recebida há pouco tempo Suspeito possui alguma indicação que o processo falhou recentemente Ex: nenhuma mensagem recebida dentro do intervalo esperado Um processo correto, porém com uma execução mais lenta pode ser considerado suspeito Detectores confiáveis indica que o processo é Não suspeito igual ao anterior Falho conseguiu determinar que o processo falhou 10/27
Redundância Técnica que permite tolerar faltas Redundância de informação Inclusão de bits extra em blocos de dados de forma a permitir recuperar corretamente o bloco mesmo se alguns bits forem corrompidos Ex: Código de Hamming, Código Reed-Solomon Redundância temporal Repetir uma ação várias vezes até ter certeza que foi executada Adequada para faltas intermitentes ou transitórias Ex: TCP Redundância física Fazer uso de várias réplicas de um equipamento ou processo Ex: Redundância Modular Tripla (TRM) de Von Neumann, RAID, etc. 11/27
Redundância Modular Tripla (TRM) A B C não tolerante (a) a faltas Voter A1 V1 B1 V4 C1 V7 A2 V2 B2 V5 C2 V8 A3 V3 B3 V6 C3 V9 tolerante (b) a faltas 12/27
Obtendo Tolerância a faltas em SD 13/27
Organização de processos idênticos em grupos Flat group Hierarchical group Coordinator Worker (a) Grupo plano Todos possuem papéis idênticos e toda decisão é tomada de forma coletiva Não existe ponto único de falha, porém a tomada de decisão é mais complicada Grupo hierárquico Todo pedido que chega deve ser encaminhado para o coordenador e este determina para quem encaminhar Vantagens e desvantagens opostas àquelas do grupo plano (b) 13/27
Mascaramento de falhas e replicação O agrupamento de processos idênticos permite mascarar um ou mais processos falhos A independência de falhas é quando se busca evitar faltas que afetem todos os processos http://pt.wikipedia.org/wiki/blecaute na Ilha de Santa Catarina em 2003 14/27
Replicação passiva Primário-backup Uma réplica sempre será o mestre (primário) e todas as demais serão escravas (backup) Clientes sempre interagem com a réplica primária Primário sempre atualiza os backups sobre o estado do sistema Se o primário falhar, então um dos backups é promovido a primário fazendo uso de algoritmo de eleição 15/27
Replicação ativa Todas as réplicas possuem papéis idênticos Dado um estado inicial e uma sequência de pedidos, todos os processos irão produzir a mesma sequência de respostas e irão terminar em um mesmo estado final Todas as réplicas processam os pedidos de forma independente, porém apresentam respostas idênticas Nada precisa ser feito se uma réplica falhar e ainda houver mais réplicas ativas 16/27
Sistemas replicados tolerantes a faltas Um sistema é dito tolerante a k faltas se continuar a funcionar corretamente mesmo se k réplicas de n falharem Total de réplicas para falhas de parada : n k + 1 Basta que uma réplica seja correta Para falhas arbitrárias (falha bizantina) n 2k + 1 para tolerar k faltas A maioria das réplicas deve ser correta 17/27
Sistemas replicados tolerantes a faltas Um sistema é dito tolerante a k faltas se continuar a funcionar corretamente mesmo se k réplicas de n falharem Total de réplicas para falhas de parada : n k + 1 Basta que uma réplica seja correta Para falhas arbitrárias (falha bizantina) n 2k + 1 para tolerar k faltas A maioria das réplicas deve ser correta Premissa Todas as mensagens serão processadas na mesma ordem por todos os processos difusão seletiva com ordem total (atomic multicast) 17/27
Acordo em sistemas distribuídos sujeitos a faltas Algoritmos de acordo distribuído visam garantir que todos processos corretos acordem sobre um determinado valor em um número finito de passos 18/27
Acordo em sistemas distribuídos sujeitos a faltas Algoritmos de acordo distribuído visam garantir que todos processos corretos acordem sobre um determinado valor em um número finito de passos Na prática, sistemas distribuídos assumem processos assíncronos, transmissão unicast e atraso não é limitado 18/27
Problema dos Generais Bizantinos Lamport, 82 Surgiu da necessidade de consolidar sinais de sensores de altitude replicados em um avião Ter um único sensor é muito arriscado! Tendo mais de um sensor, como saber qual o valor correto, dado que alguns destes podem falhar? 19/27
Problema dos Generais Bizantinos Lamport, 82 Em um cerco ao inimigo existem N generais, cada um liderando uma divisão do Exército Bizantino Todos generais conversam entre em si através de mensageiros Após observarem o inimigo todos os generais devem chegar a um acordo comum Devemos atacar ou partir em retirada? 20/27
Problema dos Generais Bizantinos Lamport, 82 Em um cerco ao inimigo existem N generais, cada um liderando uma divisão do Exército Bizantino Todos generais conversam entre em si através de mensageiros Após observarem o inimigo todos os generais devem chegar a um acordo comum Devemos atacar ou partir em retirada? m generais podem ser traidores e enviam informações incorretas a fim de evitar que generais leais cheguem a um acordo 20/27
Problema dos Generais Bizantinos Lamport, 82 Algoritmo executado em paralelo por n vezes Dos n generais, um é o comandante e n-1 são seus subordinados O comandante envia mensagem para cada um de seus subordinados C1 Todos subordinados leais obedecem a mesma ordem C2 Se o comandante for leal, então todos subordinados leais obedecem a ordem dada por ele 21/27
Problema dos Generais Bizantinos Lamport, 82 Algoritmo executado em paralelo por n vezes Dos n generais, um é o comandante e n-1 são seus subordinados O comandante envia mensagem para cada um de seus subordinados C1 Todos subordinados leais obedecem a mesma ordem C2 Se o comandante for leal, então todos subordinados leais obedecem a ordem dada por ele Se generais só podem se comunicar através de mensagens orais, então só é possível chegar a uma solução se mais de 2/3 dos generais forem leais Com 3 generais e se 1 deles for traidor, então nenhuma solução é possível 21/27
Problema dos Generais Bizantinos Lamport, 82 22/27
Problema dos Generais Bizantinos Lamport, 82 22/27
Problema dos Generais Bizantinos Lamport, 82 Em ambos os casos o subordinado 1 não consegue decidir qual ordem seguir e quem é o traidor solução: n 3m + 1 22/27
Problema dos Generais Bizantinos Lamport, 82 Algoritmo com Mensagens Orais (OM) Solução n 3m + 1 Premissas no sistema de mensagens orais (OM) trocadas entre os generais P1 Toda mensagem enviada é entregue corretamente P2 O receptor da mensagem sabe quem a enviou P3 A perda da mensagem pode ser detectada Se não enviar mensagem, então assume-se a ordem retirar Ou seja, processos síncronos, comunicação ordenada e unicast, atraso da comunicação é limitado P1 e P2 previnem que um traidor interfira na comunicação entre dois outros generais P3 previne que um traidor atrapalhe o acordo simplesmente não enviando mensagens 23/27
Problema dos Generais Bizantinos Lamport, 82 Algoritmo com Mensagens Orais (OM) Solução n 3m + 1 Objetivo: cada general construir um vetor V de tamanho n, sendo que se um general i é leal, então V [i] = v i. Caso contrário, V [i] = indefinido. v i é o valor fornecido pelo general i aos demais generais Aquele valor que for considerado pela maioria é o valor a ser assumido pelo general 24/27
Problema dos Generais Bizantinos Lamport, 82 Algoritmo com Mensagens Orais (OM) Solução n 3m + 1 25/27
Problema dos Generais Bizantinos Lamport, 82 Algoritmo com Mensagens Orais (OM) Solução n 3m + 1 25/27
Disponibilidade e tolerância a faltas Com a tolerância a falta é possível aumentar o nível de disponibilidade tempodisponivel Disponibilidade = tempodisponivel + tempoindisponivel Disponibilidade 100% é inviável atingir, pois quanto mais próximo de 100%, mais custoso será o sistema classe nível indisponibilidade anual mensal contínuo 99.9999% 31.5 seg 2.59 seg tolerante a faltas 99.999% 5.26 min 25.9 seg alta disponibilidade 99.9% 8.76 horas 43.8 min disponibilidade normal 99% 3.65 dias 7.20 horas Acordos de Nível de Serviço (Service Level Agreements SLA) são geralmente construídos sobre a disponibilidade mensal 26/27
Curiosidade na área de redes Visite a página do PoP-SC da RNP e veja sobre a disponibilidade dos enlaces nos últimos 3 anos http://www.pop-sc.rnp.br Na página da RNP veja sobre a disponibilidade da rede IPÊ em 2015 http://www.rnp.br/servicos/conectividade/rede-ipe 27/27