• No results found

Organizações de vários fins dependem exclusivamente de recursos e sistemas de computação. A consequência deste fato é o aumento da demanda de aplicações que viabilizem alta disponibilidade. Esta classe de programas incluem: processamento de transações on-line, comércio eletrônico, mineração de dados, sistemas de suporte a decisão, switches de telecomunicações, sistemas de controle e servidores de aplicações que precisam funcionar 24 horas por dia. Nesses ambientes, o custo de qualquer interrupção pode ser substancial, quer em termos de perdas de oportunidades, como um bom momento de mercado, ou até mesmo a perda de clientes para concorrentes. Com a dependência das empresas e organizações por aplicações críticas ocorre um aumento considerável em termos de investimento.

Nas últimas décadas, os clusters estão sendo construídos para suportar sistemas de computação com altos níveis de dependabilidade. Historicamente, segundo Buyya [BUYYA 1999], o primeiro mecanismo de proteção para aplicações críticas foi a cópia de segurança dos dados da aplicação em questão, esquema conhecido como data onnline backup ou cold-backup. Geralmente é construído como um utilitário de sistema operacional, cujo único objetivo é realizar cópias de segurança da base de dados da aplicação crítica de forma desligada, ou seja, a aplicação deve estar completamente parada.

Uma evolução do conceito de cópia de dados é o hot-backup. Neste sistema, as cópias de segurança podem ser feitas continuamente durante a execução da aplicação, não sendo necessário que a aplicação crítica esteja desligada. O modelo em questão utiliza um esquema de armazenamento espelhado entre dois discos (primário e secundário), onde todos os dados do disco primário são espelhados no disco secundário. Este sistema também é chamado de RAID (Redundant Array on Independent Drives – Conjunto Redundante de Discos Independentes), cujo único objetivo é garantir a integridade dos dados da aplicação crítica de forma contínua e automática. As principais vantagens no uso de RAID são: ganho de desempenho no acesso; redundância em caso

de falha em um dos discos; uso de várias unidades de discos e facilidade em recuperação de conteúdo perdido. Apesar destas vantagens, este modelo também não garante a disponibilidade da aplicação crítica, caso um servidor venha a falhar devido a interrupção de energia, por exemplo. Mesmo com o RAID, haverá necessidade de re-estabelecimento de forma manual. Uma outra desvantagem é o aumento do custo devido ao(s) disco(s) extra(s).

O fornecimento de energia elétrica é outro fator preocupante para a computação de missão crítica. Existe uma dependência enorme das empresas responsáveis por tais serviços. Não é conveninente apostar na qualidade de serviço oferecido por essas empresas, por isso estão sendo construídos há várias décadas sistemas no-breaks que impedem a parada de fornecimento de energia para o sistema de computação, utilizando- se de baterias ou de geradores de energia privativo. Claro que este tipo de sistema serve apenas para falhas transitórias, caso contrário, o sistema deverá conter redundância também na geração de energia, o que pode elevar de forma considerável os custos do projeto.

Até há alguns anos atrás, as empresas montavam seus sistemas com os melhores componentes de hardwares disponíveis, incluindo algumas das estratégias mencionadas anteriormente, e monitoravam seus sistemas na esperança de que tudo funcionaria da maneira certa e que não teriam problemas. A alternativa é exatamente a construção de sistemas avançados de hardware redundante, como foi o caso das aplicações altamente disponíveis nos setores das telecomunicações e das redes bancárias. A redundância nestes sistemas é explorada em todos os níveis, incluindo as fontes de alimentação, portas de entrada e saída (I/O ports), processadores, discos, adaptadores de rede, e redes físicas, a fim de elminar qualquer ponto único de falha no interior da plataforma suportada pela aplicação crítica. Na eventualidade de uma falha no hardware executando uma aplicação crítica, um segundo componente de hardware estará sempre disponível para assegurar que o pedido tem recursos para manter a execução da aplicação. O objetivo é sempre resultados próximos a 100% da disponibilidade do sistema.

Os níveis de disponibilidade nestes sistemas, geralmente requerem o uso de hardware e software proprietários, personalizados para as aplicações forçando os usuários a manter o padrão do proprietário para qualquer atualização que venha a acontecer durante a evolução do sistema. Entretanto, o ideal é combinar sistemas de computação altamente confiáveis e altamente escaláveis com soluções abertas e componentes de hardware acessíveis. Isto pode ser feito com clusters. O primeiro passo neste sentido é

empregar dois sistemas de computação similares conectados por uma infra-estrutura de rede tipo LAN ou MAN (nodos primário e secundário). O nodo secundário seria responsável então não só pelos dados (através de espelhamento), mas também por todos os processos da aplicação crítica do servidor primário, de modo a entrar em ação no caso de uma falha. Esta estrutura marca exatamente o surgimento de clusters de missão crítica, pois começa a explorar as possibilidades de utilização de redundância em vários níveis.

Em paralelo a busca e evolução de alta disponibilidade para as aplicações críticas, uma outra tendência ganhou forma na área de sistemas distribuídos e paralelos. Devido à crescente difusão de sistemas de informação e automação de tarefas via sistemas de computação, tornou-se vital para os negócios críticos, tais como: comércio eletrônico, WEB sites(portais em geral), bases de dados corporativas, mecanismos eficientes para tratar a alta demanda de carga de trabalho gerado por estas aplicações. Ou seja, em adição às vantagens da alta disponibilidade, que concentram-se principalmente em garantir o fornecimento/disponibilidade dos recursos, dados e serviços da aplicação, seria necessário também uma forma de satisfazer às exigências de crescimento da aplicação. O alto desempenho junta-se à alta disponibilidade como um requisito adicional para aplicações de missão critica.

Um cluster intrinsecamente tem a capacidade de fornecer alto desempenho e escalabilidade. Ao contrário do esquema de nailover de alta disponibilidade, um nodo do cluster não precisa necessariamente ficar ocioso à espera de um falha. Pode-se utilizar o processamento desse nodo e seus demais recursos, a fim de que com o software adequado, a carga de trabalho possa ser compartilhada com outros membros do cluster, conseguindo assim obter um melhor desempenho. Esta evolução marcou o surgimento dos clusters de alta disponibilidade escaláveis.