Workshop do Projeto ARGO – Junho/2001
A Fault-Tolerant CORBA based Management tool
Marcela Santana Guimarães Batalha, Raimundo José de Araújo Macêdo
Distributed Systems Laboratory – LaSiD/UFBa
{marcela,macedo}@ufba.br
Abstract
Distributed Systems are composed by processes spread over a computer network. Process or communication channel failures, if not properly treated, may result in the complete interruption of the applications and, therefore, the related services. In general, the failure treatment, by masking faults or failure recovery, requires in the first place the diagnosis of the faulty components, by identifying and informing them to the operational processes, in a consistent manner. This paper presents the development of a Fault Tolerant Diagnosis Service over CORBA intended to asynchronous distributed systems where timeouts can not be used for a precise indication of components failure or diagnosis. In order to establish a diagnosis, besides the use of adaptative timeouts and query to the operating system, we made use of a two-phase commit protocol. The Diagnose Service, which also includes a visualisation tool, was implemented and tested over a JAVA/CORBA environment on the LaSiD/UFBA computer network. Data collected from performance tests are also reported in this paper.
Keywords : Fault-Tolerance; CORBA; Distributed Systems; System Management; System Diagnosis
Resumo Estendido
Sistemas Distribuídos são compostos por processos espalhados numa rede de computadores, onde a comunicação entre processos se dá por troca de mensagens. Falhas de processos ou de canais de comunicação, se não forem devidamente tratadas, podem resultar na interrupção total das aplicações e, portanto, dos serviços relacionados. Em algumas aplicações (ex.: comercio eletrônico), tais interrupções podem implicar em grandes prejuízos ou perdas. Portanto, aplicações distribuídas precisam dispor de técnicas de Tolerância a Falhas que permitam o serviço continuado na presença de falhas. Em geral, o tratamento de falhas, seja pelo mascaramento destas ou pela recuperação do estado do sistema, requer em primeiro lugar o diagnostico dos componentes falhos, identificando-os e informando aos processes operacionais, de uma forma consistente, o diagnóstico estabelecido. Portanto, o diagnóstico compreende, não somente a detecção de falhas, mas também o estabelecimento e difusão de uma visão coerente sobre o estado de todos os processos monitorados. Essa visão sobre o estado do sistema é conhecida como síndrome na literatura relacionada à diagnóstico ao nível do sistema [BB92], [RD95], [DN98] onde em geral se adota o modelo dos sistemas distribuídos síncronos (com tempos conhecidos para propagação de mensagens). A visão coerente do estado dos processos é um requisito fundamental para o funcionamento de técnicas de tolerância a falhas como Replicação Ativa de Componentes [JAL94].
Neste trabalho apresentamos a concepção e desenvolvimento de um Serviço Tolerante a Falhas sobre CORBA para o Diagnóstico de Sistemas Distribuídos (SDF) para ambientes Assíncronos. Diferentemente dos sistemas síncronos, nos ambientes assíncronos (Internet, por exemplo), limites de tempo (timeouts) não podem ser usados como indicação precisa de falhas e/ou estabelecimento do Diagnósticos [FLP85], MAC00]. Para gerar Diagnósticos, nosso serviço, doravante denominado SDF, se utiliza de timeouts adaptáveis, consultas a tabelas do sistema operacional. Além disso, usamos um protocolo de decisão em duas fases (two-phase commit) para o estabelecimento de uma visão consistente do diagnóstico entre os processos em funcionamento.
O objetivo do SDF é monitorar continuamente os processos das aplicações permitindo que os usuários ou programas clientes tenham acesso às informações sobre o estado destes processos, bem como o estado das máquinas onde estes processos residem. O serviço proposto aqui permite o acompanhamento de diferentes níveis de tempo de comunicação entre as máquinas e os processos monitorados afim de determinar quando estes níveis não estão atendendo aos limites definidos como aceitáveis pela aplicação. Para que um processo seja monitorado é necessário que ele implemente a interface de gerenciamento do serviço ou então que tenha um processo intermediário entre ele e a aplicação de monitoria. Este processo intermediário permite que serviços já existentes como serviço WEB e Correio possam ser também monitorados. O Serviço de diagnóstico de falhas foi concebido sobre os conceitos de gerenciamento em sistemas distribuídos e de diagnóstico de falhas de componentes.
O SDF é distribuído e tolerante a falhas. Ele foi implementado através de N módulos espalhados numa rede sobre uma plataforma de comunicação CORBA/Java e continuará funcionando mesmo que N-1 de seus módulos falhem. Ou seja, ele permite a continuidade dos serviços prestados mesmo se uma única instancia estiver ativa. Estes módulos comunicam-se trocando informações de diagnóstico. O SDF também inclui uma ferramenta visualizadora que pode ser inicializada em diferentes máquinas e apresentam as mesmas informações de diagnóstico. Os visualizadores apresentam os eventos de falhas, bem como o estado de todos os processos monitorados. O Serviço permite também monitorar processos, que foram tidos como falhos por causa de um particionamento na rede, como por exemplo um problema em um swicth ou em um hub, mas que depois de resolvido o problema devem voltar a ser monitorados. O SDF foi totalmente implementado e testado num ambiente JAVA/CORBA na rede de computadores do LaSiD/UFBA.
Apesar de nosso trabalho se concentrar mais no diagnóstico do que no suporte a replicação de componentes, relacionamos o SDF à especificação Tolerância a Falhas CORBA [OMG00] – FT-CORBA. Esta especificação concentra-se no suporte a aplicações que necessitam de alta confiabilidade através de replicação de objetos. Como será visto neste artigo, o SDF pode ser usado para implementar os mecanismos especificados no FT-CORBA.
Bibliografia:
[BB92] Jr Bianchini, Ronald. , Buskens, Richard. "Implementation of On-Line Distributed System-Level Diagnosis Theory". IEEE Trans. on Computer, Special Issue on Fault Tolerant Computing, May, 1992.
[DN98] Duarte, E. , Nanya, T. "A Hierarchical Adaptative Distributed System-Level Diagnosis Algorithm". IEEE Transactions on Computeres, Jan, 1998.
[FLP85] Fischer, M.J. , Lynch, N. , Paterson, M.S. "Impossibility of Distributed Consensus with One Faulty Process", Journal of the ACM, 43(4):685—722, July 1996.
[JAL94] Jalote, Pankaj. "Fault Tolerance in Distributed Systems". Englewood Cliffs, NJ:Prentice, 1994.
[MAC00] Macedo, Raimundo. "Failure Detection in Asynchronous Distributed Systems". Proc. Of II Workshop on Tests and Fault-Tolerance (II WTF 2000), pp. 76-81, July 2000.
[OMG00] Object Management Group. "Fault Tolerant CORBA Specification, V1.0". OMG Doc. 2000-04-04.
[RD95] Rangarajan, Sampath & Dahbura, Anton T."A Distributed System-Level Diagnosis Algorithm for Arbitrary Network Topologies", IEEE Transactions on Computers, Vol 44, no 2, February, 1995.