Serviço de Diagnóstico de Falhas SDF Diagnóstico
3.8. O SDF Estendido por Questões de Escalabilidade
Na versão apresentada e implementada do SDF, cada módulo monitora, de forma independente, cada processo que estiver na sua lista de processos corretos. Esta monitoria contínua de todos os processos do grupo tem com objetivo saber o valor atual do tempo de comunicação do módulo para cada processo, ao mesmo tempo que detecta as falhas de processos e máquinas do grupo.
Na figura 3.26 vemos este tipo de monitoria com seis processos distribuídos em três máquinas com módulos SDF. Neste caso, são necessárias dezoito mensagens de testes por rodada de monitoria (cada máquina monitora cada processo) para que todos os módulos tenham à disposição o tempo de comunicação com os processos e a detecção dos eventos de falhas.
Figura 3.26 - Monitoria dos processos que estão na lista de processos corretos
Com este tipo de monitoria é possível ter um nível razoável de precisão quanto ao valor atual de tempo de comunicação com cada um dos processos monitorados, já que os testes
de conectividade são constantes. Esta é uma informação importante para um conjunto de aplicações7 que precisem rapidamente saber como está a comunicação com cada processo. Ao mesmo tempo, para ter valores precisos de tempo de comunicação, que representem mais fielmente a situação da rede, é necessário um alto número de mensagens de testes. No caso ilustrado na figura 3.26, cada módulo SDF, periodicamente, executa seis investigações para saber o estado dos processos de sua lista de processos corretos e seus tempos de comunicação. Com o acréscimo de mais processos, a quantidade de mensagens de testes na rede aumenta na proporção do número de módulos. Este tipo de solução, apesar de possibilitar a informação precisa do tempo de comunicação com o processo e a detecção mais rápida de falhas, pode apresentar problemas de escalabilidade quando existe um alto número de processos e um número expressivo de módulos SDF.
Para aplicações complexas, a alternativa proposta na arquitetura, mas não implementada na versão atual do SDF, é a adoção de uma monitoria representativa de processos e rotativa sobre as máquinas. Neste tipo de monitoria, periodicamente, cada módulo monitora os processos de uma outra máquina, afim de obter os valores de tempo de comunicação, ao passo que monitora um processo representativo por máquina para perceber quando acontece uma falha de máquina. Na próxima rodada o módulo monitora os processos representativos e os processos de uma máquina diferente da anterior, e assim sucessivamente.
A figura 3.27 mostra como seria este tipo de monitoria considerando o mesmo exemplo da figura 3.26. Nesta figura, é representada a rodada de testes onde, a máquina 1 monitora os processos da máquina 3, a máquina 2 monitora os processos da máquina 1, e a máquina 3 monitora os processos da máquina 2. Na próxima rodada teremos a máquina 1 monitorando os processos da máquina 2, a máquina 2 monitorando os processos da máquina 3 e a máquina 3 monitorando os processos da máquina 1. Além desta monitoria rotativa, tem-se, simultaneamente, uma monitoria representativa onde um processo é monitorado para indicar o estado da máquina. No exemplo da figura 3.27, o processo representativo da máquina 1 é o P1, da máquina 2 é o P3, e da máquina 3 é o P4.
7 Um exemplo deste tipo de aplicação é um balanceador de carga para servidores WEB. O balanceador precisa saber em quanto tempo os servidores estam respondendo as solicitações com a finalidade de deteminar que servidor, no momento, tem melhores condições para atender requisições de clientes.
Se um processo representativo falha, um outro é utilizado para os testes. Com esta monitoria representativa de processos e rotativa sobre as máquinas teremos em cada rodada de monitoria, considerando o mesmo exemplo da figura 3.26, nove mensagens de testes (números de módulos * quantidade representativa de processos – um por módulo) ao invés das dezoito mensagens da monitoria completa (números de módulos x quantidade total de
processos).
Figura 3.27 – Monitoria representativa de processos e rotativa sobre as máquina do grupo
Com este tipo de monitoria perde-se em precisão quanto aos níveis de tempo de comunicação (já que os intervalos para investigações são maiores), mas diminui-se a quantidade de mensagens de testes na rede. Em situações de um alto número de máquinas no grupo e muitos processos monitorados, esta é uma alternativa da arquitetura que visa a escalabilidade do sistema.
Uma outra alternativa é utilizar o conceito de domínios de tolerância a falhas introduzido pelo padrão FT CORBA [OMG00], que será apresentado no capítulo 6 desta dissertação. Domínios de tolerância a falhas são definidos e a monitoria dos processos acontece dentro do domínio. Domínios diferentes trocam informação de detecção e diagnóstico através de
seus coordenadores, ficando o acompanhamento de tempo de comunicação restritos aos módulos SDF do domínio, como pode ser visto na figura 3.28. Nesta figura é possível identificar o domínio 1, com as máquinas 1, 2 e 3 e o domínio 2, com as máquinas 4, 5 e 6. Dentro destes domínios há monitoria dos processos para acompanhar os tempos de comunicação e identificar falhas. A troca de informação de detecção e diagnóstico entre domínios acontece através de seus coordenadores. Eles ficam responsáveis por repassar esta informação aos módulos do seu domínio de tolerância a falhas. O grupo de coordenadores também tem um coordenador dos domínios. Os protocolos para manter este grupo funcionam de forma similar aos apresentados anteriormente.
SDF SDF SDF SDF SDF SDF Domínio 1 Domínio 2 Maq 2 Maq 3 Maq 1- Coordenador Maq 5 Maq 6 P1 P4 P3 P2 P1 P4 P3 P2 P5 Maq 4- Coordenador Troca de informações de detecção e diagnóstico
Figura 3.28 – O SDF em domínios de tolerância a falhas