Estudo e implementação de uma ferramenta para promoção de Alta-Disponibilidade em um Provedor de Serviços Interativos (PSI) de Televisão Digital Renato César Silva Bueno, João Carlos de Moraes Morselli Júnior, João Benedito dos Santos Júnior Departamento de Ciência da Computação - Pontifícia Universidade Católica de Minas Gerais (PUC-MG) - Campus Poços de Caldas Av. Padre Francis Cletus Cox, 1661 - CEP 37701-355 - Jd. Country Club - Poços de Caldas - MG [email protected], [email protected], [email protected] Abstract. This article presents the main concepts related to High-Availability systems, beyond the Interactive Service Providers (ISP), placed in the context of Digital Television and its channel return. Both subjects are the objects of study of this work, whose main objective is to develop a tool which ensures, in as long as possible, the availability of servers for a ISP, responsible for receiving, storing and working with data generated through the interaction of viewers with the content available from broadcast on a digital TV. Resumo. Este artigo apresenta os principais conceitos relacionados aos sistemas com Alta Disponibilidade, além dos Provedores de Serviços Interativos (PSI), inseridos no contexto de Televisão Digital e seu canal de retorno. Ambos os temas são os objetos de estudo deste trabalho, cujo objetivo principal é o desenvolvimento de uma ferramenta que garanta, no maior tempo possível, a disponibilidade dos servidores de um PSI, responsáveis por receber, armazenar e trabalhar com informações geradas através da interação dos telespectadores com o conteúdo disponibilizado pela emissora em um sistema de Televisão Digital. 1. Introdução A tecnologia e a informática estão, cada dia mais, tornando-se essenciais e indispensáveis às atividades cotidianas das pessoas e, principalmente, das empresas. Aplicações e serviços para comunicação instantânea, compras e vendas eletrônicas, transações bancárias, sistemas de produção de fábricas e outros tipos de operações automatizadas são utilizadas a todo o tempo. A ocorrência de falhas nesses serviços acarreta problemas sérios e conseqüências caóticas, tanto para quem depende deles - os usuários que são impedidos de continuar suas atividades normalmente - como para quem provê esses serviços - as empresas que têm sua imagem denegrida devido a essa falha. A solução ou minimização dessa problemática é o objetivo principal dos estudos relacionados à Alta Disponibilidade, que visa permitir a disponibilidade de um serviço computacional durante o maior tempo possível, através da utilização de técnicas para tratar e contornar eventuais falhas que venham a ocorrer. O objetivo deste projeto de pesquisa, financiado pelo Conselho Nacional de Pesquisa Científica (CNPq) e realizado no DeepLab (Distributed Environments and Parallel Systems Lab) da Pontíficia Universidade Católica de Minas Gerais - Campus de Poços de Caldas - é o estudo das principais características e ferramentas para promoção de alta disponibilidade e a implementação de uma solução em software, para convergência com a plataforma de Televisão Digital - JiTV (Java Interactive Television), desenvolvida no Laboratório de Televisão Digital Interativa, deste mesmo campus da PUC-Minas - e integração com o seu módulo Provedor de Serviços Interativos para Televisão Digital (PSI). 2. Alta Disponibilidade Disponibilidade é a probabilidade de um sistema estar funcional e pronto para uso em um determinado instante. Assim, o principal objetivo dos estudos relacionados à alta disponibilidade é buscar uma forma de manter os serviços prestados por um sistema a outros elementos, mesmo que o sistema em si venha a se modificar internamente por causa de uma falha [Weber 2000]. A alta disponibilidade é requerida em sistemas de missão crítica, como servidores de páginas Web, por exemplo, onde se deseja um nível de disponibilidade tão grande quanto for possível. Dessa forma, através da redundância de hardware e reconfiguração de software, os serviços prestados pelo sistema devem se manter em caso de uma falha. Na ocorrência de uma falha, chama-se failover a ação de uma máquina assumir o serviço de outra e fornecer os serviços disponibilizados por ela. O procedimento inverso ao failover é o failback. O failback ocorre após a correção dos problemas apresentados pela máquina principal, que se torna novamente disponível e assume os serviços que disponibilizava até a ocorrência do failover. 2.1. Taxonomia de Alta Disponibilidade A taxonomia de um sistema, de acordo com o grau de disponibilidade por ele oferecida, pode ser dividida em três grupos [Filho 2002]. São elas: - Disponibilidade básica: Encontrada em máquinas comuns, que não apresentam nenhum recurso especial para tratamento de falhas. - Alta disponibilidade: Através da adição de técnicas para detecção e tratamento de falhas, um sistema pode ser sua disponibilidade aumentada, atingindo a faixa de 99,99% a 99,999%. Os cálculos para medida de disponibilidade de um sistema serão detalhados na seção a seguir. - Disponibilidade contínua: Um sistema que se enquadre nessa classificação ficaria disponível 100% do tempo. Porém, a disponibilidade contínua somente é possível na teoria, pois sendo um sistema computacional ele falhará [Weber 2000]. Mas, pode-se chegar perto deste nível de disponibilidade, através de mecanismos para tratamento de falhas e planejamento de paradas. 2.2. Cálculo da disponibilidade O ciclo de vida de um sistema é constituído por um tempo médio até a ocorrência de uma falha (MTTF - Mean Time to Failure) e um tempo médio para reparo dessa falha (MTTR - Mean Time to Repair). Logo, a disponibilidade de um sistema é a relação entre o seu tempo de vida útil (MTTF) e o tempo do seu ciclo total de vida (MTTF+MTTR), e pode ser representada pela seguinte fórmula [Weber 2000]: Disponibilidade = (MTTF / MTTF + MTTR) * 100 3. Ferramentas para promoção de Alta Disponibilidade Existem várias ferramentas utilizadas para a construção de sistemas de alta disponibilidade. O objetivo desta seção é apresentar as ferramentas open source mais conhecidas e que possuem um grau de aceitação elevado por seus usuários. 3.1. DRBD O DRBD, Distributed Replicated Block Device, desenvolvido por Philipp Reisner e Lars Ellenberg [DRBD 2009], é um dispositivo de bloco para sistemas Linux, implementado através de um módulo do kernel, que permite o espelhamento em tempo real de um dispositivo de bloco local para uma máquina remota. O DRBD permite que os dados sejam replicados entre os nós do cluster em tempo real, de modo que toda operação local de escrita em disco seja espelhada em um dispositivo de bloco remoto através da rede. Isso é possível devido ao fato de o DRBD ser adicionado no processo de I/O antes do driver de disco efetivar o acesso, permitindo dessa forma que os dados sejam espelhados para o outro nó do cluster através da rede. Os dispositivos disponibilizados pelo DRBD possuem um estado, primário ou secundário. A aplicação principal e todas as operações de leitura são executadas, obrigatoriamente, no nó primário, sendo que, somente este, terá permissão para acessar o dispositivo de bloco. As operações de escrita realizadas são enviadas para o nó secundário, que armazena os dados no seu dispositivo de bloco local. Em caso de falha do nó primário, dá-se início ao processo de failover, através do heartbeat - ferramenta para reconfiguração automática do sistema - que altera o estado do nó secundário para primário, montando o dispositivo de bloco espelhado e iniciando a aplicação. Após a reativação do nó que apresentou falha - processo de failback - este receberá o estado secundário e deverá sincronizar o seu conteúdo com o nó promovido para primário. 3.2. Heartbeat O heartbeat constitui a parte principal do projeto Linux-HA [Linux-HA 2009] e sua função é gerenciar clusters de alta disponibilidade, desde o monitoramento dos nós até as ações que devem ser executadas para que o nó secundário assuma a aplicação do cluster quando houver indisponibilidade do nó primário. Seu funcionamento se baseia no envio de sinais por parte dos membros do cluster. Com base nas respostas obtidas, os membros conseguem determinar se os outros integrantes estão ou não funcionando [Simões e Torres 2003]. Se o heartbeat do nó secundário deixa de receber os sinais enviados pelo heartbeat do nó primário, é detectada uma falha. Assim, dá-se início ao processo de failover, em que o nó secundário passa a responder como primário e a montagem no modo leitura e escrita da partição que contém os dados replicados pelo DRBD, que é utilizado durante todo o processo para o espelhamento de dados entre os nós do cluster. Figura 1: Funcionamento do Heartbeat 4. Provedores de Serviços Interativos (PSI) em Televisão Digital Conforme citado anteriormente, o objetivo deste estudo de técnicas e ferramentas para promoção de alta disponibilidade é a convergência com o projeto de pesquisa em Televisão Digital [Santos Júnior 2007], desenvolvido também na universidade. Logo, esta seção aborda os conceitos principais relacionados aos provedores de serviços interativos em Televisão Digital. Um sistema de Televisão Digital consiste na produção de informação digital, transmissão dos dados por rádio-difusão e na recepção, possibilitando com que o telespectador possa assistir aos programas com sinal digital [Massote 2008]. Uma das grandes motivações para pesquisa na área de TV Digital é a possibilidade da interação com o usuário, que pode se realizar na forma de uma enquete ou uma votação, por exemplo. Para tal, torna-se necessária a existência de um módulo intermediário entre o usuário e a emissora, que receba e armazene as informações geradas a partir das interações. Esse módulo intermediário é representado pelo Provedor de Serviços Interativos (PSI) e é parte integrante da estrutura denominada Canal de Retorno em um sistema de Televisão Digital. Conforme mostrado na figura 2, a emissora envia o conteúdo interativo, via rádio-difusão, ao telespectador. A partir da interação do telespectador com o conteúdo interativo, as informações geradas são enviadas através do canal de retorno, sendo armazenadas e processadas no PSI. Posteriormente, a emissora pode solicitar ao PSI as informações referentes a essas interações feitas pelos telespectadores. Levando-se em consideração o número de telespectadores que podem interagir simultaneamente com um Provedor de Serviços Interativos, não é difícil perceber que o gerenciamento de todas as conexões de telespectadores, o tratamento e o armazenamento de todas as informações geradas com a interatividade caracterizam uma missão crítica para os servidores do PSI. Dessa forma, torna-se necessária a utilização de um mecanismo que garanta a disponibilidade, durante o maior tempo possível, dos serviços oferecidos pelo provedor. Figura 2: Sistema de Televisão Digital e PSI 5. Arquitetura e protótipos iniciais da ferramenta para promoção de Alta Disponibilidade ao Provedor de Serviços Interativos em Televisão Digital A necessidade de mecanismos para garantir a disponibilidade dos serviços oferecidos pelo PSI é o foco da pesquisa e do desenvolvimento deste trabalho, que visa gerenciar as requisições dos telespectadores e minimizar a incidência de falhas no sistema, utilizando-se de técnicas para promoção de alta disponibilidade. O protótipo inicial da solução projetada baseia-se no princípio da redundância de dados, através da utilização de um servidor secundário, juntamente ao servidor principal (ou primário) do PSI. A figura 3 ilustra o esquema projetado para o desenvolvimento da aplicação para promoção de alta disponibilidade no Provedor de Serviços Interativos. Conforme ilustra a figura 3, é estabelecido um endereço virtual, o qual será acessado a cada conexão requerida, sendo que o servidor primário atenderá às requisições feitas a este endereço. O servidor secundário é ligado ao primário e irá receber, com certa frequência, as informações de controle relacionadas às aplicações dos telespectadores atualmente conectadas ao PSI, como também às informações já recebidas. É realizado um monitoramento entre os servidores primário e secundário, também com certa frequência, para verificar se estes se encontram operantes. Caso esse monitoramento, o heartbeat, detecta uma falha no servidor primário, o servidor secundário assume, imediatamente, o endereço virtual e, em consequência, todas as conexões que se realizavam anteriormente no servidor primário, através dos dados de controle recebidos enquanto este se encontrava ativo (processo de failover). Posteriormente, quando o servidor primário volta ao seu estado ativo, ele assume novamente o endereço virtual e passa, novamente, a atender às requisições das aplicações dos telespectadores (processo de failback). Figura 3: Arquitetura do Projeto de Alta Disponibilidade para um PSI 5.1. Implementação O projeto está sendo desenvolvido em linguagem Java, seguindo o padrão adotado pelo JiTV (Java Interactive Television), permitindo a portabilidade das aplicações em qualquer sistema operacional que possua instalada a máquina virtual Java (JVM). A estrutura está dividida em três módulos principais: o servidor primário, o servidor secundário e o cliente e todo o processo de comunicação entre estes é feita utilizando a API java.net.* da plataforma Java 2 Standard Edition (J2SE). No servidor primário são criados dois canais de comunicação. O primeiro canal é utilizado para que o monitoramento do servidor pelo heartbeat, enquanto o segundo canal permite a conexão de clientes e o atendimento das requisições. Para cada cliente conectado ao servidor é gerada uma thread, onde todos os métodos responsáveis pela comunicação são implementados. O processo de monitoramento do nó primário é feito através dos métodos enviaMensagem() e recebeMensagem(), responsáveis pela troca de mensagens entre este e o nó secundário. Os fluxos de mensagens são implementados através de instâncias das classes ObjectInputStream e ObjectOutputStream do pacote java.io. Figura 4: Canais de comunicação entre servidores e clientes É definido um limite de tempo (timeout) para que o nó primário responda ao monitoramento e, na ocorrência de alguma falha, são disparadas exceções para que o nó secundário dê início ao processo de failover. No processo de failover, são invocadas rotinas do sistema operacional para a reconfiguração do endereço virtual, que passa a ser assumido pelo servidor secundário até que a falha no servidor primário seja reparada e este possa reassumir o atendimento das requisições dos clientes. Figura 5: Funcionamento do processo de Failover 6. Considerações Finais Atualmente, o projeto encontra-se em fase de desenvolvimento das rotinas para o failback, em que o servidor primário assume novamente o endereço virtual após a falha anteriormente apresentada ser reparada. Devem ser definidas estratégias para o gerenciamento e sincronização dos dados recebidos pelo servidor secundário enquanto este assumia o papel ativo na aplicação, a fim de evitar perda, como também, redundância de informações. Além disso, serão efetuados testes para simulação de conexões de grandes números de telespectadores com o PSI, visando a garantia de confiabilidade do sistema desenvolvido. A conclusão do projeto está prevista para o mês de Julho de 2009, quando este deverá estar totalmente integrado com Provedor de Serviços Interativos (PSI) da plataforma JiTV (Java Interactive Television) do Laboratório de Televisão Digital de PUC-Minas - campus Poços de Caldas. 7. Referências Bibliográficas Weber, T. S. (2000) “Um roteiro para exploração dos conceitos básicos de tolerância a falhas”, Instituto de Informática - Universidade Federal do Rio Grande do Sul, Porto Alegre. Filho, N. A. P. (2002) “Linux, Clusters e Alta Disponibilidade”, Dissertação de Mestrado. Universidade de São Paulo, São Paulo. Simões, E. I., Torres, G. M. (2003) “Alta Disponibilidade em Servidores”, Dissertação de Graduação em Engenharia da Computação, Escola de Engenharia Elétrica e Computação, Universidade Federal de Goiás, Goiânia - GO. Santos Júnior, J. B.; Abrão, I. C.; Lima, A, N. B.; Loiola, M. A.; Ávila, P. M.; Marques, H. N.; Kuehne, B. T. (2007) “A Platform Based on Java and XML for Prototyping Interactive Digital Television Programs”. In: 9th International Conference on Enterprise Information Systems, Funchal, Ilha da Madeira. Portugal. Proceedings of ICEIS 2007. Massote, G. (2008) “Estratégias para Desenvolvimento de uma Aplicação no Contexto de Uso de um Provedor de Serviços Interativos em Televisão Digital”, Departamento de Ciência da Computação, Pontifícia Universidade Católica de Minas Gerais, Poços de Caldas – MG. DRBD (2009) “What is DRBD”. Disponível em: http://www.drbd.org/. Acesso em: Março, 2009. Reisner, P. (2001) “DRBD”. Disponível em: http://www.drbd.org/fileadmin/drbd/ publications/drbd_paper_for_NLUUG_2001.pdf. Acesso em: Março, 2009. Linux-HA (1999) “The High Availability Linux Project”. http://www.linux-ha.org/Heartbeat. Acesso em: Março, 2009. Disponível em: