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:
Download

Estudo e implementação de uma ferramenta para promoção de Alta