690 likes | 803 Views
Sistemas Distribuídos. Francisco Brasileiro. Aula 4: Tolerância a Falhas em Sistemas Distribuídos. Agenda. Motivação Conceitos básicos e definições Mecanismos básicos Acordo Bizantino Sincronização de relógios Armazenagem estável Entrega confiável de mensagens
E N D
Sistemas Distribuídos Francisco Brasileiro Aula 4: Tolerância a Falhas em Sistemas Distribuídos
Agenda • Motivação • Conceitos básicos e definições • Mecanismos básicos • Acordo Bizantino • Sincronização de relógios • Armazenagem estável • Entrega confiável de mensagens • Nodos com semântica de falha controlada
Motivação • Necessidade de tolerância a faltas • aumento do uso de computadores • diversificação do uso de computadores • aumento da dependência no correto funcionamento dos sistemas computacionais
Motivação • Exemplos de aplicações com requisitos de confiança no funcionamento • Sistemas críticos envolvendo risco de vida • controle de vôo em aeronaves • Sistemas envolvendo perdas financeiras • transações bancárias e do mercado financeiro • Sistemas envolvendo desastres ambientais • controle de usinas nucleares
Motivação • Quando é que um sistema falha? • Qual é o serviço adequado de um sistema? • Vamos assumir que a especificação é correta • Importância de se tratar faltas em sistemas distribuídos • em um sistema distribuído a probabilidade de um componente falhar é maior • aplicações críticas
Conceitos Básicos e Definições • Serviços de um sistema computacional • Confiança no funcionamento (dependability) • Atributos de confiança no funcionamento • Fiabilidade (reliability) • Disponibilidade (availability) • Segurança • prevenção contra catástrofes (safety) • prevenção contra acesso não autorizado (security)
Conceitos Básicos e Definições • Tratamento de faltas • Prevenção • minimizar, por construção, a probabilidade da ocorrência de faltas • Tolerância • prover o serviço, ainda que ocorram faltas • introduz redundância no sistema • física • temporal
Conceitos Básicos e Definições • Características de prevenção de faltas • ausência de redundância • falhas ocasionais do sistema • manutenção assistida por humanos • Problemas com a abordagem • atraso longo quando há necessidade de reparo • possível inacessibilidade para efetuar reparo • custos excessivos na manutenção e com o processamento perdido
Conceitos Básicos e Definições • Combinando prevenção e tolerância • As duas técnicas são complementares • Algumas aplicações devem necessariamente tolerar faltas • A introdução de redundância física possibilita a substituição do reparo manual • Outros pontos importantes • diagnóstico de faltas • validação dos mecanismos do sistema para tolerância a faltas
Conceitos Básicos e Definições • Modelando sistemas • Visão externa • Visão interna • Comportamento do sistema • Especificação de serviços • Características desejáveis em uma especificação • completa • consistente • correta
Conceitos Básicos e Definições • Falha ou defeito (failure) • Desvio da especificação • Erro (error) • Estado ou transição interna ilegais • Falta (fault) • Causa dos erros e falhas • Relação entre falta, erro e falha
Conceitos Básicos e Definições • Tipos de faltas • Quanto à duração • permanentes, transientes, intermitentes • Quanto à natureza • físicas, interação • Quanto à fase de introdução • projeto, operação
Conceitos Básicos e Definições • Semântica de falha de componentes • domínio do valor • domínio do tempo • tipos de falhas • silenciosa (crash, fail-stop) • omissão • temporização (desempenho) • valor • arbitrária (Bizantina) • Bizantina com autenticação
Conceitos Básicos e Definições • Sistemas tolerantes a faltas • Evitam a falha do sistema, mesmo na presença de faltas em alguns dos componentes do sistema • Mesmo que alguns componentes falhem, o sistema ainda é consistente com a sua especificação • redução de desempenho (graceful degradation) • Introdução de redundância é o princípio básico
Conceitos Básicos e Definições • Fases na tolerância a faltas • Detecção de erros • Contenção e avaliação de estragos • Recuperação de erros • Tratamento de faltas e continuidade do serviço • diagnóstico de faltas • reconfiguração do sistema
Conceitos Básicos e Definições • Detecção de erros • Dedução de faltas e falhas • Propriedades de um detetor de erros ideal • completude e corretude • independência de projeto • Principais tipos de detetores de erros • replicados • temporizadores (watchdogs) • códigos e redundância estrutural • testes de aceitação e diagnósticos
Conceitos Básicos e Definições • Contenção e avaliação de estragos • Latência • Disseminação de erros • Análise do fluxo de informação • Portas “corta-fogo” • SRU’s (smallest replacement units)
Conceitos Básicos e Definições • Recuperação de erros • Abordagem pessimista (backward recovery) • pontos de salvaguarda (checkpoint) • implementação razoavelmente simples • custo alto • efeito “dominó“ • Abordagem otimista (forward recovery) • ações corretivas • considerações sobre a natureza dos erros • normalmente é dependente da aplicação ou do sistema
Conceitos Básicos e Definições • Tratamentos de faltas e continuidade do serviço • Identificação de componentes defeituosos • Localização do erro • Reparo do sistema • on-line • reconfiguração • componentes suplentes (spares) • passivos (cold-spares) e ativos (hot-spares)
Conceitos Básicos e Definições • Modelagem de sistemas distribuídos • Modelo físico • Principais componentes • processadores • rede de comunicação • dispositivos de armazenagem não voláteis • software • Modelo lógico • Aplicações implementadas por processos cooperantes • Comunicação via troca de mensagens • Sistemas síncronos versus sistemas assíncronos
Conceitos Básicos e Definições • Tipos de sistemas distribuídos • Sistemas síncronos • atraso máximo conhecido para escalonamento e troca de mensagens • oferecem framework mais simples • mais difíceis de serem implementados • Sistemas assíncronos • timed-related x time-free • mais fáceis de serem implementados
Mecanismos Básicos • Suportes para construção de sistemas distribuídos tolerantes a faltas • Como disseminar informação de forma consistente e confiável? • Como ordenar eventos? • Como prover um sistema de tempo global? • Como armazenar informação de forma estável? • Como restringir a semântica de falha de componentes?
Mecanismos Básicos:Acordo Bizantino • Como atingir consenso na presença de componentes com semântica de falha arbitrária? • O problema dos generais Bizantinos • decisão final é baseada nas decisões locais • alguns generais podem ser traidores • Como garantir que todos os generais leais decidirão pelo mesmo plano? • os generais devem receber as mesmas informações • os generais devem usar a mesma função de decisão
Mecanismos Básicos:Acordo Bizantino • Como entrar em um acordo sobre qual valor usar para a decisão de um general traidor? • Todos os generais leais devem chegar a um consenso sobre que valor usar para a decisão de cada general • Consistência interativa • todos os generais leais usam o mesmo valor v(i) para o general i • se o general i é leal, então todos os generais leais devem usar o valor v(i) que o general i envia
Mecanismos Básicos:Acordo Bizantino • Requisitos para obter consistência interativa • Várias rodadas de troca de informação • Sistema de comunicação síncrono • Número limitado de generais traidores • Há solução para o caso de 3 generais, onde um deles pode ser um traidor? • os generais podem tomar apenas duas decisões (atacar ou esperar)
G1 (T) G2 (R) Mecanismos Básicos:Acordo Bizantino atacar atacar G3 (R) esperar O que fazer?
G2 (R) G1 (R) Mecanismos Básicos:Acordo Bizantino G1 (T) atacar esperar esperar O que fazer?
Mecanismos Básicos:Acordo Bizantino • Resultados teóricos • Número mínimo de rodadas • k+1 • Relação mínima entre componentes corretos/defeituosos • n/k>3 • Número mínimo de canais de comunicação disjuntos • 2k+1
Mecanismos Básicos: Acordo Bizantino • Algoritmo recursivo para consistência interativa • ICA(k), k>0 • 1. O transmissor envia o seu valor para os outros n-1 receptores • 2. Seja v o valor recebido pelo general i, ou o valor default se nada for recebido.O general i se comporta como transmissor no algoritmo ICA(k-1) para enviar v para os outros n-2 receptores • 3. Para cada general i, seja vj o valor recebido de j (i¹¡). O general i usa o valor da maioria dos valores recebidos para i • ICA(0) • 1. O transmissor envia seu valor para os outros n-1 receptores • 2. Cada general usa o valor recebido do transmissor ou o valor default se nada for recebido
Mecanismos Básicos:Acordo Bizantino • Consistência interativa com mensagens assinadas • Mensagens repassadas por generais traidores não podem ser modificadas sem que isso seja detectado por generais leais • assinaturas digitais • Resultados teóricos • número de rodadas: k+1 • número máximo de generais traidores: n>k • número de canais de comunicação disjuntos: k+1
Mecanismos Básicos:Sincronização de Relógios • Como estabelecer um referencial de tempo global em um sistema distribuído? • Cada nodo tem seu relógio local • Relógios desviam do tempo real • Tempo global e ordenação de eventos • relógios lógicos • sincronização de relógios • sincronização interna • sincronização externa
Mecanismos Básicos:Sincronização de Relógios • A relação “aconteceu antes” (Ô) e a ordenação de eventos • Para dois eventos a e b: • se a e b são eventos no mesmo processo e a vem antes de b, então a Ô b • se a é o evento de envio de uma mensagem m e b é o evento de recepção de m, então a Ô b • se existe um terceiro evento c, tal que a Ô b e b Ô c, então a Ô c
Mecanismos Básicos:Sincronização de Relógios • Relógios lógicos implementam a relação “Ô” • Um relógio lógico é um contador que serve para associar valores a eventos e cada processo tem um relógio lógico • Ci<a> é o valor associado ao evento a pelo processo i onde a ocorreu • Para dois eventos a e b: se aÔb, então C(a) < C(b) • Como implementar relógios lógicos? • Relógio é incrementado entre dois eventos locais • Mensagens carregam estampilhas
Mecanismos Básicos:Sincronização de Relógios • Aspectos a serem considerados na sincronização de relógios físicos • Relógios corretos operam em diferentes velocidades • Necessidade de re-sincronização periódica • Troca de mensagens com valores das leituras dos relógios introduz incerteza • Falhas nos relógios e nos canais de comunicação
Mecanismos Básicos:Sincronização de Relógios • Definição do problema: • Sejam Ci(t) a leitura de Ci no tempo real t e ci(T) o tempo real quando o i-ésimo relógio lê o valor T • assumindo que os relógios são contínuos: • para um relógio correto, |d(Ci/dt)-1| < r • existem dois requisitos básicos para sincronização de relógios: • a todo instante a leitura de dois relógios corretos deve ser bastante próxima (|Ci(t)-Cj(t)| £b) • um relógio correto só pode ser adiantado/atrasado de um intervalo de tempo pequeno e limitado, durante cada re-sincronização
Mecanismos Básicos:Sincronização de Relógios • Tipos de protocolos • Determinísticos • sempre garantem a precisão da sincronização • assumem um limite máximo no atraso para a transmissão de mensagens • Probabilísticos • nenhuma restrição sobre o atraso na troca de mensagens • garantem a precisão da sincronização apenas dentro de uma probabilidade pré-definida
Mecanismos Básicos:Sincronização de Relógios • Protocolos determinísticos • Uma possível solução é: • cada nodo lê o seu relógio e o relógio dos outros nodos • atribui ao seu relógio a mediana dos valores lidos • Em que circunstâncias esse protocolo funciona? • a maioria dos nodos (e seus relógios) são corretos • nodos e relógios não sofrem falhas arbitrárias • O que fazer na presença de falhas arbitrárias? • dois nodos corretos quaisquer devem obter (aproximadamente) o mesmo valor para um relógio Ci • se Ci é correto, o valor obtido é o valor de Ci
Mecanismos Básicos:Sincronização de Relógios • Uma solução com mensagens orais • Número de nodos é pelo menos 3k+1 • C(t)=H(t)+CORR(t) • Inicialmente os relógios estão sincronizados em e • Existe dmin e dmax para o atraso na transmissão • Quando Ci(t)=T o nodo i dissemina “a hora é T” • Guarda tempo das recepções de mensagens dos outros nodos por um período de (e+dmax)(1+r) • Com os tempos de recepção recalcula CORR(t) • joga fora os k maiores e os k menores • CORR(t)=d + mediana dos valores restantes
Mecanismos Básicos:Sincronização de Relógios • Protocolos probabilísticos • Algoritmo de Cristian • tolera falhas de desempenho • não assume atraso máximo, mas assume um atraso mínimo • nodo j requisita o valor do relógio de um nodo i e corrige esse valor com base no atraso de leitura
Mecanismos Básicos:Sincronização de Relógios • Protocolos probabilísticos • Algoritmo de Cristian • seja T o valor do relógio i quando a requisição de j é recebida e 2D o tempo de transmitir o pedido para i e receber a resposta: • quando j recebe a mensagem o relógio de i lê um valor no intervalo [T+dmin(1-r), T+2D(1+2r)-dmin(1+r)] • o valor médio do intervalo minimiza o erro • o erro máximo dá a precisão da leitura • quanto menor D maior a precisão • para uma precisão e é preciso descartar todas as leituras com atraso maior que 2U, onde U=(1-2r)(e+dmin)
Mecanismos Básicos:Armazenagem Estável • Qual a necessidade de se ter armazenagem estável? • Ter acesso à informação depois que uma falha ocorre • uso de dispositivos de armazenagem não voláteis • Recuperação para trás • leitura de pontos de salvaguarda • Aumentar a fiabilidade de discos “de prateleira”
Mecanismos Básicos:Armazenagem Estável • Definição do problema • Toda informação que é gravada com sucesso no tempo T,pode ser lida no tempo T’, T’>T • mesmo que falhas ocorram durante a operação • mesmo que os dispositivos sofram faltas físicas • Cada bloco do disco tem um valor e um estado • o estado pode ser correto ou defeituoso • Primitivas básicas de acesso ao disco • write(endereço, dado), retorna sucesso ou fracasso • read(endereço), retorna (estado, valor)
Mecanismos Básicos:Armazenagem Estável • Como tratar faltas em discos? • A maior parte pode ser tratada por meio de codificação • Algumas faltas não podem ser tratadas assim • falta transiente • setor defeituoso • falha da controladora • falha do disco
Mecanismos Básicos:Armazenagem Estável • Tratando os efeitos das faltas • Ao invés de enumerar todas as possíveis faltas, é melhor estudar o impacto das mesmas • prover métodos para esconder/reverter os erros • Eventos que ocorrem em um disco • leitura, gravação e espontâneos • desejáveis e não desejáveis • É preciso mascarar os efeitos de eventos não desejáveis
Mecanismos Básicos:Armazenagem Estável • Eventos indesejáveis da operação read • Erro temporário • bloco correto mas operação retorna bloco defeituoso • Erro persistente • bloco correto mas operação retorna bloco defeituoso, mesmo depois de sucessivas tentativas • Erro não detectado • bloco está defeituoso mas operação retorna bloco correto, ou bloco correto mas operação retorna um valor diferente do conteúdo do bloco
Mecanismos Básicos:Armazenagem Estável • Eventos indesejáveis da operação write • Escrita nula • o bloco não é mudado • Escrita incompleta • o bloco se torna defeituoso após a escrita
Mecanismos Básicos:Armazenagem Estável • Eventos espontâneos indesejáveis • Corrupção • o bloco muda de correto para defeituoso • Recuperação • o bloco muda de defeituoso para correto • Erro não detectado • o bloco muda de valor
Mecanismos Básicos:Armazenagem Estável • Armazenagem estável usando um único disco • Primitivas básicas • CarefulRead(e) • elimina erros temporários • CarefulWrite(e, d) • elimina escrita nula e escrita incompleta • Dividir disco em pares de blocos • informação duplicada • independentes em relação a eventos espontâneos • pelo menos um dos blocos sempre terá um estado correto
Mecanismos Básicos:Armazenagem Estável • Primitivas de acesso ao disco • StableRead(e) • faz CarefulRead(e) em um dos pares; se não tiver sucesso, faz CarefulRead(e) no outro par • StableWrite(e, d) • faz CarefulWrite(e, d) em um dos pares; quando a operação retorna sucesso, faz CarefulWrite(e, d) no outro par • Cleanup() • faz a consistência do disco após uma falha do nodo (normalmente na inicialização do sistema)
Mecanismos Básicos:Armazenagem Estável • Eventos indesejáveis mascarados • erro de leitura temporário e persistente • escrita nula e defeituosa • corrupção de um bloco • Eventos não mascarados • erros não detectados • quedas do disco ou do nodo