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)
Mecanismos Básicos:
Acordo Bizantino
G1 (T)
atacar
atacar
G2 (R)
G3 (R)
esperar
O que fazer?
Mecanismos Básicos:
Acordo Bizantino
G1 (T)
atacar
esperar
G2 (R)
G1 (R)
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
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
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
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-
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
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
Mecanismos Básicos:
Armazenagem Estável
• Armazenagem estável usando replicação
– Pares de blocos são organizados em discos
distintos
– Discos espelhados
• Mascaram falhas do disco, controladora ou nodo
• Boa aproximação de uma unidade de armazenagem
estável
– só não mascara erros não detectados
– RAID’s
Mecanismos Básicos:
Entrega Confiável de Mensagens
• Definição do problema
– Uma mensagem enviada de i para j é recebida
por j corretamente
– Mensagens enviadas por i são entregues a j na
ordem em que foram enviadas
• Implementação
– Detecção de erros
– Ordenação e garantia de entrega
– Tratamento de falhas
Mecanismos Básicos:
Entrega Confiável de Mensagens
• Como fazer comunicação um-para-muitos?
– Broadcast
– Multicast
• Propriedades de interesse
– Fiabilidade
– Ordenação consistente
– Causalidade
Mecanismos Básicos:
Entrega Confiável de Mensagens
• Caracterização do sistema
– Comunicação via troca de mensagens
– Sistema síncrono (d)
– Relógios são sincronizados (e)
– Semântica de falha arbitrária para os nodos
– Até k nodos e l canais de comunicação podem
falhar
– Não há partições da rede
Mecanismos Básicos:
Entrega Confiável de Mensagens
• O objetivo é garantir as seguintes
propriedades:
– terminação: todo valor disseminado por um
transmissor correto no tempo t é entregue a
todos os nodos corretos no tempo t+D
– atomicidade: qualquer mensagem disseminada
no tempo t ou é entregue por todos os nodos
corretos no tempo t+D ou não é entregue a
nenhum nodo;
– ordem: as mensagens entregues são entregues
Mecanismos Básicos:
Entrega Confiável de Mensagens
• Protocolo de Cristian (protocolo-D)
– Implementado por três processos
• Transmissor: inicia a transmissão de mensagens
• Repetidor: difunde mensagens recebidas
• Entregador: ordena e entrega mensagens estáveis
– Mensagens estáveis
• Para tolerar faltas por omissão: D=kd+Dk,l+e
• Para tolerar faltas de desempenho ou arbitrárias:
D=k(d+e)+Dk,l+e
• Para redes completamente conectadas:
Mecanismos Básicos:
Entrega Confiável de Mensagens
• Outros protocolos
– Sistemas síncronos
• Protocolos baseados em temporizadores ao invés de
relógios sincronizados
– Nodos Voltan e Seljuk
– Sistemas assíncronos (time-related)
• Ordenação causal
– Isis, Horus e Ensemble
– Transis
– NewTOP
Mecanismos Básicos:
Nodos com Semântica de Falha
Controlada
• Por que restringir a semântica de falhas de
componentes?
– Simplificação de projetos
• Como se escolhe a semântica de falha de
componentes?
– Qualidade do componente
– Requisitos da aplicação
– Tempo de missão
Mecanismos Básicos:
Nodos com Semântica de Falha
Controlada
• Como implementar nodos com semântica
de falha controlada
– Replicando processadores com semântica de
falha menos restritiva
– Máquina de estados
• processamento determinístico
• submeter réplicas às mesmas entradas
• validar saídas
Mecanismos Básicos:
Nodos com Semântica de Falha
Controlada
• Nodos com semântica de falha por parada
(fail-stop)
– Propriedades de um nodo fail-stop
• falha silenciosa
• armazenagem estável é mantida após a parada do
nodo
• qualquer nodo pode detectar a falha de um nodo
fail-stop
Mecanismos Básicos:
Nodos com Semântica de Falha
Controlada
• Implementação com armazenagem estável
– Um nodo fail-stop k-resiliente é composto por
k+1 processadores convencionais e um nodo
confiável implementando armazenagem estável
– Assinatura digital para autenticar origem
– Comunicação é feita via armazenagem estável
– Pedidos de leitura/gravação são enviados por
cada processador para o nodo de
armazenagem
– Qualquer diferença entre os valores para o
Mecanismos Básicos:
Nodos com Semântica de Falha
Controlada
• Implementação sem armazenagem estável
– Um nodo fail-stop k-resiliente é composto por
k+1 processadores convencionais
– O nodo de armazenagem estável é
implementado por 2k+1 processadores
convencionais
– Para escrever na armazenagem estável, um
acordo Bizantino é iniciado com o nodo de
armazenagem; qualquer diferença nos valores
do mesmo pedido indicam uma falha do nodo
Mecanismos Básicos:
Nodos com Semântica de Falha
Controlada
• Implementação em hardware de um nodo
com semântica de falha silenciosa (crash)
entrada
processador
saída
comparador
processador
Mecanismos Básicos:
Nodos com Semântica de Falha
Controlada
• Implementação em software
DMQ
Servidor
PMQ
Links
Ordenador
Remetente
Sim
RMQ
deve ser
ordenada?
Não
ECL
Links
Validador
VMQ
Links
Receptor
Mensagens originadas da rede
Links
ICL
Transmissor
Mensagens destinadas à rede
Mecanismos Básicos:
Nodos com Semântica de Falha
Controlada
• Vantagens dos nodos hard
– Impacto mínimo no desempenho
– Impacto mínimo no projeto do software
• Vantagens dos nodos soft
– Possibilidade de uso de diversidade no
projeto
– Uso de componentes off-the-shelf
– Facilidade de expansão
– Maior robustez contra a ocorrência de faltas
geradas por uma causa comum
Mecanismos Básicos:
Nodos com Semântica de Falha
Controlada
• Como proceder?
– A escolha não é clara, porém ...
– O tempo de projeto de nodos hard é longo
(entre 1 e 2 anos), e enfrenta alguns
problemas sérios
– Para algumas aplicações, o impacto no
desempenho introduzido nos nodos soft pode
não ser muito grande
Mecanismos Básicos:
Replicando Componentes
• Estratégias de replicação
– Replicação ativa
• modelo da máquina de estados
– determinismo de réplicas
– ordenação das entradas
• grau de replicação
– sistema k-resiliente
– semântica de falhas assumida
Mecanismos Básicos:
Replicando Componentes
• Estratégias de replicação
– Replicação passiva
•
•
•
•
•
•
primária e cópias
pontos de salvaguarda + detecção de falhas
mais simples quando não ocorrem falhas
réplicas podem ser não-determinísticas
recuperação mais lenta
só tolera faltas de componentes com semântica de
falha silenciosa
Mecanismos Básicos:
Replicando Componentes
• Estratégias de replicação
– Replicação semi-ativa
• tenta prover as vantagens das outras duas
abordagens
– recuperação rápida
– tratamento de não-determinismo
• só tolera faltas de componentes com semântica de
falha silenciosa
Download

T - Francisco "Fubica" Vilar Brasileiro